¿Cómo dividir los archivos de configuración de Prometheus?

10

En este momento estamos usando Prometheus para nuestro monitoreo y tenemos mucha configuración (nuestro archivo de configuración principal prometheus.yml tiene más de 1400 líneas de largo).

Me gustaría dividir esto en agrupaciones lógicas (¿tal vez DEV / TEST / PROD?) Pero parece que no puedo encontrar ninguna documentación sobre cómo usar "incluye" (o similar) en la sintaxis del archivo de configuración de Prometheus.

¿Alguien ha hecho esto con su archivo de configuración Prometheus? Si es así, ¿cómo lo hiciste?

srkiNZ84
fuente
¿Qué pasa con un script que une varios archivos en uno?
gf_
Sí, creo que eso es lo que voy a tener que hacer. Pero en el mejor de los casos, esta es una "solución". Quería poder crear un pequeño archivo de configuración, definiendo un "nombre de trabajo" para probar la configuración ("desarrollo" de las configuraciones de raspado, supongo) y luego simplemente llamar a "recargar" para probarlo.
srkiNZ84

Respuestas:

8

El archivo de configuración de Prometheus (y otros archivos de configuración en el ecosistema) explícitamente no admiten ninguna forma de plantilla. En cambio, esto se deja a cargo de su sistema de gestión de configuración.

Además, suena un poco inusual que tenga secciones de desarrollo / prueba / producción en su archivo de configuración. Por lo general, a) tendría un Prometheus por entorno yb) la diferencia principal entre estos servidores Prometheus sería un valor diferente para la envetiqueta en su external_labels.

brian-brasil
fuente
¿No viola esto la idea del "cristal único"? ¿Cómo seríamos capaces de comparar métricas DEV con PROD si tuviéramos instancias separadas por entorno? ¿Deberíamos usar Prometheus federado para este caso de uso?
srkiNZ84
El caso de uso es que tenemos grupos de Kubernetes DEV / TEST / PROD separados. Para cada grupo utilizamos el "descubrimiento de servicios" para obtener todas las métricas de los objetos Servicio y Pod (contenedor).
srkiNZ84
1
Prometheus no tiene una sola idea de panel de vidrio, que no se adapta bien a nada más allá de los sistemas más pequeños. Incluso las métricas de Prometheus en sí son demasiado grandes para un solo panel de vidrio, es más como 4-5. El enfoque habitual sería utilizar plantillas de fuente de datos en Grafana, y puede comparar los paneles de manera paralela.
brian-brazil
0

Puede descargar sus objetivos a archivos diferentes o utilizar alguna herramienta de descubrimiento de servicios como 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__
    (...)

ejemplo de un YML individual

- 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
fuente