Обзор плагинов

StatusRadar Agent поддерживает 16 плагинов мониторинга для отслеживания баз данных, веб-серверов, кэшей, очередей сообщений, балансировщиков нагрузки, RAID-массивов и других инфраструктурных сервисов.

Что такое плагины?

Плагины расширяют базовую функциональность агента для мониторинга конкретных сервисов, работающих на вашем сервере. Каждый плагин:

  • Собирает специфичные для сервиса метрики (соединения, запросы, попадания в кэш и т. д.)
  • Работает независимо — сбой одного плагина не затрагивает остальные
  • Опционален — включайте только то, что вам нужно
  • Автоматически обнаруживает сервисы — определяет, доступен ли сервис
  • Передаёт данные в дашборд — метрики появляются в интерфейсе автоматически

Доступные плагины

Базы данных и поиск

Плагин Сервис Метрики Сценарий использования
Redis Redis 4.0+ Память, команды, соединения, keyspace, репликация Мониторинг кэша и хранилища сессий
MySQL MySQL 5.7+, MariaDB 10.3+ Запросы, соединения, блокировки, InnoDB, репликация Мониторинг производительности БД
PostgreSQL PostgreSQL 10+ Транзакции, блокировки, попадания в кэш, лаг репликации Мониторинг производительности БД
MongoDB MongoDB 4.0+ Операции, соединения, кэш WiredTiger, блокировки Мониторинг NoSQL-базы данных
Elasticsearch Elasticsearch 7.0+ Здоровье кластера, узлы, индексы, JVM, запросы Мониторинг поисковой системы
Meilisearch Meilisearch 1.0+ HTTP-запросы, размер БД, индексы, поиски Мониторинг поисковой системы
VictoriaMetrics VictoriaMetrics 1.80+ Активные серии, скорость приёма, хранилище, запросы Мониторинг базы данных временных рядов

Веб-серверы и прокси

Плагин Сервис Метрики Сценарий использования
Nginx Nginx (любая версия) Активные соединения, запросы/сек, состояния воркеров Мониторинг веб-сервера
Apache Apache 2.4+ Воркеры, запросы, переданные байты, загрузка CPU Мониторинг веб-сервера
PHP-FPM PHP-FPM 7.4+ Активные/простаивающие процессы, медленные запросы, очередь Мониторинг PHP-приложений
Varnish Varnish 6.0+ Попадания/промахи кэша, соединения с бэкендом, объекты Мониторинг HTTP-кэша
HAProxy HAProxy 2.0+ Статистика frontend/backend, сессии, очередь, здоровье Мониторинг балансировщика нагрузки

Кэширование и обмен сообщениями

Плагин Сервис Метрики Сценарий использования
Memcached Memcached 1.4+ Попадания/промахи, память, соединения, вытеснения Мониторинг кэша
RabbitMQ RabbitMQ 3.8+ Очереди, сообщения, потребители, память, диск Мониторинг брокера сообщений

Контейнеры и хранилище

Плагин Сервис Метрики Сценарий использования
Docker Docker 20.10+ Количество контейнеров, CPU/память на контейнер, I/O Мониторинг контейнеров
mdadm Linux Software RAID Количество массивов, деградировавшие/отказавшие массивы, количество устройств, прогресс синхронизации/перестроения Мониторинг здоровья RAID

Как работают плагины

Архитектура

┌─────────────────────────────────────────┐
│  StatusRadar Agent                      │
│                                         │
│  ┌─────────────────────────────────┐   │
│  │  Base Agent (System Metrics)    │   │
│  │  - CPU, Memory, Disk, Network   │   │
│  └─────────────────────────────────┘   │
│                                         │
│  ┌─────────────────────────────────┐   │
│  │  Plugin Manager                 │   │
│  │  - Loads enabled plugins        │   │
│  │  - Runs collection cycle        │   │
│  │  - Handles errors gracefully    │   │
│  └─────────────────────────────────┘   │
│                                         │
│  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐  │
│  │Redis │ │MySQL │ │Nginx │ │Docker│  │
│  │Plugin│ │Plugin│ │Plugin│ │Plugin│  │
│  └──────┘ └──────┘ └──────┘ └──────┘  │
│      │        │        │        │      │
└──────┼────────┼────────┼────────┼──────┘
       │        │        │        │
       ▼        ▼        ▼        ▼
   ┌──────┐┌──────┐┌──────┐┌──────────┐
   │Redis ││MySQL ││Nginx ││Docker    │
   │6379  ││3306  ││80    ││/var/run/ │
   └──────┘└──────┘└──────┘└──────────┘

