Настройка Netdata
В статье описываются основные ньансы настройки Netdata. Писал давно, для себя и коллег, так что, что-то могло устреть.
История хранения метрик
В оперативной памяти
nano /etc/netdata/netdata.conf
- В секции
[global]
(в ней прописываются общие настройки) найдём параметрhistory
. Его значение — это срок (в секундах), в течение которого хранятся собранные метрики. От этого срока напрямую зависит и потребление памяти:
Для хранения данных в течение 3600 секунд (1 часа) требуется 15 MБ оперативной памяти;
- в течение 7200 секунд (2 часов) — 30 МБ оперативной памяти;
- в течение 14400 секунд (4 часов) — 60 МБ оперативной памяти;
- в течение 28800 секунд (8 часов) — 120 МБ оперативной памяти;
- в течение 43200 секунд (12 часов) — 180 МБ оперативной памяти;
- в течение 86400 секунд (т.е. суток) — 360 МБ оперативной памяти.
sudo systemctl restart netdata
В базе
У netdata встроенный движок хранения на диске, чтоб включить:
nano /etc/netdata/netdata.conf
- В секции
[global]
[global]
memory mode = dbengine
page cache size = 32 # размер кеша
dbengine multihost disk space = 256 # размер занимаемого на диске места
Подключение MySQL MAN
Открываем консоль MySQL под root и выполняем:
CREATE USER 'netdata'@'localhost';
GRANT USAGE, REPLICATION CLIENT, PROCESS ON *.* TO 'netdata'@'localhost';
FLUSH PRIVILEGES;
Затем sudo systemctl restart netdata
и PROFIT
Подключение PHP-FGM man
В документации только настройка под Apache2 Тут будет по nginx
nano /etc/php/7.4/fpm/pool.d/www.conf
(где лежит файл, зависит от вашего образа) снять комментирование сpm.status_path = /status
nano /etc/nginx/vhost.d/php-fpm.conf
Добавляем
server {
listen 80;
#listen [::]:80 default_server;
server_name 127.0.0.1;
location /status {
access_log off;
allow 127.0.0.1;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
deny all;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}
}
systemctl restart php7.4-fpm
systemctl restart nginx
systemctl restart netdata
Тест, что всё работает curl http://127.0.0.1/status
, должны видеть статистику.
- PROFIT
Проверка доступности сайта
Простая httpcheck – умеет только проверять состояние одного сервиса
- Поправим конфиг.
cd /etc/netdata # Replace this path with your Netdata config directory, if different
sudo ./edit-config python.d/httpcheck.conf
Добавляем в конец файла
server:
url: 'https://demo1.esh-derevenskoe.ru/admin/' # required
status_accepted: # optional
- 200
timeout: 1 # optional, supports decimals (e.g. 0.2)
update_every: 3 # optional
regex: 'REGULAR_EXPRESSION' # optional, see https://docs.python.org/3/howto/regex.html
redirect: yes # optional
systemctl restart netdata
Более продвинутая HTTP endpoint
- Поправим конфиг.
cd /etc/netdata # Replace this path with your Netdata config directory, if different
sudo ./edit-config go.d/httpcheck.conf
- В секции
[GLOBAL]
update_every : 5 # Частота сбора данных в секундах. По умолчанию: 1.
autodetection_retry : 3 # Интервал перепроверки. Ноль означает не планировать повторную проверку. По умолчанию: 0.
priority : 70000 # Приоритет является относительным приоритетом графиков, которые отображаются на веб-странице,
Так же добавляем ресурсы, которые мы будем проверять:
jobs:
- name: "ED"
url: https://esh-derevenskoe.ru
status_accepted: [200]
timeout: 2
- name: "BS"
url: https://bs.esh-derevenskoe.ru
username: demo
password: demo-password
status_accepted: [200]
timeout: 2
- name: "demo1"
url: https://demo1.esh-derevenskoe.ru/
status_accepted: [200]
timeout: 2
systemctl restart netdata
Логи Web server log
Можно собирать обращение к url
cd /etc/netdata # Replace this path with your Netdata config directory, if different
sudo ./edit-config python.d/web_log.conf
nginx_netdata:
name: ED
path: '/var/log/nginx/access.log'
categories:
image : '^/image/'
admin : '^/admin/'
1c : '^/1c/'
printer : '^/index.php?route=api/printer'
api : '^/(api)'
checkout : '^/index.php?route=checkout/'
systemctl restart netdata
Nginx
nano /etc/nginx/vhost.d/nginx.conf
server {
listen 80;
#listen [::]:80 default_server;
server_name 127.0.0.1;
location /stub_status {
stub_status;
}
}
cd /etc/netdata # Замените этот путь на каталог конфигурации Netdata, если он отличается
sudo ./edit-config python.d/nginx.conf
update_every : 10
priority : 90100
local:
url : 'http://127.0.0.1/stub_status'
systemctl restart nginx
systemctl restart netdata
Fail2ban
cd /etc/netdata # Замените этот путь на каталог конфигурации Netdata, если он отличается
sudo ./edit-config python.d/fail2ban.conf
local:
log_path: '/var/log/fail2ban.log'
conf_path: '/etc/fail2ban/jail.local'
exclude: 'dropbear apache'
systemctl restart netdata