Инструменты мониторинга в DevOps

Хорошая система мониторинга позволяет отслеживать инфраструктуру и производительность приложений, будь то локально, в облаке или в контейнерах. Таким образом, вы всегда имеете полный обзор каждой системы.

Независимо от того, хотите ли вы контролировать Kubernetes, IoT-устройства или аппаратные серверы, правильный инструмент мониторинга поможет сделать это возможным.

Зачем это нужно?

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

Рассмотрим наиболее часто используемые в DevOps инструменты мониторинга.

Prometheus

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

Основные функции Prometheus

  • многомерная модель данных с данными временных рядов, идентифицированными по имени метрики и парам ключ / значение
  • PromQL, гибкий язык запросов
  • без распределенного хранилища; узлы одного сервера являются автономными
  • сбор временных рядов происходит через модель Pull over HTTP
  • продвижение временных рядов поддерживается через промежуточный шлюз
  • цели обнаруживаются через службы обнаружения или статическую конфигурацию
  • поддержка нескольких режимов графики и обзорной панели

Компоненты Prometheus

Prometheus состоит из нескольких компонентов, многие из которых являются необязательными:

  • главный сервер Prometheus, который очищает и хранит данные временных рядов
  • клиентские библиотеки
  • push gateway для поддержки короткоживущих задач
  • экспортеры специального назначения для таких сервисов, как HAProxy, StatsD, Graphite и т. д.
  • alertmanager для уведомлений
  • различные инструменты поддержки

Большинство компонентов Prometheus написаны на Go, что упрощает их сборку и развертывание в виде статических двоичных файлов.

Схема 1 - Архитектура Prometheus

Nagios

Nagios — программа с открытым кодом, предназначенная для мониторинга компьютерных систем и сетей: наблюдения, контроля состояния вычислительных узлов и служб, оповещения администратора в том случае, если какие-то из служб прекращают (или возобновляют) свою работу.Nagios первоначально была создана под именем Netsaint, разработана Этаном Галстадом . Он же поддерживает и развивает систему сегодня, совместно с командой разработчиков, которые занимаются как официальными, так и неофициальными плагинами.

Первоначально Nagios была разработана для работы под Linux, но она также хорошо работает и под другими ОС, такими как Sun Solaris, FreeBSD, AIX и HP-UX.