Цикл сбора

  1. Агент запускается → Загружает конфигурацию из /opt/statusradar/config.env
  2. Обнаружение плагинов → Читает список PLUGINS, чтобы узнать, какие плагины включены
  3. Обнаружение сервисов → Проверяет доступность каждого сервиса
  4. Сбор метрик → Каждый плагин собирает свои метрики
  5. Агрегация → Объединяет все метрики в единую полезную нагрузку
  6. Отправка в API → Передаёт данные в API StatusRadar
  7. Ожидание → Засыпает до следующего интервала сбора (по умолчанию: 300 секунд, минимум 60)
  8. Повтор → Возвращается к шагу 3

Обработка ошибок

Плагины изолированы друг от друга:

  • Один плагин даёт сбой → Остальные продолжают работать
  • Сервис недоступен → Плагин сообщает о статусе, но не приводит к падению агента
  • Сетевая ошибка → Агент повторяет отправку в API
  • Ошибка конфигурации → Плагин отключается, остальные продолжают работать

Конфигурация

Агент настраивается через единый файл переменных окружения shell по пути /opt/statusradar/config.env. YAML-файла конфигурации нет. systemd загружает его через EnvironmentFile=, поэтому каждый ключ — это обычная строка вида KEY=value.

Установщик записывает базовый набор ключей. Плагины включаются перечислением в переменной PLUGINS через запятую, и каждый плагин читает собственные переменные окружения из того же файла.

# /opt/statusradar/config.env
API_TOKEN=your-token-here
API_URL=https://statusradar.dev
INTERVAL=300

# Enabled plugins (comma-separated)
PLUGINS=redis,mysql,nginx,docker,mdadm

# Per-plugin settings
REDIS_HOST=localhost
REDIS_PORT=6379

MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=monitor
MYSQL_PASSWORD=secret

NGINX_STATUS_URL=http://127.0.0.1/nginx_status

После редактирования файла перезапустите агент:

sudo systemctl restart statusradar-agent

Включение плагинов

Способ 1: во время установки (рекомендуется)

Задайте PLUGINS и любые переменные плагинов как префикс к однострочной команде установки. Токен передаётся через переменную окружения TOKEN:

PLUGINS='redis,mysql,nginx,docker' \
REDIS_HOST='localhost' REDIS_PORT='6379' \
TOKEN='your-token-here' \
bash -c "$(curl -sL https://statusradar.dev/install-agent.sh)"

Установщик записывает эти значения в /opt/statusradar/config.env.

Способ 2: ручная настройка

Отредактируйте /opt/statusradar/config.env, добавьте имя плагина в PLUGINS, добавьте его переменные окружения и перезапустите:

# /opt/statusradar/config.env
PLUGINS=redis,mysql,nginx
REDIS_HOST=localhost
REDIS_PORT=6379
sudo systemctl restart statusradar-agent

Установщик автоматически заполняет несколько секций плагинов (REDIS_*, DOCKER_SOCKET, VM_*, RABBITMQ_*). Все остальные переменные плагинов нужно добавить в config.env вручную, после чего перезапустить агент.

Переменные окружения плагинов

Каждый плагин читает свои настройки из config.env. Полный набор распознаваемых переменных:

Плагин Переменные окружения
Redis REDIS_HOST, REDIS_PORT, REDIS_PASSWORD, REDIS_DB
MySQL MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE
PostgreSQL POSTGRESQL_HOST, POSTGRESQL_PORT, POSTGRESQL_USER, POSTGRESQL_PASSWORD, POSTGRESQL_DATABASE
MongoDB MONGODB_HOST, MONGODB_PORT, MONGODB_USER, MONGODB_PASSWORD, MONGODB_DATABASE
Elasticsearch ELASTICSEARCH_HOST, ELASTICSEARCH_PORT, ELASTICSEARCH_PROTOCOL, ELASTICSEARCH_USER, ELASTICSEARCH_PASSWORD
Meilisearch MEILISEARCH_HOST, MEILISEARCH_PORT, MEILISEARCH_PROTOCOL, MEILISEARCH_API_KEY
VictoriaMetrics VM_URL, VM_AUTH_TOKEN
Nginx NGINX_STATUS_URL
Apache APACHE_STATUS_URL
PHP-FPM PHP_FPM_STATUS_URL
Varnish VARNISH_NAME, VARNISH_INSTANCE
HAProxy HAPROXY_STATS_URL, HAPROXY_USERNAME, HAPROXY_PASSWORD, HAPROXY_TIMEOUT
Memcached MEMCACHED_HOST, MEMCACHED_PORT
RabbitMQ RABBITMQ_HOST, RABBITMQ_PORT, RABBITMQ_USERNAME, RABBITMQ_PASSWORD, RABBITMQ_VHOST, RABBITMQ_USE_SSL
Docker DOCKER_SOCKET
mdadm Нет — читает /proc/mdstat напрямую (просто добавьте mdadm в PLUGINS)

