fbpx

Мониторинг Jira c помощью Prometheus и Grafana (мониторинг и алертинг в DevOps)

16 Авг, 2019
Aleks Yenin

Опубликовано Aleks Yenin

Профессиональная техподдержка или сервис DevOps не может существовать без качественного мониторинга и четко налаженной системы уведомлений.

Мы предоставляем услуги техподдержки 24/7 Jira, Confluence, eazyBI для десятков наших клиентов и  мы всегда должны быть уверены в том, что все идет по плану и работает идеально.

Сегодня  на рынке лидирует  несколько систем мониторинга, вы можете сравнить и найти отзывы о каждой из них, а мы остановились на комплексном решении, состоящем из:

  • Prometheus — для мониторинга и хранения собранной информации;
  • Grafana — для визуализации информации по обслуживанию;
  • Telegram — для коммуникации и уведомлений.

В двух словах,  Prometheus проверяет статусы системы и метрики, Grafana показывает статусы, а также данные временного ряда и тренды, Telegram используется как мессенджер для показа алертов, найденных Grafana.

А теперь более подробно.

Prometheus — это софт с открытым исходным кодом для мониторинга и уведомлений. Он собирает и записывает метрики в режиме реального времени из различных систем в базу данных временных рядов (TSDB — современное решение для работы с данными метрик, собранных за определенный промежуток времени). Данные метрики собираются по принципу HTTP pull. Также Prometheus имеет гибкий язык запросов  к данным и свою систему алертинга и уведомлений (мы не используем, потому что считаем, что в этом плане Grafana гораздо удобнее).

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

  • Основной сервер Prometheus, который считывает и хранит данные метрик в (time series) базе данных;
  • Push gateway;
  • Экспортеры для таких сервисов, как HAProxy, StatsD, Graphite, и т.д;
  • Менеджер уведомлений AlertManager (его мы не используем , так как для этого у нас есть Grafana).

Установка сервера Prometheus

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

Важный момент, так как  Prometheus не поддерживает напрямую базовую аутентификацию, обычно мы пользуемся реверс-прокси (Nginx), для ее реализации.

После установки главного сервера можно перейти к основным параметрам мониторинга Linux-сервера, а также к мониторингу Jira и Confluence в Prometheus.

Каждый раз, когда нам надо добавить новый объект мониторинга, мы должны установить соответствующий экспортер в нужный сервер или приложение. Обычно, мы используем следующие экспортеры:

  • Prometheus Exporter для Jira;
  • Prometheus Exporter для Confluence;
  • Node Exporter (для оборудования  и OS метрик);
  • PostgreSQL Exporter;
  • MySQL Exporter.

Установка экспортеров в Jira и Confluence

Экспортеры для Jira и Confluenceя — это аддоны (плагины), и их можно установить через маркетплейс. После установки аддона, вы увидите панель настроек (для этого вам надо открыть “Manage Apps” в Jira или Confluence и выбрать “Prometheus Exporter Settings”):

Не забудьте использовать токен (token), иначе данные метрик будут доступны всем.

Также следует  убедиться, что после установки экспортера ссылка, которая используется для экспорта метрик, используется  также и на сервере Prometheus.

Затем нужно добавить источник для Prometheus, и назвать его соответствующим образом (prometheus.yml — configuration file):

Перезапустите Prometheus и проверьте ваш новый файл в протоколах обнаружения сервисов (service discovery):

sudo systemctl restart prometheus

Панель Prometheus service discovery можно найти здесь: https://prometheus,<you-domain-name>.com/service-discovery

Чтобы проверять метрики прямо в Prometheus, можно пользоваться языком PromQL. Количество доступных метрик вас приятно удивит, например, есть такие, которые позволяют следить за сроком лицензий клиентов, или за количеством проектов для потенциального роста инфраструктуры. Например, если срок лицензии вашей Jira истекает через 30 дней, система может автоматически создать тикет в Jira для вашего отдела закупок, чтобы они не забыли ее обновить.

Установка других (Linus, OS) экспортеров (‘node_exporter”)

