Netdata: мониторинг в реальном времени

1 вариант установки. Установка через скрипт "быстрая установка"

Quickstart

To install Netdata from source on any Linux system (physical, virtual, container, IoT, edge) and keep it up to date with our nightly releases automatically, run the following:

# make sure you run `bash` for your shell
bash

# install Netdata directly from GitHub source
bash <(curl -Ss https://my-netdata.io/kickstart.sh)

Адрес netdata ip:19999

 

 

2 вариант установки. 

Материал взят с https://habr.com/ru/company/selectel/blog/318284/


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

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

 

Установка


Прежде чем приступать к установке 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 ./netdata-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 MБ оперативной памяти;
  • в течение 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: sysadmin


Здесь всё интуитивно понятно: в шаблоне указано, когда нужно рассылать предупреждения об исчерпании дискового пространства. Разберём его структуру.

В поле 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 — делитесь впечатлениями в комментариях.

В завершение по традиции приводим полезные ссылки для желающих узнать больше: