Мониторинг. · 26 min read · Nov 22, 2025
Как установить и мониторить сервисы с помощью инструмента мониторинга Netdata на Debian 12

Netdata — это система мониторинга с открытым исходным кодом для операционных систем на базе Linux. Она предоставляет мониторинг и производительность в реальном времени с помощью красивых и детализированных панелей управления. Она предлагает сотни инструментов для мониторинга серверов, использования ЦП, памяти, системных процессов, использования диска, сетей IPv4 и IPv6, системного брандмауэра и приложений, таких как Nginx, MySQL, MongoDB, Redis, ElasticSearch, PostgreSQL, PHP-FPM и др. Она интегрируется с другими инструментами мониторинга, такими как Prometheus, Graphite, Kafka, Grafana и другими.
Этот учебник покажет вам, как установить и мониторить различные сервисы с помощью Netdata на сервере Debian 12. Вы также будете использовать его для отслеживания метрик стека LEMP и движка Docker.
Предварительные требования
- Сервер с установленным Debian 12.
- Пользователь, не являющийся root, с правами sudo.
- Полное доменное имя (FQDN), такое как
netdata.example.com, указывающее на ваш сервер. - Учетная запись SMTP с почтовым сервисом, таким как Amazon SES или Mailgun.
- Убедитесь, что все обновлено.
$ sudo apt update $ sudo apt upgrade - Несколько пакетов, которые нужны вашей системе.
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -yНекоторые из этих пакетов могут уже быть установлены на вашей системе.
Шаг 1 - Настройка брандмауэра
Первый шаг — настроить брандмауэр. Debian по умолчанию поставляется с ufw (Uncomplicated Firewall).
Проверьте, работает ли брандмауэр.
$ sudo ufw status
Вы получите следующий вывод.
Status: inactive
Разрешите порт SSH, чтобы брандмауэр не разорвал текущее соединение при его включении.
$ sudo ufw allow OpenSSH
Также разрешите порты HTTP и HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Включите брандмауэр
$ sudo ufw enable
Команда может нарушить существующие ssh-соединения. Продолжить операцию (y|n)? y
Брандмауэр активен и включен при запуске системы
Проверьте статус брандмауэра снова.
$ sudo ufw status
Вы должны увидеть аналогичный вывод.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Шаг 2 - Установка NetData
Netdata поставляется со скриптом установщика, который может работать на любой дистрибутиве Linux. Выполните следующую команду, чтобы скачать скрипт установщика.
$ wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh
Запустите скрипт установщика, используя следующую команду.
$ sudo sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
Флаг --stable-channel устанавливает стабильную версию Netdata. Флаг --disable-telemetry останавливает Netdata от отправки анонимной статистики на их сервер. Есть и другие флаги, которые вы можете использовать для настройки вашего установщика.
Введите Y, чтобы подтвердить добавление репозитория Netdata и его установку на вашем сервере. Вы должны получить следующий вывод при успешной установке.
Успешно установлен агент Netdata.
Официальную документацию можно найти онлайн по адресу https://learn.netdata.cloud/docs/.
Хотите мониторить всю вашу инфраструктуру с помощью Netdata? Ознакомьтесь с Netdata Cloud по адресу https://app.netdata.cloud.
Присоединяйтесь к нашему сообществу и свяжитесь с нами:
- GitHub: https://github.com/netdata/netdata/discussions
- Discord: https://discord.gg/5ygS846fR6
- Наши форумы сообщества: https://community.netdata.cloud/
[/root]# rm -rf /tmp/netdata-kickstart-wH4pebXveT
OK
Установщик Netdata автоматически включает и запускает сервис. Проверьте статус сервиса.
$ sudo systemctl status netdata
? netdata.service - Мониторинг производительности в реальном времени
Loaded: loaded (/lib/systemd/system/netdata.service; enabled; preset: enabled)
Active: active (running) since Thu 2023-08-24 10:26:56 UTC; 42s ago
Main PID: 2811 (netdata)
Tasks: 82 (limit: 1107)
Memory: 108.2M
CPU: 4.271s
CGroup: /system.slice/netdata.service
??2811 /usr/sbin/netdata -D -P /var/run/netdata/netdata.pid
??2822 /usr/sbin/netdata --special-spawn-server
??3127 bash /usr/libexec/netdata/plugins.d/tc-qos-helper.sh 1
??3137 /usr/libexec/netdata/plugins.d/go.d.plugin 1
??3142 /usr/libexec/netdata/plugins.d/ebpf.plugin 1
??3145 /usr/libexec/netdata/plugins.d/nfacct.plugin 1
??3149 /usr/libexec/netdata/plugins.d/systemd-journal.plugin 1
??3155 /usr/libexec/netdata/plugins.d/debugfs.plugin 1
??3159 /usr/libexec/netdata/plugins.d/apps.plugin 1
Aug 24 10:26:58 netdata ebpf.plugin[3142]: set name of thread 3188 to EBPF SOFTIRQ
.......
Если ваш сервис не запущен или не включен, вы можете сделать это с помощью следующей команды.
$ sudo systemctl enable netdata --now
Выполните следующую команду, чтобы проверить открытые порты и процессы, использующие их.
$ sudo ss -plnt | grep netdata
Вы должны получить аналогичный вывод. Netdata использует порт 19999 для своей панели управления, как видно из вывода ниже. Netdata использует порт 8125 для получения статистики от других приложений.
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 0.0.0.0:19999 0.0.0.0:* users:(("netdata",pid=2811,fd=8))
LISTEN 0 4096 127.0.0.1:8125 0.0.0.0:* users:(("netdata",pid=2811,fd=47))
LISTEN 0 4096 [::1]:8125 [::]:* users:(("netdata",pid=2811,fd=46))
LISTEN 0 4096 [::]:19999 [::]:* users:(("netdata",pid=2811,fd=9))
Шаг 3 - Установка Nginx
Debian 12 поставляется со старой версией Nginx. Чтобы установить последнюю версию, вам нужно скачать официальный репозиторий Nginx.
Импортируйте ключ подписи Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Добавьте репозиторий для стабильной версии Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Обновите системные репозитории.
$ sudo apt update
Установите Nginx и утилиты Apache. Пакет утилит Apache необходим для утилиты htpasswd.
$ sudo apt install nginx apache2-utils
Проверьте установку. На системах Debian следующая команда будет работать только с sudo.
$ sudo nginx -v
nginx version: nginx/1.24.0
Запустите сервер Nginx.
$ sudo systemctl start nginx
Проверьте статус сервиса.
$ sudo systemctl status nginx
? nginx.service - nginx - высокопроизводительный веб-сервер
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Thu 2023-08-24 11:36:34 UTC; 4s ago
Docs: https://nginx.org/en/docs/
Process: 3657 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 3658 (nginx)
Tasks: 2 (limit: 1107)
Memory: 1.8M
CPU: 12ms
CGroup: /system.slice/nginx.service
??3658 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??3659 "nginx: worker process"
Шаг 4 - Установка SSL
Нам нужно установить Certbot для генерации SSL-сертификата. Вы можете установить Certbot, используя репозиторий Debian, или взять последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.
Debian 12 не поставляется с установленным Snapd. Установите пакет Snapd.
$ sudo apt install snapd
Выполните следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.
$ sudo snap install core && sudo snap refresh core
Установите Certbot.
$ sudo snap install --classic certbot
Используйте следующую команду, чтобы убедиться, что команда Certbot может быть выполнена, создав символическую ссылку в директории /usr/bin.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Проверьте, работает ли Certbot правильно.
$ certbot --version
certbot 2.6.0
Сгенерируйте SSL-сертификат.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d netdata.example.com
Вышеуказанная команда загрузит сертификат в директорию /etc/letsencrypt/live/netdata.example.com на вашем сервере.
Сгенерируйте сертификат Diffie-Hellman group.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Проверьте службу планировщика обновления Certbot.
$ sudo systemctl list-timers
Вы найдете snap.certbot.renew.service как одну из запланированных служб.
NEXT LEFT LAST PASSED UNIT ACTIVATES
.....
Thu 2023-08-24 13:40:00 UTC 1h 59min left - - snap.certbot.renew.timer snap.certbot.renew.service
Thu 2023-08-24 18:47:23 UTC 7h left Thu 2023-08-24 09:30:41 UTC 2h 9min ago apt-daily.timer apt-daily.service
Fri 2023-08-25 00:00:00 UTC 12h left - - dpkg-db-backup.timer dpkg-db-backup.service
Сделайте пробный запуск процесса, чтобы проверить, работает ли обновление SSL.
$ sudo certbot renew --dry-run
Если вы не видите ошибок, вы готовы. Ваш сертификат будет автоматически обновляться.
Шаг 5 - Настройка Nginx
Создайте и откройте файл /etc/nginx/conf.d/netdata.conf для редактирования.
$ sudo nano /etc/nginx/conf.d/netdata.conf
Вставьте в него следующий код.
# Определите upstream netdata
upstream netdata {
server 127.0.0.1:19999;
keepalive 64;
}
# Перенаправьте все нешифрованные на зашифрованные
server {
listen 80;
listen [::]:80;
server_name netdata.example.com;
return 301 https://netdata.example.com$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name netdata.example.com;
ssl_certificate /etc/letsencrypt/live/netdata.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/netdata.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/netdata.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_prefer_server_ciphers off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
resolver_timeout 2s;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
access_log /var/log/nginx/netdata.example.com.access.log main;
error_log /var/log/nginx/netdata.example.com.error.log;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_pass http://netdata;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
auth_basic "NetData Private Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
После завершения сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Откройте файл /etc/nginx/nginx.conf для редактирования.
$ sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.
server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Выполните следующую команду, чтобы сгенерировать файл паролей для включения HTTP-аутентификации.
$ sudo htpasswd -c /etc/nginx/.htpasswd netadmin
New password:
Re-type new password:
Adding password for user netadmin
Проверьте синтаксис конфигурационного файла Nginx.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапустите сервис Nginx, чтобы включить новую конфигурацию.
$ sudo systemctl restart nginx
Шаг 6 - Доступ и использование панели управления Netdata
Вы должны иметь возможность получить доступ к Netdata по URL https://netdata.example.com. В первый раз, когда вы получите доступ к нему, вам будет предложено ввести данные для HTTP-аутентификации.

Вы получите следующую панель управления.

Вы можете приостановить, остановить и запустить мониторинг в любое время, используя кнопку Play на панели управления.

Вы можете получить доступ к различным панелям управления, щелкнув по параметрам в правой боковой панели.
Netdata по умолчанию может правильно отслеживать ваш часовой пояс. Если это не так, нажмите на таймер и выберите правильный часовой пояс в всплывающем окне, чтобы изменить его.

Шаг 7 - Настройка NetData
Netdata хранит свою основную конфигурацию в файле /etc/netdata/netdata.conf. Вы можете просмотреть эти настройки, посетив URL https://netdata.example.com/netdata.conf в вашем браузере.

Файл разделен на различные секции, такие как [global], [db], [web], [registry] и другие. Стандартной конфигурации достаточно, чтобы начать. Netdata собирает данные с помощью двух типов плагинов:
- внутренние плагины написаны на языке C и работают как потоки внутри демона
netdata. - внешние плагины написаны на различных языках, включая Python, Go и т. д., и создаются как долгоживущие независимые процессы демоном
netdata. Они общаются с демоном Netdata с помощьюpipes.
Настройка использования памяти NetData
Использование RAM NetData определяется на основе времени, в течение которого вы хотите хранить записанные данные графиков, прежде чем они будут потеряны.
- 3600 секунд или 1 час хранения данных графиков использует 15 МБ RAM.
- 7200 секунд или 2 часа хранения данных графиков использует 30 МБ RAM.
- 14400 секунд или 4 часа хранения данных графиков использует 60 МБ RAM.
Каждый раз, когда вы удваиваете время хранения данных графиков, требования к RAM также удваиваются. Эти требования к RAM основаны на количестве графиков, используемых стандартной панелью управления. Добавление большего количества графиков и приложений изменит эти оценки.
Откройте файл конфигурации Netdata.
$ sudo nano /etc/netdata/netdata.conf
Введите строку history = 14400 в секции [global].
[global]
run as user = netdata
# default storage size - increase for longer data retention
page cache size = 32
dbengine multihost disk space = 256
history = 14400
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Отключение телеметрии
По умолчанию Netdata собирает анонимную информацию о использовании с помощью платформы аналитики продуктов, Posthog. Каждый раз, когда демон Netdata запускается или останавливается, Netdata использует скрипт анонимной статистики для сбора следующей информации о системе и отправки ее себе.
- Версия Netdata
- Название ОС, версия, id, id_like
- Название ядра, версия, архитектура
- Технология виртуализации
- Технология контейнеризации
- Дополнительная информация о сбоях клиента Netdata.
Мы отключили телеметрию во время установки, но если вы этого не сделали, вы можете сделать это сейчас. Создайте пустой файл с именем .opt-out-from-anonymous-statistics в директории Netdata.
$ sudo touch /etc/netdata/.opt-out-from-anonymous-statistics
Перезапустите Netdata, чтобы применить изменения.
$ sudo systemctl restart netdata
Долгосрочное хранение
Netdata использует RAM и диск вашей системы для хранения исторических данных по умолчанию. Процесс Netdata по умолчанию собирает около 2000 метрик в секунду, что означает, что стандартная конфигурация будет хранить около двух дней метрик в RAM и на диске.
Чтобы хранить больше метрик, у вас есть следующие два варианта:
- Настроить Netdata на использование большего объема RAM и дискового пространства
- Архивировать метрики в внешнюю базу данных
Мы обсудим только первый вариант в этом учебнике. Для второго варианта вам следует обратиться к официальной документации Netdata.
Настройка Netdata на использование большего объема RAM и дискового пространства
Откройте файл /etc/netdata/netdata.conf для редактирования.
$ sudo nano /etc/netdata/netdata.conf
Настройте следующие строки в секции [global].
[global]
...
page cache size = 32
dbengine multihost disk space = 256
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Размер кэша страницы определяет объем используемой RAM, а переменная dbengine multihost disk space определяет использование диска. По умолчанию Netdata использует 32 МБ RAM и 256 МБ дискового пространства. Вы можете изменить любое из двух значений по своему усмотрению.
Вы можете использовать калькулятор метрик хранения Netdata, чтобы определить, сколько RAM и дискового пространства вам нужно.
Уменьшение частоты сбора
Вы можете оптимизировать производительность Netdata, увеличив время между сбором метрик. По умолчанию Netdata собирает метрики каждую секунду.
Чтобы изменить это, откройте файл конфигурации Netdata для редактирования.
$ sudo nano /etc/netdata/netdata.conf
Введите следующую строку в секции [global]. Это увеличивает частоту до 5 секунд.
[global]
...
update every = 5
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Шаг 8 - Настройка уведомлений Slack
Первый шаг — создать приложение Slack и подключить его к определенному каналу в вашем рабочем пространстве для настройки уведомлений Slack.
Перейдите на страницу API Slack и нажмите кнопку Создать приложение, чтобы начать создание приложения.

Нажмите на ссылку С нуля, чтобы создать приложение.

Выберите имя для вашего приложения и выберите рабочее пространство, в котором вы хотите, чтобы ваше приложение появилось. Если вы не хотите связывать свое приложение с существующим рабочим пространством, вы можете создать другое и вернуться к этому шагу.

Откройте страницу Входящие вебхуки, выбрав опцию в меню Функции в левой боковой панели, а затем активируйте вебхук.

Нажмите кнопку Добавить новый вебхук в рабочее пространство в нижней части страницы и выберите ваше рабочее пространство и целевой канал для уведомлений.

Нажмите кнопку Разрешить, чтобы продолжить. Вернитесь на страницу Входящие вебхуки и скопируйте URL вебхука.

Вернитесь в терминал и перейдите в директорию /etc/netdata.
$ cd /etc/netdata
Netdata предоставляет скрипт edit-config для редактирования и создания файлов конфигурации Netdata. Выполните следующую команду, чтобы создать и открыть файл health_alarm_notify.conf с помощью вашего редактора по умолчанию.
$ sudo ./edit-config health_alarm_notify.conf
Прокрутите вниз до следующего раздела.
# Включить уведомление slack
SEND_SLACK="YES"
# Выберите вебхук slack
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/xxxxxxx/xxxxxx/xxxxxxxxxxxxx"
# Канал по умолчанию для уведомлений
DEFAULT_RECIPIENT_SLACK="notifications"
Убедитесь, что переменная SEND_SLACK установлена в yes. Вставьте скопированный URL вебхука в переменную SLACK_WEBHOOK_URL. Введите имя вашего канала для переменной DEFAULT_RECIPIENT_SLACK.
Если ваш редактор — Vim, нажмите клавишу Escape, чтобы выйти из режима редактирования, введите :x и нажмите клавишу Enter, чтобы сохранить файл и выйти из редактора.
Если ваш редактор — Nano, сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Перезапустите Netdata, чтобы применить изменения.
$ sudo systemctl restart netdata
Шаг 9 - Настройка уведомлений по электронной почте
Netdata по умолчанию использует sendmail для отправки уведомлений по электронной почте, но управление почтовым сервером — это непростая задача. Netdata не поддерживает SMTP, но вы можете установить пакет под названием msmtp клиент. Он позволяет вам отправлять почту на SMTP-сервер.
Установите msmtp.
$ sudo apt install msmtp
Создайте и откройте файл конфигурации для msmtp.
$ sudo nano /etc/msmtprc
Вставьте в него следующий код.
# Установите значения по умолчанию для всех последующих учетных записей.
defaults
# Используйте порт отправки почты 587 вместо SMTP-порта 25.
port 587
# Всегда используйте TLS.
tls on
# SMTP-сервер вашего провайдера
account ses
host email-smtp..amazonaws.com
from [email protected]
auth on
user
password
# Установите учетную запись по умолчанию на isp
account default: ses
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Netdata предоставляет скрипт edit-config для редактирования и создания файлов конфигурации Netdata. Выполните следующую команду, чтобы создать и открыть файл health_alarm_notify.conf с помощью вашего редактора по умолчанию.
$ sudo /etc/netdata/edit-config health_alarm_notify.conf
Прокрутите вниз до следующего раздела и введите путь к msmtp.
# внешние команды
# Полный путь к команде sendmail.
# Если пусто, будет выполнен поиск по системному $PATH.
# Если не найдено, уведомления по электронной почте будут отключены (тихо).
sendmail="/usr/bin/msmtp"
Найдите следующий раздел и введите данные отправителя и получателя и убедитесь, что отправка электронной почты включена.
# глобальные параметры уведомлений по электронной почте
# несколько получателей можно указать так:
# "[email protected] [email protected] ..."
# адрес электронной почты, отправляющий уведомления по электронной почте
# по умолчанию это системный пользователь, от имени которого работает netdata (обычно: netdata)
# Поддерживаются следующие форматы:
# EMAIL_SENDER="user@domain"
# EMAIL_SENDER="User Name "
# EMAIL_SENDER="'User Name' "
# EMAIL_SENDER="\"User Name\" "
EMAIL_SENDER="Server Admin <[email protected]>"
# включить/отключить отправку электронных писем
SEND_EMAIL="YES"
# если роль получателя не настроена, электронное письмо будет отправлено на:
DEFAULT_RECIPIENT_EMAIL="[email protected]"
# чтобы получать только критические тревоги, установите значение на "root|critical"
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Перезапустите Netdata, чтобы применить изменения.
$ sudo systemctl restart netdata
Шаг 10 - Тестирование каналов уведомлений
Давайте протестируем, работают ли уведомления по электронной почте. Войдите как системный пользователь netdata, созданный во время установки.
$ sudo su -s /bin/bash netdata
Запустите скрипт уведомления об тревоге, чтобы отправить тестовое уведомление.
$ /usr/libexec/netdata/plugins.d/alarm-notify.sh test
Вы получите следующий вывод.
# ОТПРАВКА ТЕСТОВОГО ПРЕДУПРЕЖДЕНИЯ О ТРЕВОГЕ ДЛЯ РОЛИ: sysadmin
2023-08-24 12:56:00: alarm-notify.sh: INFO: отправлено уведомление по электронной почте для: netdata test.chart.test_alarm is WARNING на '[email protected]'
# OK
# ОТПРАВКА ТЕСТОВОГО КРИТИЧЕСКОГО ПРЕДУПРЕЖДЕНИЯ ДЛЯ РОЛИ: sysadmin
2023-08-24 12:56:03: alarm-notify.sh: INFO: отправлено уведомление по электронной почте для: netdata test.chart.test_alarm is CRITICAL на '[email protected]'
# OK
# ОТПРАВКА ТЕСТОВОГО УБРАНИЯ ДЛЯ РОЛИ: sysadmin
2023-08-24 12:56:06: alarm-notify.sh: INFO: отправлено уведомление по электронной почте для: netdata test.chart.test_alarm is CLEAR на '[email protected]'
# OK
Выйдите из пользователя.
$ exit.
Откройте свое приложение Slack, и вы должны получить следующие уведомления.

Вы также получите три электронных письма о тестовых предупреждениях.

Шаг 11 - Настройка мониторинга системы
Теперь, когда мы настроили и протестировали уведомления, давайте настроим и протестируем уведомления для системы, такие как использование ЦП.
Выполните следующие команды, чтобы создать и открыть файл конфигурации ЦП.
$ sudo /etc/netdata/edit-config health.d/cpu.conf
Измените значения параметров warn и crit в разделе 10min_cpu_usage следующим образом.
warn: $this > (($status >= $WARNING) ? (60) : (70))
crit: $this > (($status == $CRITICAL) ? (75) : (85))
Измените строку to:silent на to:sysadmin, как показано ниже.
template: 10min_cpu_usage
on: system.cpu
class: Utilization
type: System
component: CPU
os: linux
hosts: *
lookup: average -10m unaligned of user,system,softirq,irq,guest
units: %
every: 1m
warn: $this > (($status >= $WARNING) ? (60) : (70))
crit: $this > (($status == $CRITICAL) ? (75) : (85))
delay: down 15m multiplier 1.5 max 1h
info: average CPU utilization over the last 10 minutes (excluding iowait, nice and steal)
to: sysadmin
Сохраните файл и выйдите из редактора.
Настройка to:silent отключает уведомления, и поэтому, чтобы получать уведомления, вам нужно изменить значение монитора на to:sysadmin для этих мониторов.
Вышеуказанная настройка отправит предупреждение, если использование ЦП находится в диапазоне от 60 до 70%, и критическое предупреждение, когда использование ЦП находится в диапазоне от 75 до 85%.
Перезапустите службу Netdata.
$ sudo systemctl restart netdata
Давайте протестируем настройку, установив приложение Stress.
$ sudo apt install stress
Выполните следующую команду, чтобы увеличить использование ЦП вашего сервера.
$ stress --cpu 2
Оставьте команду запущенной на 5-10 минут, и вы получите сообщения о высоком использовании ЦП. Как только вы получите эти сообщения, вернитесь в терминал и выйдите из команды, нажав Ctrl + Z.
После остановки службы вы получите уведомление о восстановлении ЦП в Slack.

Вы получите следующие сообщения по электронной почте для того же.

Шаг 12 - Настройка мониторинга Nginx
Одним из наиболее часто мониторируемых приложений с помощью Netdata являются серверы и пакеты SQL. Давайте мониторить сервер Nginx с помощью Netdata.
Чтобы включить мониторинг сервера Nginx, нам нужно использовать ngx_http_stub_status_module. Обычно он поставляется предустановленным с Nginx. Вы можете проверить, присутствует ли модуль. sudo требуется для команды на системе Debian.
$ sudo nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module
Если вы не получили ответа, это означает, что ваша установка Nginx не поддерживает эту функцию. В этом случае вам нужно будет скомпилировать Nginx.
Откройте файл конфигурации по умолчанию Nginx /etc/nginx/conf.d/default.conf для редактирования. Местоположение файла отличается, потому что мы установили Nginx из его официального репозитория. Если вы устанавливаете Nginx из репозитория ОС, то местоположение файла будет /etc/nginx/nginx.conf.
$ sudo nano /etc/nginx/conf.d/default.conf
Введите следующий код внутри блока сервера перед последней закрывающей фигурной скобкой.
# Включить модуль stub_status
location /stub_status {
stub_status;
allow 127.0.0.1; #разрешить только запросы с локального хоста
deny all; #отказать всем другим хостам
}
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Проверьте конфигурацию Nginx.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапустите сервер Nginx.
$ sudo systemctl restart nginx
Перезапустите службу Netdata.
$ sudo systemctl restart netdata
Вы должны увидеть детали соединения Nginx на вашей панели управления Netdata.

Мониторинг журналов Nginx
Netdata также может мониторить журналы доступа Nginx. Для этого перейдите в директорию Netdata.
$ cd /etc/netdata
Выполните следующую команду, чтобы сгенерировать файл конфигурации для мониторинга журналов доступа.
$ sudo ./edit-config go.d/web_log.conf
Прокрутите вниз до конца файла и найдите следующий раздел.
# -------------------------------------------
# журнал nginx на различных дистрибутивах
# debian, arch
nginx_log:
name: 'nginx'
path: '/var/log/nginx/access.log'
# gentoo
nginx_log2:
name: 'nginx_site'
path: '/var/log/nginx/localhost.access_log'
Измените путь для мониторинга соответствующих файлов журналов. Вы можете добавить столько разделов, сколько нужно для мониторинга, сколько угодно хостов и их файлов журналов доступа. Наш файл конфигурации выглядит следующим образом.
# -------------------------------------------
# журнал nginx на различных дистрибутивах
# debian, arch
nginx_log:
name: 'nginx'
path: '/var/log/nginx/access.log'
nginx_log2:
name: 'nginx_site1'
path: '/var/log/nginx/site1.access_log'
nginx_log3:
name: 'nginx_site2'
path: '/var/log/nginx/site2.access_log'
nginx_log4:
name: 'nginx_site3'
path: '/var/log/nginx/site3.access_log'
Сохраните и выйдите из редактора.
Чтобы получить доступ к файлам журналов, Netdata нуждается в разрешении на доступ к директории. По умолчанию системная группа adm имеет разрешение на доступ к файлам журналов. Чтобы предоставить Netdata доступ, нам нужно добавить пользователя netdata в группу adm.
$ sudo usermod -aG adm netdata
Перезапустите Nginx и службу Netdata.
$ sudo systemctl restart nginx netdata
Перезагрузите панель управления Netdata, чтобы просмотреть данные вашего файла журнала.

Шаг 13 - Настройка мониторинга MySQL/MariaDB
Мы установим MariaDB для нашего учебника. Мы будем использовать репозиторий MariaDB для этой цели.
Импортируйте GPG-ключ MariaDB.
$ sudo curl -o /usr/share/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
Создайте и откройте файл репозитория MariaDB.
$ sudo nano /etc/apt/sources.list.d/mariadb.sources
Вставьте в него следующий код.
# Список репозиториев MariaDB 10.11 - создан 2023-09-05 11:18 UTC
# https://mariadb.org/download/
X-Repolib-Name: MariaDB
Types: deb
# deb.mariadb.org является динамическим зеркалом, если ваше предпочтительное зеркало выходит из строя. См. https://mariadb.org/mirrorbits/ для получения дополнительной информации.
# URIs: https://deb.mariadb.org/10.11/debian
URIs: https://mirrors.aliyun.com/mariadb/repo/10.11/debian
Suites: bookworm
Components: main
Signed-By: /usr/share/keyrings/mariadb-keyring.pgp
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Обновите список системных репозиториев.
$ sudo apt update
Установите сервер MariaDB.
$ sudo apt install mariadb-server
MariaDB включена и работает. Проверьте статус сервиса.
$ sudo systemctl status mariadb
? mariadb.service - Сервер базы данных MariaDB 10.11.5
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enabled)
Drop-In: /etc/systemd/system/mariadb.service.d
??migrated-from-my.cnf-settings.conf
Active: active (running) since Tue 2023-09-05 11:44:17 UTC; 20s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Process: 9396 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
Process: 9397 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 9399 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR >
Process: 9440 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 9442 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
Main PID: 9428 (mariadbd)
Status: "Теперь принимаю ваши SQL-запросы..."
Tasks: 13 (limit: 1107)
Memory: 111.8M
CPU: 663ms
CGroup: /system.slice/mariadb.service
??9428 /usr/sbin/mariadbd
Запустите скрипт безопасной установки MySQL. Имя файла отличается в случае MariaDB.
$ sudo mariadb-secure-installation
....
Введите текущий пароль для root (нажмите Enter, если нет): (Нажмите Enter)
....
Переключиться на аутентификацию unix_socket [Y/n] Y (Введите Y и нажмите Enter)
....
Изменить пароль root? [Y/n] Y (Введите Y и нажмите Enter)
Новый пароль:
Повторите новый пароль:
Пароль успешно обновлен!
....
Удалить анонимных пользователей? [Y/n] Y (Введите Y и нажмите Enter)
....
Запретить удаленный вход root? [Y/n] Y (Введите Y и нажмите Enter)
....
Удалить тестовую базу данных и доступ к ней? [Y/n] Y (Введите Y и нажмите Enter)
....
Перезагрузить таблицы привилегий сейчас? [Y/n] Y (Введите Y и нажмите Enter)
....
Все готово! Если вы выполнили все вышеперечисленные шаги, ваша установка MariaDB теперь должна быть безопасной.
Спасибо за использование MariaDB!
Откройте файл /etc/mysql/mariadb.conf.d/50-server.cnf для редактирования.
$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Найдите секцию [mariadb] в файле и вставьте следующую строку, как показано ниже, чтобы включить плагин Userstats. Эта настройка работает только на MariaDB, а не на сервере MySQL.
[mariadb]
userstat = 1
Войдите в оболочку MySQL.
$ sudo mysql
Выполните следующие команды, чтобы создать пользователя SQL Netdata и предоставить ему привилегии для отслеживания статистики MySQL.
MariaDB> create user 'netdata'@'localhost';
MariaDB> GRANT USAGE, REPLICATION CLIENT, PROCESS ON *.* TO 'netdata'@'localhost';
MariaDB> FLUSH PRIVILEGES;
MariaDB> exit
Создайте файл конфигурации MySQL для Netdata.
$ sudo /etc/netdata/edit-config go.d/mysql.conf
Файл откроется, показывая все возможные параметры. Если вас устраивает, сохраните и закройте файл, нажав Ctrl + X и введя Y, когда будет предложено.
Перезапустите сервер MariaDB.
$ sudo systemctl restart mariadb
Перезапустите службу Netdata.
$ sudo systemctl restart netdata
Панель управления MariaDB/MySQL должна начать появляться на панели управления Netdata.