Для OS (операционной системы) мы можем произвести установку мануально либо автоматически, например, с помощью Ansible или Docker image. Но также нужно помнить о том, что “node_exporter” изначально предназначен для хост системы. Его не рекомендуется размещать как Docker container, потому что он требует доступ в хост систему. Любая не-root точка подключения, которую вы хотите отслеживать, потребует того, чтобы ее подняли в контейнер (bind mount container). Что касается других экспортеров, процесс установки практически ни чем не отличается, дополнительную информацию можно найти на официальных сайтах. 

Установка node_exporter

Node exporter использует порт 9100. Поэтому сначала убедитесь, что он доступен на сервере Prometheus. Затем обновите prometheus.yml и перезагрузите Prometheus.

Альтернативная установка

Сообщество по COPR репозиторию, в котором можно найти инфо о других экспортерах:

https://copr.fedorainfracloud.org/coprs/ibotty/prometheus-exporters/

postgres_exporter

Процесс установки похож на to node_exporter:

Конфигурация сервиса

 

[Unit]

Description=Prometheus exporter for Postgresql (https://github.com/wrouesnel/postgres_exporter)

 [Service]

WorkingDirectory=/opt/postgres_exporter

EnvironmentFile=/opt/postgres_exporter/env.conf

ExecStart=/opt/postgres_exporter/postgres_exporter

User=postgres

 [Install]

WantedBy=multi-user.target

 

nano /opt/postgres_exporter/env.conf

 #add row:

DATA_SOURCE_NAME=»user=postgres host=/var/run/postgresql/ sslmode=disable»

 systemctl daemon-reload

systemctl start node_exporter

systemctl enable node_exporter

Обновите prometheus.yml и перезагрузите prometheus.

После установки и конфигурации сервера Prometheus, а также экспортеров для Jira/Confluence, node and DB, можно использовать сам Prometheus для мониторинга, просмотра диаграм и настройки уведомлений.

Однако, мы предпочитаем Grafana, как более мощный инструмент, созданный для визуализации информации.

Grafana

Jira и Confluence в Grafana — начало работы

Процесс установки Grafana очень простой, подробную инструкцию можно найти здесь: https://grafana.com/docs/installation/rpm/

Grafana поддерживает различные хранилища для метрических данных (хранилище данных — Data source). У каждого Data source есть специфический редактор запросов (Query Editor), который можно кастомизировать, используя все функции и возможности того или иного хранилища данных. Grafana хорошо работает  с Promethehus.

Процесс конфигурации также не сложный. Вам только нужно Настроить доступ.

Теперь можно приступить к постройке всех графиков, схем и дашбордов с метриками!

Для начала можно воспользоваться любой из уже готовых дашбордов: https://grafana.com/grafana/dashboards

Все дашборды из этого списка можно импортировать в Grafana.

После создания или установки нужного дашборда, нужно проверить и обновить запросы (Grafana поддерживает язык запросов Prometheus — PromQL), чтобы отфильтровать необходимые  данные:

Пример дашборда: мониторинг Jira server Free space

Отслеживание важных уведомлений в Jira и Confluence через Grafana

Grafana позволяет отслеживать уведомления о различных событиях. Для этого сначала нужно установить канал уведомлений (alerting channel):

Grafana поддерживает почти все популярные мессенджеры (Telegram, Slack, MS Teams и даже умерший Hipchat), а также такие программы, как OpsGenie, PagerDuty, еще  можно воспользоваться веб-хуками (webhook):

Для отслеживания уведомлений мы выбрали Telegram, и сделали два канала:

  • Medium Alerts;
  • Critical Alerts.

Один канал публикует уведомления раз в 12 часов, а другой — раз в 3 минуты. Стоит отметить, что уведомления активны только в панели запросов (Query Panels):

Пример уведомления

В зависимости от заданных условий, уведомление появляется в канале передачи уведомлений, как показано на следующем скриншоте:

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

Prometheus + Grafana — это простое и одновременно   многофункциональное решение для проверки состояния Jira, Confluence и других важный систем, которое поможет вам вовремя предотвратить всевозможные инциденты.

Поделиться:
Мы с радостью поможем вам с тулзами Atlassian, с фреймворками Agile или ITIL. Наши некоторые услуги:

Напишите нам

Мы всегда рады Вам помочь