Шаблоны конфигурации

Мониторинг локального сервиса

Самая распространённая конфигурация — мониторинг сервисов на localhost:

PLUGINS=redis,mysql
REDIS_HOST=localhost
REDIS_PORT=6379
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=monitor
MYSQL_PASSWORD=secret

Мониторинг удалённого сервиса

Мониторинг сервисов на других серверах:

PLUGINS=redis,postgresql
REDIS_HOST=cache-server.example.com
REDIS_PORT=6379
REDIS_PASSWORD=secret
POSTGRESQL_HOST=db-server.example.com
POSTGRESQL_PORT=5432
POSTGRESQL_USER=monitor
POSTGRESQL_PASSWORD=secret
POSTGRESQL_DATABASE=postgres

Несколько экземпляров

Примечание: Агент мониторит по одному экземпляру на каждый тип плагина. Чтобы мониторить несколько экземпляров Redis, разверните отдельные агенты.

Обходной путь для нескольких баз данных:

  • Плагин MySQL сообщает общесерверную статистику через SHOW GLOBAL STATUS.
  • Плагин PostgreSQL агрегирует все базы данных через pg_stat_database.
  • Плагин MongoDB сообщает общесерверную статистику через db.serverStatus().

Категории плагинов

Плагины на основе соединения

Требуют сетевого соединения с сервисом:

  • Redis (TCP 6379)
  • MySQL (TCP 3306)
  • PostgreSQL (TCP 5432)
  • MongoDB (TCP 27017)
  • Memcached (TCP 11211)
  • Elasticsearch (HTTP 9200)
  • Meilisearch (HTTP 7700)
  • RabbitMQ (HTTP 15672 — management API)
  • VictoriaMetrics (HTTP 8428)

Плагины на основе HTTP-эндпоинтов

Требуют HTTP-эндпоинт статуса:

  • Nginx (/nginx_status)
  • Apache (/server-status?auto)
  • PHP-FPM (/status)
  • HAProxy (/stats;csv)

Плагины на основе команд

Выполняют системные команды:

  • Varnish (varnishstat)

Плагины на основе сокетов

Обращаются к Unix-сокетам или API:

  • Docker (/var/run/docker.sock)

Плагины на основе файлов

Читают состояние ядра/proc напрямую:

  • mdadm (/proc/mdstat)

Зависимости плагинов

Python-пакеты

Некоторым плагинам нужен дополнительный Python-пакет:

# Redis plugin
pip install redis

# MySQL plugin
pip install pymysql

# PostgreSQL plugin
pip install psycopg2-binary

# MongoDB plugin
pip install pymongo

# Docker plugin
pip install docker

# Elasticsearch plugin
pip install elasticsearch

Плагины Nginx, Apache, PHP-FPM, HAProxy, Memcached, Meilisearch, VictoriaMetrics, Varnish и mdadm используют только стандартную библиотеку Python (или локальные системные инструменты), поэтому дополнительные пакеты им не нужны.

Автоматическая установка: Установщик автоматически устанавливает необходимые пакеты для включённых плагинов.

Требования к сервисам

Каждый плагин требует, чтобы целевой сервис был:

  1. Установлен и запущен

    sudo systemctl status redis
    sudo systemctl status mysql
  2. Доступен для агента (сеть, файрвол)

    telnet localhost 6379  # Redis
    telnet localhost 3306  # MySQL
  3. Настроен для мониторинга (см. документацию по конкретному плагину)

Лучшие практики

1. Включайте только нужные плагины

Каждый плагин добавляет примерно 10-20 МБ ОЗУ и ~2% CPU во время сбора. Перечисляйте только те плагины, сервисы которых действительно работают.

2. Используйте пользователей только для чтения

Пример для MySQL:

CREATE USER 'monitor'@'localhost' IDENTIFIED BY 'secret';
GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'monitor'@'localhost';
FLUSH PRIVILEGES;

Пример для PostgreSQL:

CREATE USER monitor WITH PASSWORD 'secret';
GRANT pg_monitor TO monitor;

Преимущества:

  • Безопасность — пользователь мониторинга не может изменять данные
  • Надёжность — предотвращает случайную запись
  • Соответствие требованиям — удобно для аудита

3. Защитите файл конфигурации

config.env содержит учётные данные, поэтому ограничьте к нему доступ:

sudo chmod 600 /opt/statusradar/config.env
sudo chown root:root /opt/statusradar/config.env

4. Следите за здоровьем плагинов

Активность плагинов записывается в лог агента:

sudo tail -f /var/log/statusradar/agent.log

На systemd 240+ тот же вывод также доступен через journald:

sudo journalctl -u statusradar-agent -f

5. Протестируйте плагин перед развёртыванием

Каждый плагин можно запустить напрямую для быстрой проверки:

cd /opt/statusradar
PLUGINS=redis python3 plugins/redis_plugin.py
PLUGINS=mdadm python3 plugins/mdadm_plugin.py

Ожидаемый вывод:

Plugin name: redis
Enabled: True
Available: True

Metrics collected:
  ...

6. Настройте интервал сбора

Для высоконагруженных сервисов рассмотрите более длинный интервал. Задайте INTERVAL (в секундах, минимум 60) в config.env:

INTERVAL=600

Преимущества:

  • Снижение нагрузки на отслеживаемые сервисы
  • Меньшее потребление ресурсов агентом
  • Достаточно для большинства задач мониторинга

Влияние на производительность

Использование ресурсов в зависимости от числа плагинов

Включено плагинов Использование памяти CPU (сред.) CPU (пик)
0 (только база) 50 MB 0.5% 5%
1-3 плагина 80 MB 1% 10%
4-7 плагинов 120 MB 2% 15%
8-12 плагинов 180 MB 3% 20%
13-16 плагинов (все) 250 MB 5% 30%

Длительность сбора

Время на сбор метрик (типичное):

Плагин Время сбора
Redis 0.1-0.3 секунды
MySQL 0.2-0.5 секунды
PostgreSQL 0.2-0.5 секунды
MongoDB 0.3-0.6 секунды
Nginx 0.1-0.2 секунды
Apache 0.1-0.2 секунды
mdadm 0.1 секунды
Docker 0.5-2.0 секунды (зависит от числа контейнеров)
Elasticsearch 0.3-0.8 секунды

Общее время сбора: 2-10 секунд (в зависимости от включённых плагинов)

Устранение неполадок плагинов

Плагин не собирает метрики

Проверка 1: Указан ли плагин в PLUGINS?

grep '^PLUGINS=' /opt/statusradar/config.env

Проверка 2: Запущен ли сервис?

sudo systemctl status redis
sudo systemctl status mysql

Проверка 3: Может ли агент подключиться?

telnet localhost 6379               # Redis
curl http://localhost/nginx_status  # Nginx

Проверка 4: Верны ли учётные данные?

mysql -u monitor -p -h localhost -e "SHOW STATUS"
psql -U monitor -h localhost -d postgres -c "SELECT version()"

Проверка 5: Просмотрите лог агента

sudo tail -n 100 /var/log/statusradar/agent.log

Распространённые ошибки

"Connection refused"

  • Сервис не запущен: sudo systemctl start redis
  • Неверный host/port в config.env
  • Файрвол блокирует соединение

"Authentication failed"

  • Неверные имя пользователя/пароль в config.env
  • Пользователь не существует: создайте пользователя мониторинга
  • У пользователя нет прав: выдайте необходимые привилегии

"Permission denied"

  • Агент не может получить доступ к сокету: проверьте права доступа к файлу
  • SELinux блокирует доступ: проверьте логи аудита

"Module not found"

  • Python-пакет не установлен: pip install <package-name>

"Plugin not found"

  • Плагин не указан в PLUGINS или опечатка в имени
  • Файл плагина отсутствует: переустановите агент

Обновления плагинов

Плагины обновляются автоматически при обновлении агента:

curl -s https://statusradar.dev/install-agent.sh | sudo bash -s update

Процесс обновления:

  1. Загружает последний код агента
  2. Обновляет все файлы плагинов
  3. Перезапускает сервис агента
  4. Сохраняет существующий config.env

Дальнейшие шаги

Документация по плагинам

Подробные руководства по каждому плагину:

Базы данных и поиск:

Веб-серверы и прокси:

Кэширование и обмен сообщениями:

Контейнеры и хранилище:

Общая документация

On this page