Шаг 14 - Настройка мониторинга PHP-FPM
Вы можете мониторить один или несколько экземпляров PHP-FPM с помощью Netdata. Для нашего учебника мы установим PHP 8.2, а затем включим его мониторинг.
Debian 12 по умолчанию поставляется с PHP 8.2. Но чтобы всегда оставаться на последней версии PHP, мы будем использовать репозиторий PHP Ondrej.
Сначала импортируйте GPG-ключ репозитория Sury PHP.
$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
Добавьте репозиторий PHP Ondrej Sury.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Обновите список системных репозиториев.
$ sudo apt update
Теперь вы можете установить любую версию PHP.
$ sudo apt install php8.2-fpm php8.2-cli php8.2-mbstring
Проверьте установку.
$ php --version
PHP 8.2.10 (cli) (built: Sep 4 2023 08:12:29) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies
with Zend OPcache v8.2.10, Copyright (c), by Zend Technologies
Настройка PHP
Откройте файл /etc/php/8.2/fpm/pool.d/www.conf.
$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf
Нам нужно установить Unix пользователя/группу процессов PHP на nginx. Найдите строки user=www-data и group=www-data в файле и измените их на nginx.
....
; Unix user/group of the child processes. This can be used only if the master
; process running user is root. It is set after the child process is created.
; The user and group can be specified either by their name or by their numeric
; IDs.
; Note: If the user is root, the executable needs to be started with
; --allow-to-run-as-root option to work.
; Default Values: The user is set to master process running user by default.
; If the group is not set, the user's group is used.
user = nginx
group = nginx
....
Также найдите строки listen.owner=www-data и listen.group=www-data в файле и измените их на nginx.
listen.owner = nginx
listen.group = nginx
Прокрутите вниз по файлу, чтобы найти опцию ;pm.status_path = /status. Уберите комментарий с этой строки, удалив точку с запятой перед ней, как показано ниже.
....
; Note: There is a real-time FPM status monitoring sample web page available
; It's available in: /usr/share/php/8.2/fpm/status.html
;
; Note: The value must start with a leading slash (/). The value can be
; anything, but it may not be a good idea to use the .php extension or it
; may conflict with a real PHP file.
; Default Value: not set
pm.status_path = /status
....
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Перезапустите процесс PHP-fpm.
$ sudo systemctl restart php8.2-fpm
Добавление настроек PHP в Nginx
Откройте файл конфигурации по умолчанию Nginx /etc/nginx/conf.d/default.conf для редактирования.
$ sudo nano /etc/nginx/conf.d/default.conf
Введите следующий код внутри блока сервера перед последней закрывающей фигурной скобкой.
# определить мониторинг PHP-FPM
location ~ ^/(status|ping)$ {
allow 127.0.0.1;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Зависит от версии PHP и дистрибутива ОС
}
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Проверьте конфигурацию Nginx.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапустите сервер Nginx.
$ sudo systemctl restart nginx
Перезапустите службу Netdata.
$ sudo systemctl restart netdata
Перезагрузите панель управления Netdata, и вы должны увидеть статистику PHP-FPM.

