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

Вступление

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

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

Шаги в этом руководстве охватывают все, что вам нужно для успешной настройки одного сервера Ubuntu 16.04, на котором работает Netdata, с помощью встроенного веб-сервера или, при необходимости, с помощью Nginx.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

  • Один сервер Ubuntu 16.04, настроенный по адресу Initial Server Setup для Ubuntu 16.04, включая sudo пользователь root и брандмауэр.

  • Git установлен на вашем сервере, который вы можете настроить, следуя Как установить Git в Ubuntu 16.04 .

  • При желании на вашем сервере устанавливается Nginx, который вы можете настроить, следуя Как установить Nginx на Ubuntu 16.04. Это не обязательно, но обеспечивает большую функциональность и безопасность, чем встроенный веб-сервер Netdata.

Шаг 1 - Установка Netdata

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

sudo apt-get update

Затем установите зависимости Netdata, которые включают инструменты + gcc + (компилятор C), GNU Autoconf, https: //en.wikipedia. Управление org / wiki / Globally_unique_identifier [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 в комплекте с менеджером пакетов системы подходит для Netdata. требования. Установите эти следующие.

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

Чтобы установить саму 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 будет хранить все свои компоненты. Вы можете прочитать их, чтобы вы были немного более знакомы с тем, как программа распространяется по файловой системе после ее установки.

Installer Output. . .
 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, чтобы продолжить установку. Через некоторое время, в конце цепочки вывода, вы увидите следующее сообщение:

Installer Output. . .
 ^
 |.-.   .-.   .-.   .-.   .-.   .  netdata                          .-.   .-
 |   '-'   '-'   '-'   '-'   '-'   is installed and running now!  -'   '-'
 +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->

 enjoy real-time performance and health monitoring...

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

Если у вас включен UFW, как подробно описано в учебнике Initial Настройка сервера для Ubuntu 16.04, вы нужно открыть порт + 19999 + для внутреннего веб-сервера Netdata.

sudo ufw allow 19999/tcp

На этом этапе вы можете просмотреть панель инструментов по умолчанию, посетив + http: //: 19999 / + в вашем любимом браузере. Вы увидите обзор текущих показателей системы. Это хорошая проверка, что все работает до сих пор, но прежде чем мы исследуем GUI, давайте немного настроим Netdata.

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

Вы можете просмотреть текущую конфигурацию Netdata в своем браузере, посетив + http: //: 19999 / netdata.conf +.

