Настройка Grafana Dashboard для федерации Прометей - PullRequest
0 голосов
/ 24 апреля 2020

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

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

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 Server

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

1 Ответ

1 голос
/ 25 апреля 2020

Центральный сервер 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

Источник Prometheus (арендатор 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

Источник Prometheus (арендатор 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

...