Мы развернули тестовый стенд из 10 серверов и протестировали каждую систему в течение недели.
Nagios / Icinga 2
Nagios — ветеран мониторинга (с 1999 года), написан на C. Icinga 2 — его современный форк с улучшенным веб-интерфейсом и поддержкой MySQL/PostgreSQL/Oracle. Оба работают по принципу проверок (checks) и хорошо подходят для мониторинга доступности сервисов, но слабы в сборе и визуализации метрик. Конфигурация через текстовые файлы громоздкая:
# Nagios: определение хоста
define host {
use linux-server
host_name web-node-15
alias Web Node 15
address 10.0.1.15
max_check_attempts 5
check_period 24x7
notification_interval 30
notification_period 24x7
}
define service {
use generic-service
host_name web-node-15
service_description CPU Load
check_command check_nrpe!check_load
}
Вердикт: отлично для алертов на доступность, но не замена Munin для метрик и графиков.
Zabbix
Полноценная платформа мониторинга: сбор метрик, визуализация, алертинг, discovery, карты сети. Ядро на C, веб-интерфейс на PHP, поддерживает MySQL/PostgreSQL. Мощная система шаблонов с автообнаружением сервисов:
# Установка Zabbix Agent 2 (Go)
apt install zabbix-agent2
# /etc/zabbix/zabbix_agent2.conf
Server=10.0.0.5
ServerActive=10.0.0.5
Hostname=web-node-15
# Кастомный UserParameter для мониторинга очереди Postfix
UserParameter=postfix.queue,find /var/spool/postfix/active -type f | wc -l
Минусы: тяжёлый веб-интерфейс (2-4 GB RAM на сервере Zabbix), сложная настройка для новичков, медленные дашборды при большом количестве элементов данных.
Prometheus + Grafana
Prometheus (Go) использует pull-модель — сам ходит к агентам за метриками. Встроенная TSDB, мощный язык запросов PromQL, интеграция с Kubernetes. Grafana — отдельный инструмент визуализации:
# Установка node_exporter на ноду
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
useradd -rs /bin/false node_exporter
# /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
ExecStart=/usr/local/bin/node_exporter \
--collector.systemd \
--collector.processes \
--web.listen-address=:9100
[Install]
WantedBy=multi-user.target
# prometheus.yml — конфигурация сбора
scrape_configs:
- job_name: 'nodes'
file_sd_configs:
- files: ['/etc/prometheus/targets/*.yml']
scrape_interval: 15s
Минусы: два отдельных продукта (Prometheus + Grafana), нет встроенного long-term storage (нужен Thanos или VictoriaMetrics).
Netdata
Написана на C, работает как агент на каждой ноде и предоставляет веб-интерфейс прямо на порту 19999. Собирает 2000+ метрик из коробки с секундным разрешением. Не требует внешней TSDB — хранит данные в RAM и на диске локально:
# Установка одной командой
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
# Потребление: 30-50 MB RAM, < 2% CPU
Минусы: каждая нода — отдельный интерфейс (Netdata Cloud решает, но это SaaS), алертинг базовый.
Telegraf + InfluxDB + Grafana (TIG)
Весь стек на Go. Telegraf — универсальный агент с 300+ input-плагинами, InfluxDB — специализированная TSDB, Grafana — визуализация:
# Установка Telegraf
apt install telegraf
# /etc/telegraf/telegraf.conf (основные секции)
[agent]
interval = "10s"
flush_interval = "10s"
hostname = "web-node-15"
[[outputs.influxdb_v2]]
urls = ["http://10.0.0.5:8086"]
token = "$INFLUX_TOKEN"
organization = "providernet"
bucket = "monitoring"
[[inputs.cpu]]
percpu = true
totalcpu = true
[[inputs.mem]]
[[inputs.disk]]
[[inputs.diskio]]
[[inputs.net]]
[[inputs.processes]]
[[inputs.system]]
# Мониторинг Nginx
[[inputs.nginx]]
urls = ["http://127.0.0.1:8080/nginx_status"]
# Мониторинг MySQL
[[inputs.mysql]]
servers = ["reader:password@tcp(127.0.0.1:3306)/"]
# Кастомная метрика через exec
[[inputs.exec]]
commands = ["/opt/scripts/check_postfix_queue.sh"]
data_format = "influx"
interval = "30s"
Оставить комментарий