如何为Prometheus特定JSON目标配置对应独立规则文件?
Prometheus 为特定节点组配置独立规则文件
实现思路
Prometheus没有直接为单个抓取任务绑定规则文件的配置项,但可以通过规则文件拆分+标签匹配的方式,让独立规则只作用于对应JSON文件里的节点。具体步骤如下:
1. 拆分规则文件
为node_exp.json对应的节点创建独立规则文件,比如命名为/etc/prometheus/node_exp_rules.yml,专门存放该节点组的告警或记录规则。
2. 修改prometheus.yml加载新规则文件
更新rule_files配置,加入新增的规则文件:
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: - "/etc/prometheus/rules.yml" - "/etc/prometheus/node_exp_rules.yml" # 对应node_exp.json的独立规则文件 # - "first_rules.yml" # - "second_rules.yml" scrape_configs: - job_name: 'Prometheus Node Exporter' scheme: https tls_config: ca_file: node_exporter.crt insecure_skip_verify: true file_sd_configs: - files: - node_exp.json
3. 在独立规则中添加标签筛选
在node_exp_rules.yml里,所有规则都通过标签匹配目标节点组。可以用抓取任务的job标签,或者node_exp.json中自定义的节点标签:
groups: - name: node_exp_alerts rules: - alert: NodeHighCPUUsage # 用job标签筛选该任务下的节点 expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{job="Prometheus Node Exporter",mode="idle"}[1m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: "节点 {{ $labels.instance }} CPU使用率过高" description: "{{ $labels.instance }} CPU使用率已超过80%(当前值: {{ $value }}%)"
如果你的node_exp.json里的节点有自定义标签(比如group: "node_exp"),也可以用这个标签来筛选,让规则更精准:
expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{group="node_exp",mode="idle"}[1m])) * 100) > 80
核心逻辑
通过拆分规则文件实现管理上的隔离,再通过标签匹配让规则只作用于目标节点组,就达到了“为对应JSON文件使用独立rules.yml”的需求。
内容的提问来源于stack exchange,提问作者Sanjay Nigam
相关产品推荐
相关产品推荐

