Netdata: моніторинг в реальному часі



Проблематику моніторингу, збору і зберігання метрик ми вже не раз розглядали в попередніх публікаціях. Сьогодні ми розповімо ще про одному інструменті —Netdata.
На відміну від інших інструментів аналогічного плану, він орієнтований на збір і візуалізацію метрик в реальному часі (при необхідності можна підключати бэкенды для збору і зберігання зібраних метрик).

З допомогою netdata можна відстежувати просто величезна кількість показників: статистику використання процесора, використання пам'яті, операцій вводу-виводу, мережі (список далеко не повний). Також Netdata оснащений плагінами для відстеження різних служб: Postfix, Squid, PHP-FPM та інші.

У цій статті ми розповімо, як встановити та налаштувати Netdat на сервері під управлінням OC Ubuntu 16.04.

Установка
Перш ніж приступати до установки Netdata, встановимо всі необхідні залежності:

$ sudo apt-get install git zlib1g-dev uuid-dev libmnl-dev gcc make autoconf autoconf-archive autogen automake pkg-config curl

$ sudo apt-get install python python-yaml python-mysqldb python-psycopg2 nodejs lm-sensors netcat

По завершенні установки клонируем офіційний репозиторій netdata:

$ git clone https://github.com/firehol/netdata.git --depth=1 ~/netdata

Далі виконаємо:

$ cd ~/netdata
$ sudo ./netdate-installer.sh

Остання команда запустить скрипт автоматичного складання і установки Netdata. По завершенні установки Netdata готовий до роботи. А якщо змінити деякі параметри конфігурації, все буде працювати з набагато більшою швидкістю і продуктивністю. Про це ми докладніше поговоримо в наступних розділах.

Включаємо дедупликацию сторінок пам'яті
Почнемо ми з того, що активуємо KSM (Kernel Same-Page Merging, об'єднання однакових сторінок пам'яті). Ця технологія дозволяє об'єднувати сторінки пам'яті між різними процесами для спільного використання. Як запевняють самі творці Netdata у своєму блозі, що з її допомогою можна збільшити продуктивність на 40 — 60%.

Виконаємо команду:

$ sudo nano /etc/rc.local