Шаг 15 - Настройка мониторинга движка Docker и контейнеров
Netdata может мониторить как движок Docker, так и контейнеры Docker. Он также может мониторить приложения, работающие внутри этих контейнеров, но мы не будем охватывать это в этом учебнике.
Сначала установим Docker.
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
$ sudo usermod -aG docker ${USER}
$ su - ${USER}
Служба Docker включена и запущена. Вы можете проверить статус службы.
$ sudo systemctl status docker
Чтобы мониторить движок Docker, вам нужно включить функцию метрик Docker.
Создайте и откройте файл /etc/docker/daemon.json для редактирования.
$ sudo nano /etc/docker/daemon.json
Вставьте в него следующий код.
{
"metrics-addr" : "127.0.0.1:9323",
"experimental" : true
}
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено. Этот URL используется Prometheus для отслеживания статистики движка Docker.
Создайте файл конфигурации для сборщика Docker.
$ sudo /etc/netdata/edit-config go.d/docker.conf
Создайте еще один файл конфигурации для движка Docker для Prometheus.
$ sudo /etc/netdata/edit-config go.d/docker_engine.conf
Перезапустите службы Netdata и Docker.
$ sudo systemctl restart docker netdata
Загрузите панель управления Netdata снова, и вы сможете увидеть статистику Docker.

