Компания ИГТЕЛ подготовила сборку современных инструментов мониторинга для Docker: NetData, Prometheus, Graphana (NPG)


Компания ИГТЕЛ подготовила сборку современных инструментов мониторинга для Docker: NetData, Prometheus, Graphana (NPG). NPG позволяет развернуть инструменты за несколько простых шагов и начать их совместное использование для решения задач мониторинга производительности прикладных систем.

Проект расположен по адресу https://github.com/igtel/npg
Дополнительную информацию вы сможете найти на страницах нашего блога или на сайте проекта.

Описание сборки

NPG состоит из набора open-source инструментов, предназначенных для сбора, хранения и представления данных о состоянии элементов ИТ-инфраструктуры, в первую очередь, серверов и приложений, в текущий момент времени и за необходимый период истории.
Краткая характеристика инструментов в составе NPG:

  1. Netdata — https://my-netdata.io/. Легкий мониторинг в режиме реального времени. Собирает по умолчанию тысячи метрик, практически не оказывая влияния на производительность самой системы. Автоматически обнаруживает большое количество широко используемых приложений, в том числе, имеет возможность собирать метрики сред виртуализации, таких как libvirt, docker, lxc. Базовая функциональность расширяется за счет дополнительных модулей; расширения могут быть добавлены на любом удобном для пользователя языке: shell, python, perl, node.js, java, go, ruby и т.д., в том числе, есть плагины для сбора данных по SNMP. Имеет встроенный удобный веб-интерфейс, т.е. все данные можно смотреть непосредственно на самой системе через доступ веб-браузером с посекундной детализацией. При этом netdata можно настроить на работу с внешними хранилищами данных (backend): graphite, influxdb, opentsdb, prometheus. Данные сохраняются с усреднением за настраиваемый период сбора. Есть базовое оповещение по событиям, более 2000 предустановленных настроек по порогам срабатывания метрик. Оповещения отправляются, например, на электронную почту, в мессенджер telegram и т.п. Продукт написан с использованием C и Python. Релиз — 2016 год.
  2. Prometheus — https://prometheus.io/. Ядро сборки. Совмещает в себе систему мониторинга с открытым исходным кодом, базу данных с высокой плотностью данных, гибким языком запросов и хорошей производительностью, подсистему аварийных оповещений и веб-интерфейс.
  3. Grafana — https://grafana.com/. Визуализация данных. Позволяет визуализировать данные, полученные от различных источников с открытой архитектурой.

Дополнительно в NPG используются следующие инструменты:

  • cAdvisor — https://github.com/google/cadvisor. Сбор статистики по использованию ресурсов контейнерами, размещенными на системах. Может использоваться для мониторинга производительности docker-среды, в частности, в данном случае он используется для мониторинга использования ресурсов самой сборкой. В случае необходимости мониторинга других серверов с docker-средой, необходимо разместить контейнер cAdvisor на всех этих серверах и настроить Prometheus на сбор статистики с этих серверов.
  • blackbox-exporter – один из вспомогательных инструментов prometheus, который позволяет выполнять проверку доступности сетевых сервисов по указанным протоколам и экспортирует результаты проверки в базу prometheus. Поддерживает проверки по протоколам HTTP, HTTPS, TCP, POP3, SSH, ICMP. Если требуется мониторинг внешней доступности наиболее важных сервисов, то необходимо настроить данный компонент на проверку конкретных адресов в конфигурации самого prometheus.

Эти два инструмента являются вспомогательными и необязательны для установки. Их можно отключить до запуска сборки.
В NPG не входят, но могут быть самостоятельно установлены другие дополнительные экспортеры для prometheus. Список возможных экспортеров можно найти на странице https://prometheus.io/docs/instrumenting/exporters/.

Преимущества сборки

Сборка NPG позволяет быстро запустить сбор статистики о производительности серверов, ОС и приложений. Время, необходимое для первичной инсталляции и настройки такой системы, сведено к минимуму, чтобы полезныeполезные данные можно было собирать сразу, и инструментом можно было пользоваться в режиме «с колес», а затем, по мере освоения инструментов, можно было бы тонко настроить их под собственные нужды.

К преимуществам NPG, в частности, за счет использования связки Netdata-Prometheus, на наш взгляд, можно отнести то, что администратор прикладных систем получает два взаимодополняющих представления данных: исторические данные и данные в режиме реального времени. При этом исторические данные собираются централизованно, к ним есть постоянный доступ пользователей через централизованную консоль. Администратор системы сам определяет глубину хранения данных, частоту опроса агентов, политики доступа пользователей и т.д. Графики исторических данных позволяют выявить аномалии в работе систем, посмотреть тенденции, подготовить отчет за нужный период времени. В то же время, данные в режиме реального времени хранятся только на агенте, размещаются в оперативной памяти, не занимая места на файловой системе агента, автоматически происходит ротация данных (доступны данные, полученные только за последний настроенный интервал времени). Это позволяет иметь детальную картину происходящего на сервере, не забивая центральную базу данных информацией кратковременного хранения. Данные собираются с секундной точностью. В момент обнаружения аномалии производительности системы администратор с помощью инструмента netdata может провести анализ, какими именно процессами была вызвана аномалия, и каких именно ресурсов недостаточно для работы приложения на сервере.
По сравнению с традиционными, наиболее часто используемыми продуктами мониторинга, такими как Zabbix и другие подобные продукты, у NPG есть следующие преимущества:

  • высокая скорость доступа к данным. За счет использования базы данных временных рядов темпоральной (time-series) базы данных время выборки данных для заданного интервала, даже при больших объемах данных, остается в предсказуемом диапазоне, т.ое. не происходит деградации производительности базы данных на таблицах с большим количеством хранимых измерений;
  • интерфейс представления данных: графики, таблицы имеют высокую степень гибкости настройки под нужды конкретного пользователя. При этом настройка представления выполняется непосредственно в веб-интерфейсе, без необходимости каких-либо настроек через конфигурационные данные. Полученные графики могут быть встроены в существующие системы презентации данных как через механизм API, так и через передачу ссылок с указанными параметрами.

Ограничения использования сборки

NPG в качестве источника данных использует приложение Netdata, которое специализируется на сборе счетчиков производительности — поэтому мы не рекомендуем использовать NPG как замену полноценной системы мониторинга. Мониторинг производительности – это только одна из задач системы мониторинга. Не менее важной задачей является, например, мониторинг событий — отслеживание работы приложений по журнальным файлам, SNMP-оповещениям и с помощью других способов обнаружения аномалий, а не только путем измерения значений метрик. Сервер Prometheus может быть использован в качестве базы для хранения таких данных, но их визуализация в интерфейсе grafana является здесь более сложной задачей. Для решения подобных задач существует довольно много других продуктов, в том числе, с открытым кодом — например, Zabbix, Nagios, Zenoss и множество других.

Заключение

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

Мы будем рады помочь вам в освоении и сопровождении новых инструментов и по возможности адаптировать их для решения ваших задач.