Здесь вы увидите, что все (или большинство) настраиваемых параметров закомментированы (т.е. с предваряющим знаком + # +). Это связано с тем, что конфигурация Netdata работает с использованием набора предполагаемых значений по умолчанию. Любые отключенные настройки используют значение по умолчанию Netdata; если параметр не прокомментирован, указанное значение переопределит значение по умолчанию. Это сохраняет файл конфигурации, содержащий только то, что вы изменили.

Вернувшись на ваш сервер, сам файл конфигурации будет + / etc / netdata / netdata.conf +. Опция, которую мы настроим в этом руководстве, это параметр + history +. Это контролирует максимальный размер базы данных памяти, используемой Netdata.

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

  • 3600 секунд (1 час хранения данных диаграммы) использует 15 МБ ОЗУ

  • 7200 секунд (2 часа хранения данных диаграммы) использует 30 МБ ОЗУ

  • 14400 секунд (4 часа хранения данных диаграммы) использует 60 МБ ОЗУ

  • 28800 секунд (8 часов хранения данных диаграммы) использует 120 МБ ОЗУ

  • 43200 секунд (12 часов хранения данных диаграммы) использует 180 МБ ОЗУ

  • 86400 секунд (24 часа хранения данных диаграммы) использует 360 МБ ОЗУ

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

Откройте основной файл конфигурации Netdata с помощью + nano + или вашего любимого текстового редактора.

sudo nano /etc/netdata/netdata.conf

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

/etc/netdata/netdata.conf

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

       # update every = 1
. . .

Замените значение + 3600 + на значение, которое вы определили ранее. Здесь мы используем + 14400 +, что дает нам 4 часа хранения данных. Не забудьте также раскомментировать строку, удалив символ + # +, чтобы эта опция больше не игнорировалась Netdata.

/etc/netdata/netdata.conf

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

       # update every = 1
. . .

Сохраните и закройте файл после внесения этого изменения.

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

Шаг 3 - Включение слияния на одной странице ядра

Несмотря на то, что Netdata работает и работает «из коробки», мы можем внести больше изменений в то, как Netdata использует системные ресурсы, что ускорит и оптимизирует ее производительность. Мы начнем с включения Kernel Same-page Merging, или KSM для краткости. Разработчики Netdata считают, что это уменьшает использование памяти Netdata на 40-60%.

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

Чтобы навсегда включить этот аспект ядра системы Linux, откройте файл + / etc / rc.local с помощью текстового редактора.

sudo nano /etc/rc.local

Этот файл + / etc / rc.local или управляющий файл запускается после запуска всех других обычных системных служб и процессов Linux. Это полезно для указания пользовательских сервисов - или, в нашем случае, для включения KSM во время работы сервера.

Добавьте две выделенные ниже команды в конец файла перед последней строкой + exit 0 +, как показано здесь:

/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.




exit 0

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

После сохранения и закрытия файла KSM будет включен при следующей перезагрузке сервера и сохранится в последующих перезагрузках. Чтобы включить его для остальной части текущего времени безотказной работы этого сервера, вам нужно запустить две команды, которые вы добавили в + rc.local +, вручную в командной строке.

Во-первых, инициируйте и введите новый сеанс оболочки от имени пользователя root на сервере, используя флаг + -s + с + sudo +. Это необходимо, потому что две команды из предыдущего используют перенаправление вывода (через оператор +> +) и должны быть выполнены корневой оболочкой для успеха.

sudo -s

Теперь введите две команды из ранее:

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

Затем выйдите из корневой оболочки и верните обычную сессию оболочки.

exit

Наконец, чтобы применить все изменения, которые мы внесли в этот шаг и шаг до этого, мы должны перезапустить Netdata.

sudo systemctl restart netdata

Вы можете проверить, что KSM теперь включен, ища недавно добавленную активную диаграмму KSM на панели мониторинга Netdata. Это находится в дереве меню справа, под * Memory> Memory Deduper *.

изображение: https: //assets.digitalocean.com/articles/netdata/ec5ef7ee507b9c9920958055d9752273.png [Изображение диаграммы KSM]

Теперь мы знаем, что панель мониторинга и KSM работают, поэтому стоит предоставить доступ к панели мониторинга через веб-сервер, такой как Nginx, вместо встроенного веб-сервера. Это не является абсолютно необходимым, но рекомендуется, поэтому следуйте следующему шагу, чтобы настроить его.

Шаг 4 - Размещение панели инструментов через Nginx (необязательно)

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

Вам также необходимо установить пакет + apache2-utils +. Этот пакет содержит программу + htpasswd +, которая нам понадобится позже для обеспечения доступа к странице панели инструментов.

sudo apt-get install apache2-utils

Затем создайте новый файл конфигурации хоста Nginx. Обратите внимание, что здесь мы используем файл в каталоге + / conf.d +, но вы можете использовать + / sites-available + и + / sites-enabled +, если вы используете Nginx для других целей, кроме Netdata. Вы можете узнать больше о файлах и каталогах Nginx в https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04#step-5-get-familiar-with- важные-nginx-файлы-и-каталоги [руководство по установке].

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

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

Ниже приведен весь файл конфигурации для копирования и вставки. Измените два выделенных красным цветом элемента для директив + listen + и + server_name + выше на IP-адрес вашего сервера и выделенное доменное имя соответственно. Позаботьтесь о том, чтобы в конце каждого был добавлен завершающий +; +. Если у вас нет доменного имени, вы можете оставить директиву + server_name + как + example.com +.

/etc/nginx/conf.d/default.conf

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

server {
   listen :80;
   server_name ;

   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;
   }
}

Если вы уверены, что ваш собственный файл соответствует этому блоку кода, вы можете сохранить и выйти, чтобы вернуться в командную строку.

Давайте объясним этот файл, чтобы вы поняли, что он делает. Это первый раздел:

/etc/nginx/conf.d/default.conf

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

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

Сразу после этого идет основной блок + server +.

/etc/nginx/conf.d/default.conf

