Введение
Всем привет! Сегодня мы поговорим о 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 можете найти по этой ссылке.
Features
Я планирую добавить возможность определения пользовательских метрик, используя Groovy, а также полную поддержку Service Desk. Таким образом, вы сможете добавлять пользовательские метрики не только самих продуктов, но и других плагинов.
Все экспортеры открыты и активно развиваются. Если у Вас есть идеи по улучшению или расширению, пожалуйста, создавайте задачи (Jira, Confluence, Bitbucket, Bamboo) и/или делайте pull-requests.
Заключение
Если ваши Atlassian инсталляции довольно большие, и вам необходимо обеспечивать непрерывную работу, мониторинг вам определенно необходим. А каким образом — решайте сами. Prometheus, как один из вариантов, который, вне сомнения, упростит вам жизнь.
Спасибо за внимание!