Вы увидите еще одну запись с именем Prometheus Metrics на вашей панели управления, потому что опция метрик была создана для панели управления Prometheus.

Следующий шаг — мониторинг контейнера Docker. Netdata использует контрольные группы, называемые cgroups, для мониторинга контейнеров Docker. Контрольные группы — это функция Linux, которая ограничивает и отслеживает использование ресурсов коллекцией процессов, в данном случае контейнеров. Если у вас есть работающие контейнеры Docker, когда вы устанавливаете Netdata, они автоматически отслеживаются. Однако, если вы запускаете контейнер после установки Netdata, вам нужно будет перезапустить его.
Запустите тестовый контейнер.
$ docker container run -d nginx
Проверьте статус контейнера.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d6cde479224 nginx "/docker-entrypoint.…" 7 seconds ago Up 5 seconds 80/tcp zealous_knuth
Имя контейнера — zealous_knuth, как показано. Поскольку контейнер был запущен после установки Netdata, перезапустите службу.
$ sudo systemctl restart netdata
Загрузите панель управления, и вы должны увидеть статистику контейнера. Вы можете увидеть ID контейнера в статистике.

Заключение
Это завершает наш учебник по установке и использованию системы мониторинга Netdata для мониторинга различных приложений, таких как Nginx, MySQL, PHP-FPM и Docker на сервере Debian 12. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.