Мониторинг сервера в реальном времени с Netdata
Запустить на сервере одной командой (сначала проверьте содержимое скрипта ниже):
curl -sSL https://cp.lv/scripts/monitoring-servera-netdata.sh | sudo bash…или через wget:
wget -qO- https://cp.lv/scripts/monitoring-servera-netdata.sh | sudo bashСодержимое скрипта monitoring-servera-netdata.sh:
#!/usr/bin/env bash
# Установка Netdata + доступ через nginx с логином и паролем
set -euo pipefail
export DEBIAN_FRONTEND=noninteractive
# 1. Установка Netdata (официальный kickstart, стабильный канал)
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sudo sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry --non-interactive
# 2. Привязать агент только к localhost
sudo tee /etc/netdata/netdata.conf > /dev/null << 'EOF'
[web]
bind to = 127.0.0.1
EOF
sudo systemctl restart netdata
# 3. Reverse proxy nginx с basic-авторизацией
sudo apt-get update -y
sudo apt-get install -y nginx apache2-utils openssl
PASS="$(openssl rand -base64 12)"
sudo htpasswd -bc /etc/nginx/.netdata-htpasswd admin "$PASS"
# кавычки 'EOF' — переменные nginx ($host) не раскрываются
sudo tee /etc/nginx/sites-available/netdata > /dev/null << 'EOF'
server {
listen 80;
server_name monitor.example.com;
auth_basic "Netdata";
auth_basic_user_file /etc/nginx/.netdata-htpasswd;
location / {
proxy_pass http://127.0.0.1:19999;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
}
}
EOF
sudo ln -sf /etc/nginx/sites-available/netdata /etc/nginx/sites-enabled/netdata
sudo nginx -t && sudo systemctl reload nginx
echo "Готово. Дашборд открыт по домену. Логин: admin, пароль: $PASS"
Netdata разворачивается одной командой и сразу даёт веб-дашборд с метриками сервера в реальном времени: загрузка CPU, память, диск, сеть, процессы — с секундным разрешением. Ниже — установка, защита доступа и настройка оповещений.
Почему Netdata
В отличие от тяжёлых связок вроде Prometheus+Grafana, Netdata ставится за минуту, не требует настройки и показывает сотни метрик из коробки. Идеален, когда нужно быстро увидеть, что происходит с сервером прямо сейчас.
Требования: любой VPS с 512 МБ RAM и выше. Агент потребляет мало ресурсов.
Шаг 1. Установка
Официальный установочный скрипт (kickstart) сам определит дистрибутив:
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
Флаг --disable-telemetry отключает отправку анонимной статистики.
После установки сервис запустится автоматически:
systemctl status netdata
Шаг 2. Доступ к дашборду
Netdata слушает порт 19999. Откройте в браузере:
http://<IP_вашего_VPS>:19999
Вы увидите живой дашборд. По умолчанию порт доступен всем — это небезопасно, ограничим доступ.
Шаг 3. Закрыть прямой доступ
Привяжите Netdata только к localhost. В /etc/netdata/netdata.conf:
[web]
bind to = 127.0.0.1
Перезапустите:
systemctl restart netdata
Теперь дашборд доступен только с самого сервера — снаружи закроем через reverse proxy с паролем.
Шаг 4. Reverse proxy с авторизацией (nginx)
Установите утилиты и создайте пароль:
apt install -y nginx apache2-utils
htpasswd -c /etc/nginx/.netdata-htpasswd admin
Откройте конфиг в редакторе (sudo nano /etc/nginx/sites-available/netdata) и вставьте содержимое:
server {
listen 80;
server_name monitor.example.com;
auth_basic "Netdata";
auth_basic_user_file /etc/nginx/.netdata-htpasswd;
location / {
proxy_pass http://127.0.0.1:19999;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
}
}
Или создайте конфиг целиком одной командой (кавычки 'EOF' важны — переменная nginx $host останется как есть):
sudo tee /etc/nginx/sites-available/netdata > /dev/null << 'EOF'
server {
listen 80;
server_name monitor.example.com;
auth_basic "Netdata";
auth_basic_user_file /etc/nginx/.netdata-htpasswd;
location / {
proxy_pass http://127.0.0.1:19999;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
}
}
EOF
Активируйте:
ln -s /etc/nginx/sites-available/netdata /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Теперь дашборд открывается по домену с логином и паролем. Добавьте HTTPS через certbot для шифрования.
Шаг 5. Настройка оповещений
Netdata умеет слать алерты в Telegram, на почту, в Slack. Пример для Telegram — отредактируйте /etc/netdata/health_alarm_notify.conf:
SEND_TELEGRAM="YES"
TELEGRAM_BOT_TOKEN="<токен_бота>"
DEFAULT_RECIPIENT_TELEGRAM="<chat_id>"
Проверьте отправку:
/usr/libexec/netdata/plugins.d/alarm-notify.sh test
Полезные метрики для контроля
| Метрика | На что смотреть |
|---|---|
| CPU iowait | Высокий — узкое место диска |
| RAM available | Мало — риск OOM |
| Disk space | Заполнение раздела |
| Network errors | Проблемы с сетью/NIC |
| Load average | Перегрузка процессора |
Настройка порогов
Правила алертов лежат в /etc/netdata/health.d/. Например, порог заполнения диска:
nano /etc/netdata/health.d/disk_space.conf
После изменений перечитайте конфигурацию:
netdatacli reload-health
Шифрование доступа (HTTPS)
Basic-авторизация без HTTPS передаёт пароль в открытом виде. Добавьте бесплатный сертификат Let’s Encrypt через certbot:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d monitor.example.com
certbot сам пропишет редирект на HTTPS и настроит автопродление сертификата. Проверьте таймер обновления:
systemctl status certbot.timer
Ограничение ресурсов агента
На слабом VPS уменьшите частоту сбора, чтобы снизить нагрузку. В /etc/netdata/netdata.conf:
[db]
update every = 2
Значение 2 собирает метрики раз в две секунды вместо одной — точность чуть ниже, нагрузка заметно меньше. Отключить ненужные плагины (например, сбор с несуществующих сервисов) можно в разделе [plugins].
Полезные разделы дашборда
- System Overview — сводка по CPU, RAM, диску, сети.
- Applications — потребление ресурсов по группам процессов.
- Disks — задержки и загрузка каждого блочного устройства.
- Networking Stack — соединения, retransmits, ошибки TCP.
Дашборд полностью интерактивен: наведите на график, чтобы увидеть точные значения в конкретный момент, и выделите диапазон мышью для зума.
Обновление и удаление
Обновить Netdata до свежей стабильной версии:
netdata-updater.sh
Полностью удалить агент, если он больше не нужен:
/usr/libexec/netdata/netdata-uninstaller.sh --yes --force
Частые вопросы
Сколько ресурсов ест Netdata?
Агент лёгкий, но при секундном разрешении на слабом VPS заметна нагрузка. Можно увеличить интервал сбора в netdata.conf.
Хранятся ли исторические данные?
Да, локально в базе (dbengine). Глубину хранения задают в разделе [db] конфига.
Можно ли мониторить несколько серверов? Да, через Netdata Cloud или родительский узел (streaming), собирающий метрики с дочерних.
Безопасно ли держать порт 19999 открытым? Нет. Привяжите к localhost и проксируйте через nginx с паролем и HTTPS.
Заменяет ли Netdata Prometheus? Для быстрого real-time мониторинга — да. Для долгого хранения и сложных запросов связка Prometheus+Grafana гибче.
Мониторинг — обязательная часть эксплуатации. Разместите проект на аренде VPS или VPS для VPN и безопасности. Настройку мониторинга и алертов возьмёт на себя Администрирование серверов.