Обзор возможностей Nagios

  • Мониторинг сетевых служб (SMTP, POP3, HTTP, NNTP, ICMP, SNMP)
  • Мониторинг состояния хостов (загрузка процессора, использование диска, системные логи) в большинстве сетевых операционных систем
  • Поддержка удаленного мониторинга через шифрованные туннели SSH или SSL
  • Простая архитектура модулей расширений (плагинов) позволяет, используя любой язык программирования по выбору (Shell, C++, Perl, Python, PHP, C# и другие)
  • Параллельная проверка служб
  • Возможность определять иерархии хостов сети с помощью «родительских» хостов, позволяет обнаруживать и различать хосты, которые вышли из строя, и те, которые недоступны
  • Отправка оповещений в случае возникновения проблем со службой или хостом (с помощью почты, пейджера, смс, или любым другим способом, определенным пользователем через модуль системы)
  • Возможность определять обработчики событий произошедших со службами или хостами для проактивного разрешения проблем
  • Автоматическая ротация лог-файлов
  • Возможность организации совместной работы нескольких систем мониторинга с целью повышения надёжности и создания распределенной системы мониторинга
  • Включает в себя утилиту nagiostats, которая выводит общую сводку по всем хостам, по которым ведется мониторинг

Схема 2 - Использование Nagios

Sensu

Sensu - это решение для мониторинга инфраструктуры и приложений с открытым исходным кодом, которое отслеживает состояние серверов, служб и приложений, а также отправляет оповещения и уведомления с помощью сторонней интеграции. Написанный на Ruby, Sensu может использовать RabbitMQ или Redis для обработки сообщений. Он использует Redis для хранения данных.

Sensu может быть интегрирован со многими современными стеками DevOps , которые ваша организация уже может использовать, такими как Slack, HipChat или IRC, и даже может отправлять оповещения на мобильные устройства / пейджеры с помощью PagerDuty .

Обзор возможностей Sensu

  • Комплексная система и сервис мониторинга работоспособности.
  • Выполнение пользовательских сценариев, в том числе плагинов Nagios.
  • Сбор основных системных показателей, включая использование процессора, памяти и диска.
  • Сбор пользовательских метрик приложений и интеграция с внешними базами данных для единой бизнес-аналитики.
  • Отправка оповещения по электронной почте, Slack, SMS и многое другое.
  • Создание и устранение инцидентов в PagerDuty, ServiceNow и JIRA.
  • Автоматическая регистрация виртуальных машины, инстансов в публичных облаках, контейнеров и т.д.
  • Интеграция со сторонними CMDB для создания и обновления записей о ваших ресурсах.
  • Встроенная поддержка самовосстановления: запуск и перезапуск службы или выполнения пользовательских сценариев при обнаружении проблем.

Схема 3 - Топология Sensu

Стек ELK = Elasticsearch + logstash + Kibana

«ELK» является аббревиатурой трех открытых проектов: Elasticsearch, Logstash и Kibana.

Elasticsearch Elasticsearch

Это поисковая и аналитическая система.

Logstash Logstash

Это конвейер обработки данных на стороне сервера, который принимает данные из нескольких источников одновременно, преобразует их и затем отправляет в «тайник», подобный Elasticsearch.

Kibana Kibana

Позволяет пользователям визуализировать данные с помощью диаграмм и графиков в Elasticsearch.

Elasticsearch

Elasticsearch - это распределенный поисковый и аналитический движок, лежащий в основе Elastic Stack.

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

Области применения Elasticsearch

  • Поиск в приложении и на веб сайтах
  • Хранение и анализ журналов, метрик и данных о событиях безопасности
  • Машинное обучение, для автоматизации моделирования поведения данных в режиме реального времени
  • Автоматизация бизнес-процессы, используя Elasticsearch в качестве механизма хранения
  • Управление, интеграция и анализ пространственной информации с использованием Elasticsearch в качестве географической информационной системы (ГИС)
  • Хранение и обработка генетических данные, используя Elasticsearch в качестве инструмента исследования биоинформатики

Logstash

Logstash - это механизм сбора данных с открытым исходным кодом с возможностью конвейерной передачи в реальном времени. Logstash может динамически объединять данные из разнородных источников и нормализовать данные в соответствии с выбранными адресатами.

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

Конвейер обработки событий Logstash имеет три этапа: входы → фильтры → выходы. Входы генерируют события, фильтры изменяют их, а выходы отправляют их в другое место. Входы и выходы поддерживают кодеки, которые позволяют кодировать или декодировать данные при их входе или выходе из конвейера без необходимости использования отдельного фильтра.

Входы
используются для того чтобы получить данные в Logstash. Некоторые из наиболее часто используемых входов
Фильтры
являются промежуточными устройствами обработки в Logstash. Можно комбинировать фильтры с условными выражениями для выполнения действия с событием, если оно соответствует определенным критериям
Выходы
являются финальной фазой конвейера Logstash. Событие может проходить через несколько выходов, но как только вся обработка вывода завершена, событие завершает свое выполнение.
Кодеки
это в основном потоковые фильтры, которые могут работать как часть ввода или вывода

Схема 4 - Схема работы logstash

Kibana

Kibana - это инструмент визуального интерфейса, который позволяет вам исследовать, визуализировать и создавать панель мониторинга на основе данных журнала, скопированных в кластеры Elasticsearch.

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

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

Основные особенности Kibana

  • Интерактивные диаграммы. Встроенные графики и отчеты Kibana обеспечивают интерактивную навигацию по огромному объему данных журнала. Кроме того, вы можете динамически увеличивать и уменьшать определенные подмножества данных, перетаскивать временные окна и выполнять детализацию отчетов, чтобы получать полезные данные из данных.
  • Готовые агрегаты и фильтры позволяют выполнять различные аналитические операции, такие как топ-N запросов, гистограмм и трендов.
  • Kibana обеспечивает безопасный общий доступ к вашей визуализации и панелям мониторинга, поскольку есть опция, ограничивающая просмотр информации для защиты от утечки данных.
  • Поиск. Кибана обладает различными методами для поиска данных в журнале.
  • Поддержка картографирования. Геопространственные функции Kibana позволяют легко визуализировать географическую информацию в ваших данных и наблюдать результаты на картах.
  • Пользовательский интерфейс Watcher для оповещений на основе пороговых значений.
  • Составление отчетов. Одна из лучших функций Kibana - это возможность создания отчетов, которая позволяет быстро создавать отчеты , запланировать отчет на потом, получить его по требованию и запустить его в соответствии с определенными условиями.

Схема 5 - Схема работы стека ELK

Выводы. Какой инструмент выбрать?

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

Также существуют другие, не менее популярные утилиты такие как Graylog, Splunk, SnortО, Librato, Dynatrace которые мы постараемся рассмотреть в дальнейших статьях.



Есть вопросы?

Закажите звонок специалиста!

Есть вопросы?

Закажите звонок специалиста!
*нажимая на кнопку, Вы даете согласие на обработку персональных данных