

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建规则文件
<a name="AMP-ruler-rulesfile"></a>

要在 Amazon Managed Service for Prometheus 中使用规则，您需要创建一个规则文件来定义规则。Amazon Managed Service for Prometheus 规则文件是一个 YAML 文本文件，其格式与独立 Prometheus 中的规则文件相同。有关更多信息，请参阅 *Prometheus* 文档中的 [Defining Recording rules](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) 和 [Alerting rules](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/)。

以下是规则文件的基本示例：

```
groups:
  - name: cpu_metrics
     interval: 60s
     rules:
      - record: avg_cpu_usage
        expr: avg(rate(node_cpu_seconds_total[5m])) by (instance)
      - alert: HighAverageCPU
        expr: avg_cpu_usage > 0.8
        for: 10m
        keep_firing_for: 20m
        labels:
          severity: critical
        annotations:
          summary: "Average CPU usage across cluster is too high"
```

此示例创建了规则组 `cpu_metrics`，该组每 60 秒评估一次。此规则组使用记录规则创建一个名为 `avg_cpu_usage` 的新指标，然后在警报中使用该指标。下面描述一些使用的属性。有关警报规则和可包含的其他属性的更多信息，请参阅 *Prometheus* 文档中的[警报规则](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/)。
+ `record: avg_cpu_usage` – 此记录规则创建一个名为 `avg_cpu_usage` 的新指标。
+ 如果未指定 `interval` 属性，则规则组的默认评估间隔为 60 秒。
+ `expr: avg(rate(node_cpu_seconds_total[5m])) by (instance)` – 记录规则的此表达式按 `instance` 标签分组，计算每个节点过去 5 分钟 CPU 的平均使用率。
+ `alert: HighAverageCPU` – 此警报规则创建一个名为 `HighAverageCPU` 的新警报
+ `expr: avg_cpu_usage > 0.8 ` – 此表达式要求警报查找 CPU 平均使用率超过 80% 的样本。
+ `for: 10m`：只有当平均 CPU 使用率在至少 10 分钟内超过 80% 时，才会触发警报。

  在这种情况下，该指标的计算值为过去 5 分钟的平均值。因此，只有当至少有两个连续的 5 分钟样本（总计 10 分钟）且其中平均 CPU 使用率高于 80% 时，才会触发警报。
+ `keep_firing_for: 20m` – 此警报将继续触发，直到样本低于阈值至少 20 分钟。这对避免警报连续反复升降很有帮助。

**注意**  
您可以在本地创建规则定义文件，然后将其上传到 Amazon Managed Service for Prometheus，也可以直接在 Amazon Managed Service for Prometheus 控制台中创建、编辑和上传定义。无论哪种方式，都适用相同的格式规则。要了解有关上传和编辑文件的更多信息，请参阅[将规则配置文件上传到 Amazon Managed Service for Prometheus](AMP-rules-upload.md)。