В современном мире проблема мониторинга стоит достаточно остро, данный инструмент отличается своей простотой как в установке и настройке, так и визуализации. Основное направление - сборка данных в реальном времени.
Netdata позволяет отследить в реальном времени практически все показатели системы, включая:
Помимо этого имеется возможность расширить функциональность системы с помощью плагинов наиболее популярные:
Так же имеется Live Demo версия сайта
Существует несколько вариантов установки 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
Далее клонируем репозиторий программы:
git clone https://github.com/firehol/netdata.git --depth=1 ~/netdata
Установка:
$ cd ~/netdata
$ sudo ./netdate-installer.sh
Здесь мы запускаем скрипт сборки и установки Netdata, по окончанию установки Netdata будет настроена и готова к работе.
Все настройки хранятся в файле
/etc/netdata/netdata.conf
В нем имеется общий раздел (global), данный раздел содержит параметр history
Для хранения данных в течение 3600 секунд (1 часа) требуется 15 MБ оперативной памяти;
Больше информации о разделах и пунктах конфигурации можно получить из документации на офф. сайте
В своем блоге команда разработки Netdata советует выполнить ряд действий которые могут увеличить производительность netdata на 30-60% для этого необходимо отредактировать файл
$ sudo nano /etc/rc.local
Отредактировать нужно так:
#!/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
Хотелось бы выделить наиболее важные и полезные функции, а именно возможность оповещения о таких события:
Пример конфига:
template: apache_last_collected_secs
on: apache.requests
calc: $now - $last_collected_t
every: 10s
warn: $this > ( 5 * $update_every)
crit: $this > (10 * $update_every)
Думаю в разъяснении не нуждается, все предельно просто. Более подробно на настройке
Помимо хранения данных в оперативной памяти, можно использовать различные базы данных для сохранения истории, доступные хранилища и интерфейсы:
Внимание! Одновременно может быть активен лишь один из вышеперечисленных интерфейсов
С конкретными примерами настройки можно ознакомиться в данном разделе
Ранее я писал о том что можно установить Netdata не только локально, но и с помощью Docker(Что я чаще всего и использую)
Пример команды для запуска:
docker run -d --name=netdata \
-p 19999:19999 \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
--cap-add SYS_PTRACE \
--security-opt apparmor=unconfined \
netdata/netdata
Или есть вам удобнее в docker-compose
version: '3'
services:
netdata:
image: netdata/netdata
hostname: example.com # set to fqdn of host
ports:
- 19999:19999
cap_add:
- SYS_PTRACE
security_opt:
- apparmor:unconfined
volumes:
- /etc/passwd:/host/etc/passwd:ro
- /etc/group:/host/etc/group:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
Вот и все! Мы можем перейти по адресу http://localhost:19999 и увидеть метрики в реальном времени.