Рубрики
Uncategorized

Мониторинг любой системы с Statsd и Автономный агент AppSignal

Один только мониторинг приложений не всегда достаточно, чтобы получить полную картину ваших систем …. Теги от мониторинга, дежопах, операциях, производительности.

Один только мониторинг приложений не всегда достаточно, чтобы получить полную картину ваших систем. Часто услуги, работающие в спутниковых приложениях (или поддерживающих приложениях), могут оказывать острое влияние на ваши повседневные операции. Серверы баз данных являются известными примерами этого. Сценарии резервных копий и другие фоновые задания могут также замедлить системы и часто упускаются из виду.

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 вы можете записывать произвольные данные производительности и инструмент любой процесс.

Проверьте следующие ссылки, чтобы узнать больше об использовании автономного агента:

Наш гостевой автор Tomas провел 10 лет, работая в IBM, где он сделал немного всего: разработка, доставку услуг, администрирование базы данных и облачный инжиниринг. Сейчас он независимый консультант и технический писатель.

Оригинал: «https://dev.to/appsignal/monitoring-any-system-with-statsd-and-appsignal-s-standalone-agent-3c7l»