Файл rc.local (його ім'я являє собою скорочення від run control) являє собою скрипт, який виконує після того, як будуть запущені всі інші служби і процеси. Редагувати цей файл потрібно так:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

echo 1 > /sys/kernel/mm/ksm/run
echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs

exit 0

Перша команда записує одиницю в файл /sys/kernel/mm/ksm/run і тим самим активує KSM, а друга — вказує, що демон KSM повинен запускатися разів в секунду і перевіряти 100 сторінок на наявність дублікатів.

KSM буде активовано після перезавантаження сервера.

Встановлюємо термін зберігання метрик
Всі налаштування Netdata прописуються в конфігураційному файлі /etc/netdata/netdata.conf.

У секції [global] (в ній прописуються загальні налаштування) знайдемо параметр history. Його значення — це строк (у секундах), протягом якого зберігаються зібрані метрики. Від цього терміну безпосередньо залежить і споживання пам'яті:

  • для зберігання даних протягом 3600 секунд (1 години) потрібно 15 МБ оперативної пам'яті;
  • протягом 7200 секунд (2 годин) — 30 МБ оперативної пам'яті;
  • протягом 14400 секунд (4 години) — 60 МБ оперативної пам'яті;
  • протягом 28800 секунд (8 годин) — 120 МБ оперативної пам'яті;
  • протягом 43200 секунд (12 годин) — 180 МБ оперативної пам'яті;
  • протягом 86400 секунд (тобто діб) — 360 МБ оперативної пам'яті.
Тут наведено показники для стандартних дашбордов; для кастомних дашбородов об'єм споживаної пам'яті може бути як більше, так і менше. Виставимо потрібне значення (в нашому випадку це 14 400) і збережемо внесені зміни.

Більш докладно про особливості конфігурування Netdata можна прочитати в офіційній документації.

Дашборды: структура та функції
Сторінка, на якій Netdata відображає всі метрики і графіки, доступна у браузері за адресою http://[IP-адреса сервера]:19999. За зовнішнім виглядом вона нагадує веб-інтерфейс популярного інструменту Grafana, про який ми вже не раз писали.

На самому першому дашборде показуються головні метрики системи:

netdata

Далі йдуть графіки використання ресурсів процесора, споживання пам'яті, операцій вводу-виводу, мережевої активності і інші:

netdata

netdata

netdata

Ми можемо збільшувати (або, навпаки, зменшувати) тимчасові інтервали на графіках: для цього потрібно підвести до дашбордку курсор, натиснути SHIFT і покрутити коліщатко миші. На сторінку можна додавати численні додаткові графіки; більш докладно про це можна прочитати тут.

Налаштування сповіщень
Деякі види сповіщень в Netdata налаштовані прямо «з коробки», зокрема:

  • оповіщення про зупинку будь-якого з спостережуваних додатків;
  • сповіщення про помилки на мережеві інтерфейси;
  • оповіщення про нестачі дискового простору.
Також Netdata обчислює, скільки вільного місця залишилося на диску і протягом якого терміну це вільне місце буде вичерпано; якщо цей строк становить менш 48 годин.

Як бачимо, для типових ситуацій таких сповіщень більш ніж достатньо. А якщо потрібно налаштувати кастомні оповіщення — в Netdata є спеціальні шаблони, які описуються в конфігураційних файлах, що зберігаються в директорії /etc/netdata/health.d.

Розглянемо структуру та особливості синтаксису цих шаблонів. Почнемо з наступного прикладу:

template: disk_space_usage
on: disk.space
calc: $used * 100 / ($avail + $used)
units: %
every: 1m
warn: $this > (($status >= $WARNING ) ? (80) : (90))
crit: $this > (($status == $CRITICAL) ? (90) : (98))
delay: up 1m down 15m multiplier 1.5 max 1h
info: current disk space usage
to: системний адміністратор

Тут все інтуїтивно зрозуміло: в шаблоні зазначено, коли потрібно розсилати попередження про вичерпання дискового простору. Розберемо його структуру.

У полі template вказано ім'я шаблону. У полі on зазначено, що шаблон потрібно застосовувати до всіх графіками, де context=disk.space (тобто до всіх дашбордам зі статистикою операцій введення/виводу).
Найбільший інтерес для нас представляє, мабуть, поле calc: в ньому прописано, за якою формулою розраховується критичний обсяг вільного місця на диску. Вона виглядає так: $used * 100 / ($avail + $used). Як неважко здогадатися, $used — це обсяг використаного, а $avail — вільного дискового простору.

У полі units ми вказуємо, що показник виражається у відсотках, а в полі every — що перевірку слід проводити раз на хвилину.

Зверніть увагу на поля warn і crit: у них вказуються значення, при яких потрібно висилати відповідно попередження (в нашому випадку це 80 -90%) і повідомлення про критичному значенні показника (98%).

Тут ми наводимо лише короткий опис; більш докладно про шаблони можна почитати тут.

Обмеження
Як і у всякого інструменту, у Netdata є свої обмеження і мінуси. Перший мінус полягає в тому, що Netdata не можна використовувати для спостереження за кластером серверів: його потрібно встановлювати на кожен сервер окремо. А якщо і ці сервери доступні з Інтернету, то інтерфейс Netdata потрібно в обов'язковому порядку закрити для зовнішніх відвідувачів (: зловмисники можуть використовувати дані моніторингу в якості підмоги в організації DOS-атаки.

Ще один недолік недолік — підтримка дуже обмеженої кількості бэкендов для зберігання метрик: на сьогоднішній день в якості таких заявлені Graphite і OpenTSDB. Звичайно, інші бэкенды «прикрутити» можна (див. тут), але це не так просто, особливо для початківців користувачів, що не мають навичок програмування.

Серед мінусів Netdata потрібно також виділити недостатньо детальну і погано структуровану документацію (поки що вона доступна тільки в вікі на Github): знайти в ній відповідь на потрібне питання деколи буває вкрай важко.

Висновок
У цій статті ми зробили короткий огляд можливостей Netdata. Якщо ви хочете побачити Netdata в дії — розробники відкрили для широкої аудиторії доступ на демо-сервери, де можна все побачити і «помацати». Якщо у вас вже використовуєте Netdata — діліться враженнями в коментарях.

На завершення за традицією наводимо корисні посилання для бажаючих дізнатися більше:

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.