如何解决在 Kubernetes 的 Prometheus 中自动生成警报规则?
我使用 Kubernetes 中的 Prometheus Community Helm Chart 设置了 Prometheus 实例。每当持久卷已满 70% 时,我都会通过 Slack 收到警报。为了实现这一点,我在舵图的值文件中添加了一些代码(如下所示)。 整个过程运行良好,但目前,我需要为每个新的持久卷添加一个新警报。
有没有更快的方法来自动生成这些规则(或使用变量定义它们)?我的值文件的相关部分可以在下面看到。
additionalPrometheusRulesMap:
rule-name:
groups:
- name: storage
rules:
- alert: grafanaStorageAt70%
expr: ( sum(kubelet_volume_stats_capacity_bytes{job="kubelet",namespace="kube-logging",persistentvolumeclaim="prom-grafana"})
- sum(kubelet_volume_stats_available_bytes{job="kubelet",persistentvolumeclaim="prom-grafana"}))
/ sum(kubelet_volume_stats_capacity_bytes{job="kubelet",persistentvolumeclaim="prom-grafana"}) > 0.7
for: 15m
labels:
severity: warning
annotations:
summary: The Storage of Grafana is 70% full. Maybe increase the storage size?
- alert: lokiStorageAt70%
expr: ( sum(kubelet_volume_stats_capacity_bytes{job="kubelet",persistentvolumeclaim="storage-loki-0"})
- sum(kubelet_volume_stats_available_bytes{job="kubelet",persistentvolumeclaim="storage-loki-0"}))
/ sum(kubelet_volume_stats_capacity_bytes{job="kubelet",persistentvolumeclaim="storage-loki-0"})> 0.7
for: 15m
labels:
severity: warning
annotations:
summary: The Storage of Loki is 70% full. Maybe increase the storage size?
解决方法
只要您能够通过 PromQL 通配符表达要发出警报的卷范围,您就可以为所有相关卷制定一条规则。
Prometheus 实际上非常聪明,可以对具有匹配值标签的值进行算术运算,即使您使用通配符也是如此。
例如,涵盖 loki 持久卷的所有实例(即不仅仅是 -0
)的规则如下所示:
additionalPrometheusRulesMap:
rule-name:
groups:
- name: storage
rules:
- alert: lokiStorageAt70%
expr: ( sum(kubelet_volume_stats_capacity_bytes{job="kubelet",namespace="kube-logging",persistentvolumeclaim=~"storage-loki-.+"})
- sum(kubelet_volume_stats_available_bytes{job="kubelet",persistentvolumeclaim=~"storage-loki-.+"}))
/ sum(kubelet_volume_stats_capacity_bytes{job="kubelet",persistentvolumeclaim=~"storage-loki-.+"})> 0.7
for: 15m
labels:
severity: warning
annotations:
summary: The Storage of Loki is 70% full. Maybe increase the storage size?
这只是一个例子,您当然可以使通配符更加通配以涵盖更多您想要发出警报的卷。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。