server {
   listen :80;
   server_name ;

   auth_basic "";
   auth_basic_user_file netdata-access;

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

Последние две строки в этом фрагменте устанавливают простую аутентификацию имени пользователя и пароля HTTP. Это делается с помощью модуля + auth_basic + для отображения запроса имени пользователя и пароля. Вы можете настроить сообщение для приглашения; здесь установлено * Требуется аутентификация *. + auth_basic_user_file + указывает имя файла и местоположение для хранения учетных данных для входа в запрос аутентификации, созданный позже на этом шаге.

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

/etc/nginx/conf.d/default.conf

   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 + помогает нам создать учетные данные для входа в систему для приглашения входа на панель управления.

Сначала мы создадим имя пользователя и пароль. Запустите следующую команду, заменив * sammy * именем пользователя, которое вы хотите использовать в Netdata. При появлении запроса введите пароль, который вы хотите использовать.

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

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

Перезапустите Nginx, чтобы активировать добавленную нами новую конфигурацию.

sudo systemctl restart nginx

Чтобы протестировать конфигурацию Nginx в первый раз, посетите + http: // + в вашем любимом веб-браузере. Вы увидите запрос аутентификации. Введите имя пользователя и пароль, которые вы указали ранее на этом шаге, чтобы получить доступ к панели мониторинга, которую мы рассмотрим на шаге 5.

Шаг 5 - Изучение панели инструментов

Если вы не выполнили необязательный шаг 4, перейдите к + http: //: 19999 / + в своем любимом браузере сейчас, чтобы получить доступ к панели инструментов.

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

изображение: https: //assets.digitalocean.com/articles/netdata/fc92c985b0197ff491a209b22b71f2cf.png [изображение индикаторов HUD]

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

изображение: https: //assets.digitalocean.com/articles/netdata/177189ddcb6f564df3e508c5e982973c.png [Пример диаграммы ЦП]

Графики являются интерактивными и их можно перетаскивать влево или вправо с помощью кнопки мыши для перемещения назад и вперед через различные интервалы времени.

image: https: //assets.digitalocean.com/articles/netdata/9b740f1fb166dd13d723146b14d85f11.png [Пример диаграммы ОЗУ]

Удерживая нажатой клавишу «+ SHIFT» и прокручивая колесико мыши по графику, вы сузите или расширите временные метки. Дважды щелкните диаграмму, чтобы восстановить ее вид и вид по умолчанию.

изображение: https: //assets.digitalocean.com/articles/netdata/c52bf377d51ee3c3aa22efd8f8f67035.png [Пример сетевой диаграммы]

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

изображение: https: //assets.digitalocean.com/articles/netdata/c89039d87928cafd736f4386c021f7aa.png [Дерево меню]

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

изображение: https: //assets.digitalocean.com/articles/netdata/c4b85431138b134b489faef238b89356.png [Изображение дерева меню]

Есть много таких дополнительных статистических диаграмм, доступных через Netdata.

Одна важная часть GUI - страница обновления. Netdata получает обновления довольно регулярно, и поддерживать актуальность вашей установки легко. В верхней части панели инструментов есть кнопка * Обновить *, которая позволяет проверить, доступна ли для скачивания новая версия.

изображение: https: //assets.digitalocean.com/articles/netdata/0b091543f92ecf2e3b1e31e4702d674b.png [Обновить изображение кнопки]

При нажатии на эту кнопку открывается новое меню с более подробной информацией и кнопкой «Проверить сейчас», чтобы вручную проверять наличие обновлений.

изображение: https: //assets.digitalocean.com/articles/netdata/0dabcc4147e36ed75307628f964659b5.png [Обновить изображение проверки деталей]

Если доступно обновление, вам просто нужно запустить прилагаемый скрипт обновления из репозитория Netdata Git, который мы клонировали в домашний каталог пользователя Linux на шаге 1. То есть, когда доступно обновление, просто запустите + sudo ~ / netdata / netdata-updater.sh + из командной строки.

Заключение

Чтобы узнать больше о проекте Netdata и о том, как еще больше расширить то, что было настроено здесь, посетите Netdata GitHub проект. Информация о реестре Netdata, настройке аварийных сигналов и установке пользовательских диаграмм / модулей описана в Netdata wiki, где также обсуждаются такие темы, как создание значков HTML или обработка файлов журналов Netdata. ,

Related