我当前在 Kubernetes 的 PrometheusRule 实现如下:(注意有一个硬编码的数字 10000000000:
---
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
namespace: mytest
labels:
team: myteam
name: myname
spec:
groups:
- name: mygroup
rules:
- alert: MemoryUsage
annotations:
message: MemoryUsage at ec2 {{ $labels.cluster_id }} is {{printf "%.2f" $value}}%. Threshold is 80%.
expr: 100 * memory_average{container="XXX"...} / 10000000000 > 80
for: 20m
labels:
severity: warning
问题 1:如何定义一个变量来替换硬编码数字 10 000 000 000? IE。在 PromethusRole 中何处以及如何定义类似的内容:
max_memory=10 000 000 000
,然后将 expr 替换为类似这样的内容?
expr: 100 * memory_average{container="XXX"...} / var.max_memory > 80
问题2:我希望不同集群的max_memory值不同。在 PromethusRole 中,如何定义具有如下逻辑的变量?谢谢!
if {{ $labels.cluster_id }} == "ClusterA":
max_memory = 10000000000
else If {{ $labels.cluster_id }} == "ClusterB":
max_memory = 7000000000
对于问题 1:如何定义一个变量来替换硬编码数字 10 000 000 000? IE。在 PromethusRole 中哪里以及如何定义这样的东西: max_memory=10 000 000 000 ,然后将 expr 替换为这样的东西?
您可以使用如下所示的内容(如果您使用 Helm 图表并从 Values.yaml 文件获取值)
expr: 100 * memory_average{container="XXX"...} / var.max_memory > {{ .Values.memoryThresholdValue}}
Values.Yaml
memoryThresholdValue : anyValue
问题2:我希望不同集群的max_memory值不同。在PromethusRole中,如何定义具有如下逻辑的变量?谢谢!
这里您也可以使用
{{ .Values.maxvalue}}
,如果您的变量是在 helm 模板文件中定义的,则使用如下所示的内容 -
expr: max_over_time(reloader_last_reload_successful{namespace=~".+", ingress= {{ include "kube-prometheus-stack.operator.fullname" . }} }[5m]) == {{ .Values.nginxValue }}