Como dividir os arquivos de configuração do Prometheus?

10

No momento, estamos usando o Prometheus para nosso monitoramento e temos muitas configurações (nosso arquivo de configuração principal prometheus.yml tem mais de 1400 linhas).

Gostaria de dividir isso em agrupamentos lógicos (talvez DEV / TEST / PROD?), Mas não consigo encontrar nenhuma documentação sobre como usar "includ" (ou similar) na sintaxe do arquivo de configuração do Prometheus.

Alguém já fez isso com o arquivo de configuração do Prometheus? Se sim, como você fez isso?

srkiNZ84
fonte
Que tal um script juntando vários arquivos em um?
gf_ 05/10
Sim, acho que é o que vou fazer. Mas, na melhor das hipóteses, essa é uma "solução alternativa". Eu queria ser capaz de criar um pequeno arquivo de configuração, definindo um "job_name" para testar a configuração ("desenvolvimento" de configurações de raspagem, suponho) e, em seguida, basta chamar "reload" para testá-la.
srkiNZ84

Respostas:

8

O arquivo de configuração do Prometheus (e outros arquivos de configuração no ecossistema) explicitamente não suportam nenhuma forma de modelagem. Em vez disso, isso depende do seu sistema de gerenciamento de configuração.

Além disso, parece um pouco incomum que você tenha seções dev / test / prod em seu arquivo de configuração. Geralmente a) você teria um Prometheus por ambiente eb) a principal diferença entre esses servidores Prometheus seria um valor diferente para o envrótulo no seu external_labels.

brian-brazil
fonte
Isso não viola a idéia de "painel único de vidro"? Como poderíamos comparar as métricas DEV com PROD se tivéssemos instâncias separadas por ambiente? Devemos usar Prometheus federado para este caso de uso?
srkiNZ84
O caso de uso é que temos clusters separados de DEV / TEST / PROD Kubernetes. Para cada cluster, usamos a "descoberta de serviço" para obter todas as métricas dos objetos Serviço e Pod (contêiner).
srkiNZ84
1
Prometheus não tem uma única idéia do painel de vidro, que não se adapta bem a nada além do menor dos sistemas. Mesmo as métricas do próprio Prometheus são grandes demais para um único painel de vidro, são mais como 4-5. A abordagem usual seria usar o modelo de fonte de dados no Grafana e você pode comparar os painéis lado a lado.
Brian-brazil
0

Você pode transferir seus destinos para arquivos diferentes ou usar alguma ferramenta de descoberta de serviço, 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__
    (...)

exemplo de um 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
fonte