Wie teile ich Prometheus-Konfigurationsdateien auf?

10

Im Moment verwenden wir Prometheus für unsere Überwachung und wir haben viel Konfiguration (unsere Hauptkonfigurationsdatei prometheus.yml ist mehr als 1400 Zeilen lang).

Ich möchte dies in logische Gruppierungen aufteilen (vielleicht DEV / TEST / PROD?), Aber ich kann anscheinend keine Dokumentation zur Verwendung von "Includes" (oder ähnlichem) in der Prometheus-Konfigurationsdateisyntax finden.

Hat jemand dies mit seiner Prometheus-Konfigurationsdatei getan? Wenn ja, wie haben Sie das gemacht?

srkiNZ84
quelle
Was ist mit einem Skript, das mehrere Dateien zu einer zusammenfügt?
gf_
Ja, ich denke, das muss ich tun. Aber im besten Fall ist dies eine "Problemumgehung". Ich wollte in der Lage sein, eine kleine Konfigurationsdatei zu erstellen, einen "Jobnamen" zu definieren, um die Konfiguration zu testen ("Entwicklung" von Scraping-Konfigurationen, nehme ich an) und dann einfach "reload" aufzurufen, um sie auszuprobieren.
srkiNZ84

Antworten:

8

Die Prometheus-Konfigurationsdatei (und andere Konfigurationsdateien im Ökosystem) unterstützen ausdrücklich keine Form von Vorlagen. Stattdessen bleibt dies Ihrem Konfigurationsmanagementsystem überlassen.

Außerdem klingt es etwas ungewöhnlich, dass Ihre Konfigurationsdatei Abschnitte dev / test / prod enthält. Normalerweise a) hätten Sie einen Prometheus pro Umgebung und b) der Hauptunterschied zwischen diesen Prometheus-Servern wäre ein anderer Wert für das envEtikett in Ihrem external_labels.

Brian-Brasilien
quelle
Verstößt dies nicht gegen die Idee der "einzelnen Glasscheibe"? Wie könnten wir DEV mit PROD-Metriken vergleichen, wenn wir separate Instanzen pro Umgebung hätten? Sollten wir Prometheus für diesen Anwendungsfall verwenden?
srkiNZ84
Der Anwendungsfall ist, dass wir separate DEV / TEST / PROD Kubernetes-Cluster haben. Für jeden Cluster verwenden wir "Service Discovery", um alle Metriken aus den Service- und Pod-Objekten (Container) abzurufen.
srkiNZ84
1
Prometheus hat keine einzige Glasscheibe, die sich nur für kleinste Systeme eignet. Sogar die Metriken von Prometheus selbst sind zu groß für eine einzelne Glasscheibe, sie sind eher 4-5. Der übliche Ansatz wäre die Verwendung von Datenquellenvorlagen in Grafana, und Sie können Dashboards nebeneinander vergleichen.
Brian-Brasilien
0

Sie können Ihre Ziele in andere Dateien auslagern oder ein Service Discovery-Tool wie verwenden consul.

  - job_name: yyy
    metrics_path: /probe
    scrape_interval: 10s
    scheme: https
    params:
      module:
        - http_2xx_LL
    static_configs:
      - targets: null
    file_sd_configs:
      - files:
          - prod-targets.yml
          - prod-misc-targets.yml
          - preprod-targets.yml
          - dev1-targets.yml
          - dev2-targets.yml
          - lab2-targets.yml
          - lab3-targets.yml
          - lab1-targets.yml
    relabel_configs:
      - source_labels:
          - __address__
    (...)

Beispiel einer einzelnen YML

- targets:
    - https://example0.example.com:8443/studio/
    - https://example1.example.com:8443/studio/
    - https://example2.example.com:8443/studio/
    - https://example3.example.com:8443/studio/
    - https://example4.example.com:8443/studio/
    - https://example5.example.com:8443/studio/
    - https://example.example.com/studio/
  labels:
    service: Studio
    env: Prod
    team: Nullmean
Ivanov
quelle