netdata traefik
04.05.2024 #Netdata

Настройка Netdata

В статье описываются основные ньансы настройки Netdata. Писал давно, для себя и коллег, так что, что-то могло устреть.

История хранения метрик

В оперативной памяти

  1. nano /etc/netdata/netdata.conf
  2. В секции [global] (в ней прописываются общие настройки) найдём параметр history. Его значение — это срок (в секундах), в течение которого хранятся собранные метрики. От этого срока напрямую зависит и потребление памяти:

Для хранения данных в течение 3600 секунд (1 часа) требуется 15 MБ оперативной памяти;

  • в течение 7200 секунд (2 часов) — 30 МБ оперативной памяти;
  • в течение 14400 секунд (4 часов) — 60 МБ оперативной памяти;
  • в течение 28800 секунд (8 часов) — 120 МБ оперативной памяти;
  • в течение 43200 секунд (12 часов) — 180 МБ оперативной памяти;
  • в течение 86400 секунд (т.е. суток) — 360 МБ оперативной памяти.
  1. sudo systemctl restart netdata

В базе

У netdata встроенный движок хранения на диске, чтоб включить:

  1. nano /etc/netdata/netdata.conf
  2. В секции [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

  1. nano /etc/php/7.4/fpm/pool.d/www.conf (где лежит файл, зависит от вашего образа) снять комментирование с pm.status_path = /status
  2. 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;
   }
}
  1. systemctl restart php7.4-fpm
  2. systemctl restart nginx
  3. systemctl restart netdata

Тест, что всё работает curl http://127.0.0.1/status, должны видеть статистику.

  1. PROFIT

Проверка доступности сайта

Простая httpcheck – умеет только проверять состояние одного сервиса

  1. Поправим конфиг.
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
  1. systemctl restart netdata

Более продвинутая HTTP endpoint

Что умеет

  1. Поправим конфиг.
cd /etc/netdata   # Replace this path with your Netdata config directory, if different
sudo ./edit-config go.d/httpcheck.conf
  1. В секции [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
  1. 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