Мониторинг Atlassian продуктов с Prometheus

Введение


Всем привет! Сегодня мы поговорим о real-time мониторинге Atlassian продуктов.

Для начала давайте определим, что такое мониторинг, и зачем он необходим для Atlassian продуктов.

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

Когда это может быть полезно для Atlassian продуктов?

Рассмотрим примеры:

  • Вы хотите знать, как обновление продукта или плагина влияет на производительность системы;
  • Вы хотите знать о состоянии железа и памяти при различных условиях и в определенные моменты времени. Например, как увеличение числа пользователей или смена времени суток влияет на систему;
  • Вы хотите наблюдать, насколько активно используется система в целом. Например, общее количество задач в Jira или за 1 час;
  • Вы хотите поставить напоминание на дату истечения срока лицензии;
  • Вам бы хотелось знать объем дискового пространства, используемого для хранения документов.


Также хотелось бы не только получать информацию в подготовленном виде, но и иметь возможность отправлять уведомления, если что-то происходит по ошибочному сценарию. Здесь нам и помогут Prometheus и его экспортеры для Atlassian продуктов.

Архитектура решения


Prometheus — инструмент для одновременного мониторинга десятков тысяч служб. Сервер Prometheus считывает целевые объекты с интервалом, который вы определяете на сбор метрик, и хранит их в базе данных временных рядов. Для сбора метрик используется pull-модель. Кроме того, существует компонент Alert Manager, который умеет отправлять нотификации в различные каналы, если сработало определенное правило на основе метрик. Подробную информацию на русском языке можете найти здесь и здесь.

Prometheus экспортер — это агент, который занимается сбором метрик непосредственно с сущности (сервера в целом или конкретного приложения), которую надо мониторить. У Prometheus богатые возможности для расширения, поэтому экспортеры есть для большинства популярных приложений.

[ jira | confluence | bitbucket | bamboo ]_exporter работает следующим образом:

  • получает данные из базы данных продукта;
  • получает данные, используя стандартный Java API;
  • добавляет фильтры на HTTP запросы;
  • собирает JMX метрики.


Пример быстрой инсталляции Prometheus/Grafana в Docker реализован Stefan Prodan и доступен по этой ссылке.

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


После того, как вы установили плагин, вам сразу становится доступна ссылка для получения метрики: baseUrl/plugins/servlet/prometheus/metrics. Также есть возможность настроить ключ безопасности.

Далее в prometheus.yml необходимо добавить адрес, по которому получать метрики.
Например, для Jira:

  - job_name: 'jira'
    scheme: https # change to http if don't you have https
    metrics_path: '/jira/plugins/servlet/prometheus/metrics'
    static_configs:
      - targets: ['myhost:2990'] # Jira host and port you serve


Интеграция завершена, можно использовать.

Метрики и примеры запросов


Список всех метрик вы можете увидеть в документации плагинов: Jira, Confluence, Bitbucket, Bamboo.

Примеры запросов:

  • Uptime:
    jvm_uptime_gauge{job="jira"}
    
  • Время выполнения запроса к серверу:
    (sum(rate(jira_request_duration_on_path_sum[1m])) by (path)) / (sum(rate(jira_request_duration_on_path_count[1m])) by (path))
    
  • Общее количество задач:
    jira_total_issues_gauge
    
  • Количество просмотров дашбордов:
    sum(increase(jira_dashboard_view_count[1h]))
    


Подробнее о построении запросов можете прочитать здесь.

Grafana дашборды


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

Features


Я планирую добавить возможность определения пользовательских метрик, используя Groovy, а также полную поддержку Service Desk. Таким образом, вы сможете добавлять пользовательские метрики не только самих продуктов, но и других плагинов.
Все экспортеры открыты и активно развиваются. Если у Вас есть идеи по улучшению или расширению, пожалуйста, создавайте задачи (Jira, Confluence, Bitbucket, Bamboo) и/или делайте pull-requests.

Заключение


Если ваши Atlassian инсталляции довольно большие, и вам необходимо обеспечивать непрерывную работу, мониторинг вам определенно необходим. А каким образом — решайте сами. Prometheus, как один из вариантов, который, вне сомнения, упростит вам жизнь.
Спасибо за внимание!

© Habrahabr.ru