如何分割Prometheus配置文件?


10

现在,我们正在使用Prometheus进行监视,并且有很多配置(我们的prometheus.yml主配置文件长1400多行)。

我想将其分为逻辑分组(也许是DEV / TEST / PROD?),但是我似乎找不到关于如何在Prometheus配置文件语法中使用“包含”(或类似内容)的任何文档。

有人用他们的Prometheus配置文件做到了吗?如果是这样,您是如何做到的?


将多个文件合并为一个脚本的脚本呢?
gf_

是的,我认为这就是我要做的。但是充其量这是一个“变通办法”。我希望能够创建一个小的配置文件,定义一个“ job_name”以测试配置(我猜为“抓取配置”的“开发”),然后只需调用“重新加载”即可进行尝试。
srkiNZ84

Answers:


8

Prometheus配置文件(以及生态系统中的其他配置文件)明确不支持任何形式的模板。而是由您的配置管理系统来处理。

另外,在配置文件中有dev / test / prod部分听起来有点不寻常。通常,a)每个环境都有一个Prometheus,并且b)这些Prometheus服务器之间的主要区别是env您的中标签的值不同external_labels


这是否违反了“单片玻璃”的想法?如果我们在每个环境中有单独的实例,那么我们如何将DEV与PROD指标进行比较呢?我们是否应该在此用例中使用联邦Prometheus?
srkiNZ84

用例是我们有单独的DEV / TEST / PROD Kubernetes集群。对于每个群集,我们利用“服务发现”从Service和Pod(容器)对象获取所有指标。
srkiNZ84

1
普罗米修斯没有一个单一的想法,无法针对最小的系统进行扩展。对于一块玻璃来说,即使普罗米修斯本身的度量标准也太大了,更像是4-5。通常的方法是在Grafana中使用数据源模板,并且可以并排比较仪表板。
brian-brazil

0

您可以将目标卸载到其他文件,也可以使用某些服务发现工具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__
    (...)

单个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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.