netdata

Содержание статьи
Введение
Установка в CentOS/RedHat Linux
Остановить / Запустить netdata
Запросы к API

Введение

Netdata-это инструмент с открытым исходным кодом, предназначенный для сбора показателей в реальном времени, таких как:

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

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

Я стал использовать netdata как более продвинутую альтернативу своему самописному скрипту для мониторинга потребления CPU и RAM

Обзор

Netdata состоит из демона, который при выполнении отвечает за сбор и отображение информации в режиме реального времени.

Это легкий инструмент, в основном написанный на C , Python и JavaScript , который использует минимальные ресурсы: около 2% на однопроцессорной системе.

Он может быть запущен в любом ядре GNU / Linux для мониторинга любой системы или приложения и способен работать на ПК, серверах и встроенных устройствах Linux.

Особенности

Netdata предназначена для установки в систему, не прерывая ни одного из запущенных на ней приложений.

Он работает в соответствии с требованиями к памяти, указанными пользователем, используя только холостые циклы процессора.

Как только приложение запустится, оно не будет выполнять дисковый ввод-вывод, кроме ведения журнала. Инструмент сохраняется на диск в конце своего выполнения и перезагружается при запуске.

По умолчанию он содержит определенные плагины, которые собирают ключевые системные метрики, но его поведение расширяется с помощью API плагинов.

Netdata может работать практически на любом устройстве, использующем ядро Linux, а его графика может быть встроена в веб-страницы.

Он имеет интерфейс с настраиваемыми темами и может быть настроен пользователем вручную с помощью простого HTML.

Здесь нет никаких зависимостей, так как он работает как собственный веб-сервер со статическими веб-файлами.

Начиная с версии v1.12, Netdata по умолчанию собирает анонимную информацию об использовании и отправляет ее в Google Analytics, функцию, которую можно отключить с помощью ручной настройки.

Разработка

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

Пользователь с наибольшим вкладом в настоящее время является Коста Цаусисом (Costa Tsaousis), генеральным директором и основателем Netdata, с более чем 600 000 добавлениями к коду.

Второй по активности пользователь - Илья Мащенко.

Самым популярным дополнением к Netdata, по-видимому, является добавление поддержки сбора данных из Vnstat, pull-запроса Ноя Троя (Noah Troy) с почти 200 отдельными комментариями (больше, чем любой другой pull-запрос).

Самый популярный за все время запрос функции, по-видимому, добавляет поддержку запуска нескольких заданий freeipmi из той же Netdata.

Установка

learn.netdata.cloud

get

Перед установкой нужно убедиться, что у вас есть curl и другие утилиты

netdata предупредит вас о том, что нужно обновить систему.

>> IMPORTANT <<
Please make sure your system is up to date
by running: yum update

Советую сделать это заранее.

В .rpm Linux

Если вы устанавливаете netdata на CentOS или RedHat:

Как вариант - установите заранее следующее:

sudo yum upadte
sudo yum install epel-release
sudo yum install zlib-devel libuuid-devel libmnl-devel gcc make git autoconf autogen automake pkgconfig
sudo yum install autoconf-archive cmake elfutils-libelf-devel json-c-devel libuv-devel lz4-devel openssl-devel
sudo yum install curl jq nodejs

Теперь можно воспользоваться скриптом с официального сайта. Я выбрал получать только стабильные обновления и отключил телеметрию.

