Настройка Grafana Dashboard для Prometheus Federation

Я использую федерацию prometheus для очистки метрик из нескольких кластеров k8s. Он работает нормально, и я хотел бы создать некоторую панель мониторинга на графане, которую я хотел бы фильтровать панели мониторинга по арендатору (кластеру). Я пытаюсь использовать переменные, но вещи, которые я не понимаю, даже если я что-то не указал специально для kube_pod_container_status_restars_total, он содержит метку, указанную ниже static_configs, но kube_node_spec_unschedulable нет.

Итак, откуда эти различия и что мне делать? Между тем, как лучше всего настроить панель мониторинга, которая может предоставлять фильтр панели мониторинга по нескольким именам кластера? я должен использовать перемаркировку?

kube_pod_container_status_restarts_total{app="kube-state-metrics",container="backup",....,tenant="022"}

kube_node_spec_unschedulable{app="kube-state-metrics",....kubernetes_pod_name="kube-state-metrics-7d54b595f-r6m9k",node="022-kube-master01",pod_template_hash="7d54b595f"

Сервер Prometheus

prometheus.yml:
  rule_files:
    - /etc/config/rules
    - /etc/config/alerts

  scrape_configs:
    - job_name: prometheus
      static_configs:
        - targets:
          - localhost:9090

Центральный кластер

  scrape_configs:
    - job_name: federation_012
      scrape_interval: 5m
      scrape_timeout: 1m

      honor_labels: true
      honor_timestamps: true
      metrics_path: /prometheus/federate

      params:
        'match[]':
          - '{job!=""}'
      scheme: https

      static_configs:
        - targets:
          - host
          labels:
            tenant: 012

      tls_config:
        insecure_skip_verify: true

    - job_name: federation_022
      scrape_interval: 5m
      scrape_timeout: 1m

      honor_labels: true
      honor_timestamps: true
      metrics_path: /prometheus/federate

      params:
        'match[]':
          - '{job!=""}'
      scheme: https

      static_configs:
        - targets:
          - host
          labels:
            tenant: 022

      tls_config:
        insecure_skip_verify: true

person semural    schedule 24.04.2020    source источник
comment
наверное вам нужно попробовать honor_labels=true. Если это не повлияет на ярлыки, попробуйте relabel_configs. prometheus.io/docs/prometheus/latest/configuration/   -  person dmkvl    schedule 25.04.2020
comment
@dmkvl Я уже honor_labels_true .. Куда и как мне добавить этот relabel_configs?   -  person semural    schedule 25.04.2020
comment
Я не вижу этого в ваших scrape_configs, не могли бы вы поделиться своими полными / обновленными scrape_configs?   -  person dmkvl    schedule 25.04.2020
comment
@dmkvl, я добавил в ответ целиком .. мне нужно добавить relabel_configs на каждом сервере Prometheus или на сервере федерации? А как добавить, чтобы дифференцировать имя арендатора?   -  person semural    schedule 25.04.2020
comment
Я отправил ответ с возможными конфигурациями заданий federate и source/tenant очистки. Полагаю, это должно помочь.   -  person dmkvl    schedule 25.04.2020


Ответы (1)


Центральный сервер Prometheus

  scrape_configs:
    - job_name: federate
      scrape_interval: 5m
      scrape_timeout: 1m

      honor_labels: true
      honor_timestamps: true
      metrics_path: /prometheus/federate

      params:
        'match[]':
          - '{job!=""}'
      scheme: https

      static_configs:
        - targets:
          - source_host_012
          - source_host_022

      tls_config:
        insecure_skip_verify: true

Источник Прометей (арендатор 012)

prometheus.yml:
  rule_files:
    - /etc/config/rules
    - /etc/config/alerts

  scrape_configs:
    - job_name: tenant_012
      static_configs:
        - targets:
          - localhost:9090
          labels:
            tenant: 012

Источник Прометей (арендатор 022)

prometheus.yml:
  rule_files:
    - /etc/config/rules
    - /etc/config/alerts

  scrape_configs:
    - job_name: tenant_022
      static_configs:
        - targets:
          - localhost:9090
          labels:
            tenant: 022

Если нужные ярлыки по-прежнему не появляются, попробуйте добавить relabel_configs к своему federate заданию и попытайтесь различать показатели по названию исходного задания:

relabel_configs:
  - source_labels: [job]
    target_label: tenant

или извлеките отличительную информацию из метки __address__ (или из любой другой метки с префиксом __), например.

relabel_configs:
  - source_labels: [__address__]
    target_label: tenant_host

PS: имейте в виду, что метки, начинающиеся с __, будут удалены из набора меток после завершения перемаркировки цели.

https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config

person dmkvl    schedule 25.04.2020
comment
Я постараюсь сообщить вам результаты, но, насколько я понимаю, мне нужно добавить relabel_configs для федеративного задания, а не для исходного prometheus? - person semural; 25.04.2020
comment
сначала попробуйте настроить исходные серверы Prometheus, как в примере выше, кажется, что он будет работать без relabel_configs - person dmkvl; 25.04.2020
comment
Я следую вашим инструкциям, но это не сработает .. Теперь kube_pod_container_status_restarts_total также не имеет метки клиента - person semural; 26.04.2020
comment
Итак, приведите пример вашей kube_pod_container_status_restarts_total метрики с ярлыками - person dmkvl; 26.04.2020
comment
'kube_pod_container_status_restarts_total {app = kube-state-metrics, container = backup, job = kubernetes-pods, kubernetes_io_hostname = 022-kube-master01, kubernetes_namespace = kube-system, kubernetes_pod_name = kube-database-name = kube-name-name = kube-7-состояние-rus_name = kube-name-name5-metrics -fd54 , node = 022-kube-master01, pod = postgresql-postgresql-helm-backup-1587686400-7mczw, pod_template_hash = 7d54b595f, ready = true} ' - person semural; 26.04.2020
comment
@semural, вы можете извлечь идентификатор / имя арендатора из меток kubernetes_io_hostname или node - person dmkvl; 28.04.2020