Обзор плагинов
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/ │
└──────┘└──────┘└──────┘└──────────┘
Цикл сбора
- Агент запускается → Загружает конфигурацию из
/opt/statusradar/config.env - Обнаружение плагинов → Читает список
PLUGINS, чтобы узнать, какие плагины включены - Обнаружение сервисов → Проверяет доступность каждого сервиса
- Сбор метрик → Каждый плагин собирает свои метрики
- Агрегация → Объединяет все метрики в единую полезную нагрузку
- Отправка в API → Передаёт данные в API StatusRadar
- Ожидание → Засыпает до следующего интервала сбора (по умолчанию: 300 секунд, минимум 60)
- Повтор → Возвращается к шагу 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 (или локальные системные инструменты), поэтому дополнительные пакеты им не нужны.
Автоматическая установка: Установщик автоматически устанавливает необходимые пакеты для включённых плагинов.
Требования к сервисам
Каждый плагин требует, чтобы целевой сервис был:
-
Установлен и запущен
sudo systemctl status redis sudo systemctl status mysql -
Доступен для агента (сеть, файрвол)
telnet localhost 6379 # Redis telnet localhost 3306 # MySQL -
Настроен для мониторинга (см. документацию по конкретному плагину)
Лучшие практики
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
Процесс обновления:
- Загружает последний код агента
- Обновляет все файлы плагинов
- Перезапускает сервис агента
- Сохраняет существующий
config.env
Дальнейшие шаги
Документация по плагинам
Подробные руководства по каждому плагину:
Базы данных и поиск:
- Плагин Redis
- Плагин MySQL
- Плагин PostgreSQL
- Плагин MongoDB
- Плагин Elasticsearch
- Плагин Meilisearch
- Плагин VictoriaMetrics
Веб-серверы и прокси:
Кэширование и обмен сообщениями:
Контейнеры и хранилище:
Общая документация
- Что такое плагины?
- Доступные плагины
- Базы данных и поиск
- Веб-серверы и прокси
- Кэширование и обмен сообщениями
- Контейнеры и хранилище
- Как работают плагины
- Архитектура
- Цикл сбора
- Обработка ошибок
- Конфигурация
- Включение плагинов
- Способ 1: во время установки (рекомендуется)
- Способ 2: ручная настройка
- Переменные окружения плагинов
- Шаблоны конфигурации
- Мониторинг локального сервиса
- Мониторинг удалённого сервиса
- Несколько экземпляров
- Категории плагинов
- Плагины на основе соединения
- Плагины на основе HTTP-эндпоинтов
- Плагины на основе команд
- Плагины на основе сокетов
- Плагины на основе файлов
- Зависимости плагинов
- Python-пакеты
- Требования к сервисам
- Лучшие практики
- 1. Включайте только нужные плагины
- 2. Используйте пользователей только для чтения
- 3. Защитите файл конфигурации
- 4. Следите за здоровьем плагинов
- 5. Протестируйте плагин перед развёртыванием
- 6. Настройте интервал сбора
- Влияние на производительность
- Использование ресурсов в зависимости от числа плагинов
- Длительность сбора
- Устранение неполадок плагинов
- Плагин не собирает метрики
- Распространённые ошибки
- Обновления плагинов
- Дальнейшие шаги
- Документация по плагинам
- Общая документация