将 Prometheus 的 Alerting rules 从 v1.x 修改为适用于 v2.x 的版本

摘要

在尝试使用 Prometheus 进行警报配置时,不知道为何在启动时出现了格式错误。于是我进行了调查,发现在 v1.x 和 v2.x 中,语法有所变化。以下是我的备忘录。

版本的写法

    v1.xの記法
ALERT InstanceDown
  IF up == 0
  FOR 5m
  LABELS {
    severity="page"
  }
  ANNOTATIONS {
    summary = "Instance {{$labels.instance}} down",
    description = "{{$labels.instance}} of job {{$labels.job}} has been down for more than 5 minutes.",
  }
    v2.xの記法
groups:
- name: instance.rules
  rules:
  - alert: InstanceDown
    expr: up == 0
    for: 5m
    labels:
      severity: page
    annotations:
      description: '{{$labels.instance}} of job {{$labels.job}} has been down for
        more than 5 minutes.'
      summary: Instance {{$labels.instance}} down

太意外了,居然变成了YAML。

转换方法

您可以在此网站上找到相关信息,下面是一个检查格式的promtool安装指南。

$ go get github.com/prometheus/prometheus/cmd/promtool

使用这个工具,您可以将v1格式的文件转换为v2格式。

$ promtool update rules instance.rules

执行后,将生成一个名为 instance.rules.yml 的文件。

广告
将在 10 秒后关闭
bannerAds