Как добавить scrape задание в Prometheus

Scrape job – еще один способ описать конечную точку для сборки метрик в Prometheus.

Ниже приведен пример задания дополнительного scrape job на примере сбора метрик у Drone.io (Drone-CI) посредством Prometheus, отображения графиков в Grafana и развертывание всего этого в окружении Kubernetes с помощью Helm.

Drone

  • Для установки Drone CI мы будем использовать следующий репозиторий чартов: https://github.com/helm/charts/tree/master/stable/drone . Drone имеет встроенную поддержу экспорта метрик по URL : */metrics.

  • Чтобы включить эту функцию, необходимо задать разрешение в values.yaml файле Drone:

metrics:
  prometheus:
    enabled: true
  • Для авторизации используется token. Я изменил deployment-server.yaml файл для того, чтобы создать нового пользователя типа “machine”. Внимание! У меня в примере он создается вместо (и вместе) с администратором, потому как реализована внешняя авторизация через LDAP. Так что учтите это, если вам нужна отдельная учетная запись администратора в Drone.
          - name: DRONE_USER_CREATE
            value: username:system,machine:true,admin:true,token:{{ .Values.server.systemToken }}
  • Для задания токена я добавил новый параметр в values.yaml файл Drone:
server:
  systemToken: GeN6RatemE

Prometheus

  • Мы будем использовать Prometheus из этого репозитария: https://github.com/helm/charts/tree/master/stable/prometheus-operator

  • Нам необходимо описать конфигурацию scrape в values.yaml файле Prometheus:

prometheus:
  prometheusSpec:
    # scrape configuration
    additionalScrapeConfigs:
    - job_name: "monitoring/drone"
      bearer_token: {{ .Values.drone.token }}
      kubernetes_sd_configs:
        - role: pod
      relabel_configs:
        - source_labels: [__meta_kubernetes_pod_label_app]
          action: keep
          regex: drone
        - source_labels: [__meta_kubernetes_pod_container_port_number]
          action: keep
          regex: 80

Вы можере видеть, что задание описано как pod Kubernetes. Выборка конечной точки входа осуществляется посредством фильтра лейблов Kubernetes. Это методанные: app и port_number. Вы можете найти их из описания вашего pod-а, командой kubectl describe pod или на странице Prometheus /service-discovery.

Grafana

Для автоматической установки наборов графиков (dashboard) в grafana я использую скрипт: prometheus-operator/hack/sync_grafana_dashboards.py с небольшими изменениями. В частности, я добавляю необходимые мне json-файлы с настройками dashboard-ов:

...
-        'source': 'https://raw.githubusercontent.com/etcd-io/etcd/master/Documentation/op-guide/grafana.json',
-        'destination': '../templates/grafana/dashboards',
+        'source': 'https://raw.githubusercontent.com/carldanley/radium-grafana-dashboards/master/drone-ci.json',
+        'destination': '../templates/grafana/dashboards/custom',
         'type': 'json',
         'min_kubernetes': '1.10.0-0',
         'max_kubernetes': '1.16.0-0'
     },
...

Теперь вам надо запустить этот скрипт для скачивания и конвертации json-файла в yaml-файл типа ConfigMap для Helm. После чего вы можете разворачивать (обновлять) prometheus-operator с grafana и поддержкой drone-ci.

Tagged with:

Добавить комментарий

Ваш e-mail не будет опубликован.