bash <(curl -Ss https://my-netdata.io/kickstart.sh) --stable-channel --disable-telemetry

Dependencies Resolved ================================================================================================================= Package Arch Version Repository Size ================================================================================================================= Installing: autoconf-archive noarch 2017.03.21-1.el7 base 612 k cmake x86_64 2.8.12.2-2.el7 base 7.1 M elfutils-libelf-devel x86_64 0.176-5.el7 base 40 k json-c-devel x86_64 0.11-4.el7_0 base 20 k libuv-devel x86_64 1:1.40.0-1.el7 epel 36 k lz4-devel x86_64 1.8.3-1.el7 base 26 k openssl-devel x86_64 1:1.0.2k-21.el7_ updates 1.5 M Installing for dependencies: keyutils-libs-devel x86_64 1.5.8-3.el7 base 37 k krb5-devel x86_64 1.15.1-50.el7 base 273 k libcom_err-devel x86_64 1.42.9-19.el7 base 32 k libselinux-devel x86_64 2.5-15.el7 base 187 k libsepol-devel x86_64 2.5-10.el7 base 77 k libverto-devel x86_64 0.2.5-4.el7 base 12 k pcre-devel x86_64 8.32-17.el7 base 480 k Transaction Summary ================================================================================================================= Install 7 Packages (+7 Dependent packages) Total download size: 10 M Installed size: 35 M

Если вы получили ошибку

bash: /dev/fd/63: No such file or directory

Убедитесь что вы выполняете команду без sudo. sudo делать не нужно

В процессе установки нужно будет пару раз нажать ENTER и ввести пароль для sudo. Если вы не будете следить за установкой - есть шанс пропустить этот момент и тогда она закончится фейлом.

Процесс установки довольно долгий - на виртуальной CentOS 7 с 4 Gb RAM он занял у меня более 20 минут

После успешной установке появится сообщение:

--- We are done! --- ^ |.-. .-. .-. .-. .-. . netdata .-. .- | '-' '-' '-' '-' '-' is installed and running now! -' '-' +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->

В браузере введите 127.0.0.1:19999

Свежеустановленная netdata изображение с сайта www.andreyolegovich.ru
Свежая netdata

Файлы с настройками netdata появляются в

/etc/netdata

sudo ls -la /etc/netdata

total 288 drwxr-xr-x. 10 root root 244 Feb 15 17:10 . drwxr-xr-x. 85 root root 8192 Feb 15 17:10 .. drwxr-xr-x. 2 root root 6 Feb 15 16:57 charts.d drwxr-xr-x. 2 root root 6 Feb 15 16:57 custom-plugins.d -rwxr-xr-x. 1 root root 2045 Feb 15 16:57 edit-config -rw-r--r--. 1 root root 511 Feb 15 17:10 .environment drwxr-xr-x. 2 root root 6 Feb 15 16:57 go.d drwxr-xr-x. 2 root root 6 Feb 15 16:57 health.d -rw-r--r--. 1 root root 273592 Feb 15 17:10 netdata.conf drwxr-xr-x. 2 root root 6 Feb 15 16:57 node.d -rw-rw-r--. 1 root root 0 Feb 15 17:10 .opt-out-from-anonymous-statistics lrwxrwxrwx. 1 root root 23 Feb 15 17:10 orig -> /usr/lib/netdata/conf.d drwxr-xr-x. 2 root root 6 Feb 15 16:57 python.d drwxr-xr-x. 2 root root 6 Feb 15 16:57 ssl drwxr-xr-x. 2 root root 6 Feb 15 16:57 statsd.d

netdata.conf

Файл netdata.conf с текущими настройками можно изучить также и через веб интерфейс

В браузере введите

localhost:19999/netdata.conf

netdata.conf через web итерфейс изображение с сайта www.andreyolegovich.ru
netdata.conf

Остановить netdata

service netdata stop
systemctl stop netdata
/etc/init.d/netdata stop

Запустить netdata

systemctl start netdata
systemctl start netdata
/etc/init.d/netdata start

Перезапустить netdata

systemctl restart netdata
systemctl restart netdata
/etc/init.d/netdata restart

Доступ с удалённого компьютера

Допустим у вас netdata на хосте 192.168.56.104 а вы хотите мониторить её с 192.168.56.1

Откройте на нём порт 19999 ( инструкция для CentOS/RedHat )

Введите на хосте 192.168.56.1 в браузере

http://192.168.56.104:19999

Следите за тем, чтобы было http а не https иначе может не подсоединитсья

Запросы к API

Документация лежит в github

Пример запроса на Python

Рассмотрим скрипт sys_monitor.py

import urllib.request import json def main(): r = urllib.request.urlopen('http://10.1.102.209:19999/api/v1/data?chart=system.cpu&points=5&after=-10&options=seconds') rr = r.read() rj = json.loads(rr) print(json.dumps(rj)) if __name__ == '__main__': main()

Разберём этот пример

Запросы можно делать на один из двух ресурсов:

  1. /api/v1/data
  2. /api/v1/badge.svg

Я сделал на /api/v1/data поэтому EndPoint выглядит так

http://10.1.102.209:19999/api/v1/data + параметры

chart=system.cpu интересует CPU
points=5 нужно пять значений за выбранный период
after=-10 выбранный период - последние 10 секунд
options=seconds

По своей сути этот запрос является просто обращением к базе уже собранных данных.

Подробнее обо всех запросах читайте в главе параметры запросов

Запустить скрипт можно командой

python3 sys_monitor.py

{ "labels": ["time", "guest_nice", "guest", "steal", "softirq", "irq", "user", "system", "nice", "iowait"], "data": [ [1614181358, 0, 0, 0, 0.0625782, 0, 1.1285306, 1.5675215, 0, 0], [1614181356, 0, 0, 0, 0.1888379, 0, 2.6453165, 2.0154335, 0, 0.377993], [1614181354, 0, 0, 0, 0.0625, 0, 0.9391468, 1.3775879, 0, 0], [1614181352, 0, 0, 0, 0.0628141, 0, 1.0044735, 1.2554933, 0, 0], [1614181350, 0, 0, 0, 0.1254707, 0, 0.941109, 1.4426771, 0, 0] ] }

time: Получено пять точек, как и было указано в points время дано в формате Epoch Time

"guest_nice", "guest", "steal" пусты

softirq:

"irq" пуст

user: показано CPU потреблённое пользователем

system: показано CPU потреблённое системой

"nice" пуст

iowait: показано CPU потреблённое iowait

Список параметров
Название Обязательный Описание
chart да График к которому делается запрос.
points нет Число точек, которые нужно вернуть. Netdata может уменьшить число точек используя группировку. По умолчанию результат будет содержать то же число точек что и база данных (хотя это также зависит от параметра gtime).
before нет Абсолютная временная метка или относительное (от настоящего времени) время до которого выбираются данные. По умолчанию приравнивается к последней (самой новой) временной метке в базе данных.
after нет Абсолютная временная метка или относительное (от before) с которого начинают выбираться данные. По умолчанию приравнивается к первой (самой старой) временной метке в базе данных.
group нет Метод группировки, с помощью которого нужно уменьшить число точек (по сравнению с полным числом точек в базе данных). По умолчанию используется average.
gtime нет Время ресэмплинга с помощью которого можно изменить единицы измерения метрики (например, установка значения 60 сконвертирует метрику per second в per minute. По умолчанию приравнивается к степени детализации (granularity) базы данный.
options нет A bitmap of options that can affect the operation of the query. Only 2 options are used by the query engine: unaligned and percentage. All the other options are used by the output formatters. The default is to return aligned data.
dimensions нет A simple pattern to filter the dimensions to be queried. The default is to return all the dimensions of the chart.

Поиск по сайту

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: