Мониторинг производительности в режиме реального времени с помощью Netdata в Ubuntu 16.04

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

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

Данное руководство поможет установить и настроить Netdata на сервере Ubuntu 16.04.

Требования

  • Сервер Ubuntu 16.04.
  • Пользователь с доступом к sudo.
  • Настроенный брандмауэр (все инструкции можно найти здесь).
  • Предварительно установленная система Git (руководство по установке – здесь).
  • Опционально: веб-сервер Nginx (чтобы установить Nginx, читайте эту статью). Nginx предоставляет больше функций и он более надёжный, чем встроенный веб-сервер Netdata.

1: Установка Netdata

Обновите индекс пакетов:

sudo apt-get update

Установите зависимости Netdata: gcc (компилятор C), инструменты GNU Autoconf, GUID и библиотеки сжатия для внутреннего веб-сервера Netdata.

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

Netdata рекомендует установить следующий набор пакетов, но это опционально. Он включает Python, дополнительные пакеты Python и Node.JS. Стабильная версия Node.js из стандартного репозитория системы вполне подойдёт.

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

Читайте также: Установка Node.js в Ubuntu 16.04

Чтобы установить Netdata, используйте репозиторий GitHub. Клонируйте репозиторий Netdata в домашний каталог.

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

Перейдите в новый каталог:

cd ~/netdata

Соберите и установите приложение в этот каталог с помощью сценария оболочки netdata-installer.sh. Обязательно используйте в команде sudo, иначе Netdata не сможет корректно собирать данные.

sudo ./netdata-installer.sh

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

. . .
It will be installed at these locations:
- the daemon    at /usr/sbin/netdata
- config files  at /etc/netdata
- web files     at /usr/share/netdata
- plugins       at /usr/libexec/netdata
- cache files   at /var/cache/netdata
- db files      at /var/lib/netdata
- log files     at /var/log/netdata
- pid file      at /var/run
. . .

Нажмите Enter, чтобы начать установку.

Через некоторое время вы увидите следующее сообщение:

. . .
^
|.-.   .-.   .-.   .-.   .-.   .  netdata                          .-.   .-
|   '-'   '-'   '-'   '-'   '-'   is installed and running now!  -'   '-'
+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->
enjoy real-time performance and health monitoring...

Приложение Netdata установлено на сервер и будет запускаться автоматически после перезагрузки сервера.

Если вы настроили UFW согласно этому руководству, откройте порт 19999, который используется веб-сервером Netdata.

sudo ufw allow 19999/tcp

Теперь вы можете просмотреть дашбор по умолчанию по ссылке:

http://your_server_ip:19999/

Вы увидите обзор системных показателей в реальном времени.

2: Настройка использования памяти Netdata

Текущие настройки Netdata можно найти на странице:

http://your_server_ip:19999/netdata.conf

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

Вернитесь на сервер. Конфигурационный файл находится в /etc/netdata/netdata.conf.

Откорректируйте параметр history, который определяет максимальный объём памяти, используемый Netdata.

Здесь вы можете выбрать объём RAM для Netdata или указать, сколько нужно хранить записанные данные диаграммы, прежде чем они будут удалены:

  • 3600 секунд (1 час хранения данных диаграммы) = 15 MB RAM.
  • 7200 секунд (2 часа хранения данных диаграммы) = 30 MB.
  • 14400 секунд (4 часа хранения данных диаграммы) = 60 MB.
  • 28800 секунд (8 часов) = 120 MB.
  • 43200 секунд (12 часов) = 180 MB.
  • 86400 секунд (24 часа) = 360 MB.

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

Откройте главный конфигурационный файл Netdata.

sudo nano /etc/netdata/netdata.conf

Найдите опцию history в разделе [global]:

. . .
[global] # glibc malloc arena max for plugins = 1
. . .
# hostname = test-netdata
# history = 3600
# update every = 1
. . .

Выберите одно из перечисленных выше значений и введите его вместо 3600 (например 14400). Не забудьте раскомментировать строку, чтобы активировать пользовательское значение параметра.

. . .
[global] # glibc malloc arena max for plugins = 1
. . .
# hostname = test-netdata
history = 14400
# update every = 1
. . .

Сохраните и закройте файл.

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

3: Настройка слияния одинаковых страниц

Чтобы оптимизировать производительность Netdata, настройте использование системных ресурсов. Для начала включите слияние одинаковых страниц (Kernel Same-page Merging, или KSM). Разработчики Netdata утверждают, что это снижает использование памяти Netdata на 40-60%.

После включения демон KSM периодически сканирует память, ища одинаковые страницы, которые могут быть заменены одной защищенной от записи страницей. В этом контексте он позволяет системным процессам или программам совместно использовать идентичные страницы памяти.

Чтобы включить эту функцию ядра и использовать её на постоянной основе, откройте файл /etc/rc.local:

sudo nano /etc/rc.local

Файл /etc/rc.local запускается после всех обычных системных сервисов и процессов Linux. В нём указываются пользовательские сервисы и некоторые другие настройки.

Добавьте в конец файла (перед последней строкой exit 0) следующие две команды:

#!/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

Первая команда добавляет значение 1 в параметр run в файл KSM, что активирует функцию слияния. Вторая команда запускает демон KSM раз в секунду и анализирует 100 страниц.

Сохраните и закройте файл.

Слияние страниц включится после перезапуска сервера. Чтобы включить его в текущей сессии, запустите эти две команды в командной строке.

Инициируйте новую сессию оболочки как пользователь root (команды сработают только в сессии этого пользователя):

sudo -s

Введите:

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

Покиньте оболочку root и вернитесь в сессию обычного пользователя:

exit

Чтобы обновить настройки, перезапустите Netdata.

sudo systemctl restart netdata

Убедитесь, что слияние страниц включено. Откройте дашборд Netdata и найдите в нем диаграмму KSM (Memory > Memory Deduper).

4: Обслуживание дашборда с помощью Nginx (опционально)

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

Для работы могут понадобиться инструменты apache2-utils (в частности программа htpasswd).

sudo apt-get install apache2-utils

Создайте конфигурационный файл виртуального хоста Nginx.

Примечание: Если вы используете Nginx не только для Netdata, используйте для хранения виртуальных хостов каталоги /sites-available и /sites-enabled. В данном руководстве используется /conf.d.

Читайте также: Установка Nginx в Ubuntu 16.04

sudo nano /etc/nginx/conf.d/default.conf

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

Ниже приведён код, который вы можете скопировать и вставить в файл. В директивах listen и server_name укажите IP-адрес и домен соответственно. Не забудьте поставить точку с запятой в конце строк. Если у вас нет домена, можете оставить example.com .

upstream netdata-backend {
server 127.0.0.1:19999;
keepalive 64;
}
server {
listen your_server_ip:80;
server_name example.com;
auth_basic "Authentication Required";
auth_basic_user_file netdata-access;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://netdata-backend;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
}
}

Сохраните и закройте файл. Рассмотрим этот код подробнее.

upstream netdata-backend {
server 127.0.0.1:19999;
keepalive 64;
}

Модуль upstream под названием netdata-backend указывает на встроенный веб-сервер Netdata с помощью обратного адреса сервера, 127.0.0.1, и порта 19999. Директива keepalive устанавливает максимальное число одновременных соединений (для каждого рабочего процесса Nginx). Это определение модуля upstream потребуется позже в директиве proxy_pass.

Далее следует главный блок server:

server {
listen your_server_ip:80;
server_name example.com;
auth_basic "Authentication Required";
auth_basic_user_file netdata-access;

Первые две строки настраивают внешний IP-адрес сервера Nginx для прослушивания клиентских соединений. Директива server_name будет запускать этот виртуальный хост в случае если пользователь обращается к указанному домену.

Последние две строки содержат имя пользователя и пароль для аутентификации. Модуль auth_basic будет отображать сообщение формы ввода учётных данных. В данном случае форма будет содержать фразу Authentication Required. Директива auth_basic_user_file определяет имя и расположение файла для хранения учетных данных (он будет создан позже).

Последний блок location, вложенный в блок server, обрабатывает проксирование и передачу входящих запросов Nginx.

location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://netdata-backend;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
}
}

Этот блок передаёт клиентские запросы веб-серверу Netdata и дашборду.

Директива proxy_pass ссылается на модуль upstream по имени netdata-backend.

Сохраните и закройте файл.

Теперь используйте программу htpasswd из пакета apache2-utils, чтобы создать учётные данные для доступа к дашборду.

Сначала создайте имя пользователя для Netdata. По запросу введите пароль.

sudo htpasswd -c /etc/nginx/netdata-access 8host

Примечание: Вместо 8host укажите имя своего пользователя.

Эта команда создаст файл в /etc/nginx/netdata-access, в котором будут храниться учётные данные зарегистрированных пользователей. Пароли хранятся в зашифрованном виде.

Перезапустите Nginx:

sudo systemctl restart nginx

Проверьте работу Nginx. Для этого откройте в браузере ссылку:

http://your_server_ip

На экране появится форма для входа. Введите свои учётные данные, чтобы просмотреть дашборд.

5: Работа с дашбордом

Если вы пропустили раздел 4, перейдите по ссылке:

http://your_server_ip:19999/

Вы увидите дашборд и обзор показателей системы. Индикаторы стиля HUD вверху страницы изменяются при наведении курсора мыши на каждый период времени в графиках.

Отдельные графики и диаграммы в этом разделе дают подробные отчеты по каждому аспекту системы, начиная от CPU и памяти до сетевого трафика и т. д.

Диаграммы интерактивны, их можно перетаскивать с помощью мыши.

Чтобы изменить интервал времени, отображённый в графике, зажмите Shift и покрутите колёсико мыши. Чтобы вернуть графику его стандартный вид, кликните по нему дважды.

Самый быстрый способ навигации по дашборду – это дерево меню в правой части страницы. Оно изменяется в зависимости от того, какой раздел страницы вы сейчас просматриваете.

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

Нажав эту кнопку, вы получите больше информации и доступ к меню. Кнопка Check Now позволяет вручную проверять наличие обновлений.

Если обновление доступно, вам просто нужно запустить сценарий обновления Netdata из репозитория Git, который вы клонировали в домашний каталог пользователя Linux (раздел 1). Для этого просто запустите:

sudo ~/netdata/netdata-updater.sh

Заключение

Чтобы узнать о проекте Netdata больше, посетите эту страницу. Также полезную информацию можно найти в вики проекта.

Tags: , , ,

Добавить комментарий