使用 promtool 检查用于修补 K8s 的警报文件

问题描述 投票:0回答:1

我们有一个微服务环境,其中每个服务都有自己的 git,并且在 git 中它自己的 prometheus 警报 yml

我们正在使用 [kubectl patch configmap 将]所有上述警报放在 prometheus 服务器上。

当我尝试运行

promtool check rules {ALERTS_FILE}
时,我收到此错误:

Checking ./prometheus/****.yml
  FAILED:
yaml: unmarshal errors:
  line 1: field data not found in type rulefmt.RuleGroups

我相信这与我们的文件开头

有关
data:
  ****.yml: |
    groups:
      - name: ****
        rules:

有没有办法命令 promtool 跳过前两行并直接跳到实际规则部分?

谢谢

prometheus
1个回答
0
投票

您的文件似乎是 Kubernetes

ConfigMap
,其中包含将文件名(例如
data
)映射到 Prometheus
警报规则
YAML 配置。 使用 Python,您可以解析

****.yml

YAML 文件,提取(从

ConfigMap
)每个文件名和警报规则配置,并通过 Promtool 运行它们:

data

tester.py

注意

因为这使用了 #!/usr/bin/env python3 import subprocess import sys import yaml RUNTIME = "podman" PROMETHEUS = "docker.io/prom/prometheus:v2.55.1" file = sys.stdin.read() config_map = yaml.safe_load(file) for filename, rules_yaml in config_map["data"].items(): process = subprocess.run([ RUNTIME, "run", "--interactive", "--entrypoint=promtool", PROMETHEUS, "check","rules" ], input=rules_yaml, capture_output=True, text=True, ) print(process.stdout) ,所以您需要在您的环境中

yaml
才能运行 Python 文件。

例如:

pip install pyyaml

产量:

echo ' data: example.yml: | groups: - name: example rules: - alert: HighRequestLatency expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5 for: 10m labels: severity: page annotations: summary: High request latency ' | ./tester.py

	
© www.soinside.com 2019 - 2024. All rights reserved.