- PVSM.RU - https://www.pvsm.ru -

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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

После того, как вы установили плагин [5], вам сразу становится доступна ссылка для получения метрики: 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 [6], Confluence [7], Bitbucket [8], Bamboo [9].

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

  • 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]))

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

Grafana дашборды

Вы можете использовать Grafana [11] в качестве стороннего компонента для визуализации метрик, хранящихся в базе данных временных рядов Prometheus. Есть несколько уже готовых реализаций на официальном сайте [12]. Например, дашборды для Jira можете найти по этой ссылке [13].
Мониторинг Atlassian продуктов с Prometheus - 1

Features

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

Заключение

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

Автор: Andrey_V_Markelov

Источник [18]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/jira/281552

Ссылки в тексте:

[1] Prometheus: https://prometheus.io/

[2] здесь: https://habr.com/company/selectel/blog/275803/

[3] здесь: https://medium.com/southbridge/prometheus-monitoring-ba8fbda6e83

[4] ссылке: https://github.com/stefanprodan/dockprom

[5] плагин: https://marketplace.atlassian.com/vendors/1210741/andrey-v-markelov

[6] Jira: https://github.com/AndreyVMarkelov/jira-prometheus-exporter/wiki/Prometheus-Exporter-For-Jira#metrics

[7] Confluence: https://github.com/AndreyVMarkelov/prom-confluence-exporter/wiki/Prometheus-Exporter-For-Confluence#metrics

[8] Bitbucket: https://github.com/AndreyVMarkelov/prom-bitbucket-exporter/wiki/Prometheus-Exporter-For-Bitbucket#metrics

[9] Bamboo: https://github.com/AndreyVMarkelov/bamboo-prometheus-exporter/wiki/Prometheus-Exporter-For-Bamboo#metrics

[10] здесь: https://prometheus.io/docs/prometheus/latest/querying/basics/#querying-prometheus

[11] Grafana: https://grafana.com/

[12] сайте: https://grafana.com/dashboards

[13] ссылке: https://grafana.com/dashboards?search=jira

[14] Jira: https://github.com/AndreyVMarkelov/jira-prometheus-exporter/issues

[15] Confluence: https://github.com/AndreyVMarkelov/prom-confluence-exporter/issues

[16] Bitbucket: https://github.com/AndreyVMarkelov/prom-bitbucket-exporter/issues

[17] Bamboo: https://github.com/AndreyVMarkelov/bamboo-prometheus-exporter

[18] Источник: https://habr.com/post/412897/?utm_campaign=412897