Мониторинг 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 можете найти по этой ссылке.


    Features


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

    Заключение


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

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

      Самое читаемое