Один только мониторинг приложений не всегда достаточно, чтобы получить полную картину ваших систем. Часто услуги, работающие в спутниковых приложениях (или поддерживающих приложениях), могут оказывать острое влияние на ваши повседневные операции. Серверы баз данных являются известными примерами этого. Сценарии резервных копий и другие фоновые задания могут также замедлить системы и часто упускаются из виду.
AppSignal не смотрит эти спутниковые процессы по умолчанию. Чтобы расширить мониторинг везде и иметь все ваши данные в одном приложении, вы можете установить Appsignal’s Автономный агент Отказ
Автономный агент AppSignal
Автономный агент основан на то же программное обеспечение С помощью которого мы обычно придумываем приложения Ruby, Elixir или JavaScript. Это программное обеспечение также может работать в автономном режиме.
Автономный агент может быть использован для мониторинга:
- Инфраструктура : Машины, которые являются частью нашей системы, но не запускают код приложения.
- Фоновые работы : например, интенсивные рабочие места Cron или долговечные сценарии обработки данных. Если эти фоновые задания написаны на поддерживаемом языке (Ruby, Elixir или Node.js), вы можете использовать стандартную интеграцию.
- Больше языков : Программы, написанные на языках, отличных от тех, которые поддерживаются из коробки.
Например, с автономным агентом мы могли бы отследить модель обучения машины, написанную в Python, скрипты резервных копий прибора, Монитор кафка брокеров или собирать Метрики хозяина в наших веб-фермах. Вы можете просмотреть всю эту информацию о Appsignal, чтобы дополнить метрики, которые у вас уже есть для основных приложений.
Как это работает
Агент поставляется в виде пакета DEB или RPM и не имеет языковых зависимостей. Он работает в любых системах на основе Debian/Ubuntu или Red Hat. Для получения подробных инструкций по установке проверьте Агентская документация Отказ
После установки агент сконфигурирован через несколько минут и продолжает работать навсегда как демон, молча мониторинг вашей инфраструктуры. Что еще, агент включает в себя Statsd Сервер, который решает любые пользовательские данные, которые вы входите в свою приборную панель Appsignal.
Что такое Statsd?
Statsd является стандартом для сбора и агрегирования произвольных данных. Он фокусируется на регистрации метрики и информации о производительности. Он использует легкий текстовый протокол по поводу подключений UDP, которые имеют небольшой след в вашей машине.
Сообщение STATSD выглядит так:
KEY:VALUE|TYPE
Где Ключ это любая произвольная строка, а Ценность это число. Значение типа определяет, как число обрабатывается.
Мы поддерживаем три типа метрик:
- C : Это счетчик Это приращение каждый раз, когда он называется. Например,
Active_Users: 1 | CДобавляет 1 кActive_Usersприлавок. - g : а Датчик принимает числовое значение и поддерживает его до обновления. Это полезно для записи значений, которые изменяются вверх и вниз со временем, такими как пропускная способность, количество активных пользователей или количество ожидающих задач в очереди.
- T : магазины Сроки ценности. Этот тип идеально подходит для прочности отслеживания. AppSignal рассчитывает означает, количество и процентилей для всех зарегистрированных часов.
Другие неподдерживаемые типы метрики будут молча игнорироваться.
Отправка данных в statsd
Автономный агент слушает пакеты UDP на порту 8125. Мы можем отправлять Statsd-отформатированные строки из командной строки, используя NetCat :
echo -n "myscript.myevent.counter:1|c" | nc -4u -w0 localhost 8125
Поскольку мы используем UDP, нам не нужно ждать ответа.
Собат Также работает:
echo -n "myscript.myevent.counter:1|c" | socat - udp:localhost:8125
Это позволяет легко инструментировать любые пакетные или крон. Например, следующие строки используют датчик для регистрации того, сколько данных создается задание резервного копирования:
backup_size=$(du -m /backups | cut -f1) echo -n "backup.data:$backup_size|g" | nc -4u -w0 localhost 8125
Мы не ограничиваются целыми числами. Statsd также работает с номерами с плавающей точкой:
echo -n "network.latency:0.2|g" | nc -4u -w0 localhost 8125
Использование тегов
Вы можете добавить теги в свои метрики. Сервер STATSD поддерживает необязательные теги в конце сообщения:
KEY:VALUE|TYPE|#TAGS
Мы можем применить несколько тегов в том же сообщении и назначить значения для фильтрации позже:
echo -n "backup.data:$backup_size|g|#backups,env:production" | nc -4u -w0 localhost 8125
Мы узнаем, как увидеть данные в AppSignal в немного.
Инструменты языки
Сервер STATSD совместим с любым языком, который может отправлять пакеты UDP. Давайте посмотрим несколько примеров.
Python — популярный язык для добычи данных и машинного обучения. Мы можем добавить приборы в приложения Python, используя сборку розетка библиотека:
import time # measure time taken for function start = time.process_time() train_my_model() training_time = time.process_time() - start # send value to statsd import socket UDP_IP = "127.0.0.1" UDP_PORT = 8125 MESSAGE = b"model.training.time:" + bytes(str(training_time), 'utf-8') + b"|t" sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
Мы могли бы достичь подобных результатов в Java с java.net библиотека:
byte[] buffer = "mybatch.exception.counter:1|c".getBytes();
InetAddress address = InetAddress.getByName("127.0.0.1");
DatagramPacket packet = new DatagramPacket(
buffer, buffer.length, address, 8125
);
DatagramSocket datagramSocket = new DatagramSocket();
datagramSocket.send(packet);
PHP — еще один невероятно популярный язык. Мы можем отправить пакеты UDP с Socket_sendto. :
$msg = "mywebsite.active_users:$ACTIVE_USERS|g"; $len = strlen($msg); $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_sendto($sock, $msg, $len, 0, '127.0.0.1', 8125); socket_close($sock);
Statsd Клиенты
До сих пор мы использовали встроенные сетевые возможности на каждом языке. Но есть больше. Многие языки и продукты включают в себя сторонние стандартные клиенты или дополнения. Любой стандартный клиент, совместимый, по крайней мере, для поддерживаемых типов данных. Вы можете найти список клиентов в STATSD Project Wiki Отказ
Просмотр данных хоста в Appsignal
Метрики хозяина Приборная панель показывает использование ресурсов вашей машины:
AppSignal добавляет запись для каждой машины, запущенной автономным агентом.
Приборная панель показывает нагрузку и процессор в среднем в среднем диска, сеть, память и использование свопа:
Создание приборных панелей
Appsignal не автоматически генерирует панели Dashboards для отправленного вами значения STATSD-вы, вам нужно для этого создать пользовательские панели для этого.
Сначала нажмите на Добавить панель инструментов Под меню приборной панели:
Дайте имя на приборной панели:
Нажав на Добавить график Кнопка показывает график построителя:
Дайте имя на график и нажмите Добавить метрику :
Выберите метрику, в которой вы заинтересованы в меню.
При желании используйте теги для фильтрации:
Далее нажмите Вернуться к обзору Отказ Возможно, вы захотите попробовать различные типы графиков и единицы стоимости, чтобы узнать, какой из них лучше всего подходит для данных, которые вы хотите представлять.
Данные синхронизации выглядят лучше с графиками области, потому что среднее и проценты показаны более четко.
Линейные графики отлично работают для счетчиков и датчиков.
Как только вы довольны результатом, нажмите Создать график Отказ
Упаковка
Мы узнали, как использовать автономный сервер Appsignal, чтобы посмотреть ваши машины и спутниковый код. С его встроенным Statsd Server вы можете записывать произвольные данные производительности и инструмент любой процесс.
Проверьте следующие ссылки, чтобы узнать больше об использовании автономного агента:
- Ссылка Statsd .
- Как отправить пользовательские метрики Отказ
- Создание приборных панелей в AppSignal Отказ
- Выявление и разрешение кафка выпустить автономный агент Отказ
Наш гостевой автор Tomas провел 10 лет, работая в IBM, где он сделал немного всего: разработка, доставку услуг, администрирование базы данных и облачный инжиниринг. Сейчас он независимый консультант и технический писатель.
Оригинал: «https://dev.to/appsignal/monitoring-any-system-with-statsd-and-appsignal-s-standalone-agent-3c7l»