Я считаю , что это очень полезный инструмент , он позволяет следить за состоянием ваших пайплайнов, job-ов и мониторить переменные окружения, можно отслеживать статусы, продолжительность, и на самом деле там есть очень много интересных настроек

Примеры дашбордов из Grafana

Pipelines


grafana.com dashboard #10620
grafana.com dashboard #10620

Jobs

grafana.com dashboard #13328
grafana.com dashboard #13328

Environments / Deployments

grafana.com dashboard #13329
grafana.com dashboard #13329

github.com/IvanRezv/GitlabCI-exporter - ссылка на мой репозиторий с конфигом для быстрого старта сервиса.

Архитектура сервисов описана в docker-compose файле, необходимые конфигурационные файлы для работы сервисов, находятся рядом с compose файлом и прикидываются волюмами в сервисы. Соответственно для Prometheus есть конфиг файл, в котором описана ссылка на сервис, с которого необходимо брать метрики. А для Grafana вложены дашборды и файл с ссылкой на ресурс который собирает метрики.

---
version: '3.9'

x-base:
  &base
  networks:
    - default
  restart: always

services:
  gitlab-ci-pipelines-exporter:
    << : *base
    image: docker.io/mvisonneau/gitlab-ci-pipelines-exporter:v0.5.2
    ports:
      - 8080:8080
    environment:
      GCPE_CONFIG: /etc/gitlab-ci-pipelines-exporter.yml
      GCPE_INTERNAL_MONITORING_LISTENER_ADDRESS: tcp://127.0.0.1:8082
    volumes:
      - ./gitlab-ci-pipelines-exporter.yml:/etc/gitlab-ci-pipelines-exporter.yml

  prometheus:
    image: docker.io/prom/prometheus:v2.28.1
    << : *base
    container_name: prometheus
    ports:
      - 9090:9090
    links:
      - gitlab-ci-pipelines-exporter
    volumes:
      - ./prometheus/config.yml:/etc/prometheus/prometheus.yml

  grafana:
    image: docker.io/grafana/grafana:8.0.5
    << : *base
    container_name: grafana
    ports:
      - 3000:3000
    environment:
      GF_INSTALL_PLUGINS: grafana-polystat-panel,yesoreyeram-boomtable-panel
    links:
      - prometheus
    volumes:
      - ./grafana/dashboards.yml:/etc/grafana/provisioning/dashboards/default.yml
      - ./grafana/datasources.yml:/etc/grafana/provisioning/datasources/default.yml
      - ./grafana/dashboards:/var/lib/grafana/dashboards


networks:
  default:
    driver: bridge

Так же прикладываю ссылку на видео , где описал инструкцию по поднятию сервиса.

Использование

Grafana - адрес машины\URL:3000

Prometheus - адрес машины\URL:9090

Пароль и логин по умолчанию для grafana - admin. После первой авторизации будет предложено сменить его.

Синтаксис для изменения конфигурации сбора метрик(файла gitlab-ci-pipelinex-exporter.yml) - Syntax.

В официальном источнике так же есть инструкции по развертыванию сервиса с помощью helm, scoop, deb packages и т.д.

Комментарии (5)


  1. WoozyMasta
    18.01.2022 15:43
    +1

    Exporter хороший, но к сожалению не вывозит графана десятки тысяч сборочных заданий на одном дашборде. Как я его не крутил, шардил неймспейсы, только релизные теги и мастер бранчи в статистику публиковал. Всё равно работает с большим объемом очень плохо. Да и нагрузку на API GitLab недурную создает.

    По итогу имею полтора десятка упрощенных дашбордов, для определенных тегов. В таком режиме хоть как-то могу наблюдать за состоянием сборок, но увы страдает юзабилити.

    Найти готового коробочного решения для больших объемов к сожалению не удалось пока, использую костыли.


    1. IvanRezv Автор
      18.01.2022 22:34
      +1

      а какие костыли используйте? как доработать можно? я думал сделать самописный дашборд на django, но пока руки не дошли)


      1. WoozyMasta
        19.01.2022 10:36
        +1

        Да ничего особенного, если есть инцедент в ход идет bash или python на которм подсчитываю нужные метрики или gnuplot строит график. Благо нужно это не часто, но готового решения нет, всё как-то руки не доходят.


  1. kost
    19.01.2022 02:03

    Можно ли ограничить глубину запросов к gitlab API?

    У меня получает максимум 168 старых (8-12 месяцев назад) pipelines, и всё. Я запускаю examples/quickstart в Docker.


    1. IvanRezv Автор
      19.01.2022 13:06
      +1

      скорее всего нет, можно выбрать конкретную ветку, чтоб старые pipelines не подтягивались из всего репо, синтакс в docs/configuration_syntax.md