Créer une PrometheusRule¶
AlertingRule¶
L'AlertingRule vous permet d'envoyer des alertes à Alertmanager.
Exemple simple d'un fichier de configuration pour AlertingRule¶
groups:
- name: client-alerting-rules
rules:
- alert: PodCPUUsage
annotations:
description: Container CPU usage is above 80%
message: CPU usage
help_alerts: <url link to help>
help_alerts2: <url link to help>
expr: (sum(rate(container_cpu_usage_seconds_total{image!="", container_name!=""}[3m])) BY (instance, name, pod_name, container_name, cc_prom_source) * 100) > 80
for: 10m
labels:
severity: critical
Format d'AlertingRule¶
alert: <alert name>
: le nom de l'alerte est en CamelCase (avec la première lettre en majuscule également)expr: <PromQL expr>
: l'expression dans PromQL que nous voulons évaluer à intervalles réguliersfor: <duration>
: durée initiale pendant laquelle l'alerte n'est pas affichée/notifiée. Cela évite d'envoyer des notifications si le problème s'est résolu de lui-même en peu de temps. Exemple : perte d'un paquet ping. Dans ce cas, vous pouvez vouloir attendre 1 minute avant d'alerter au cas où un seul paquet réseau a été perdu.labels: <labels set>
: labels d'alerte supplémentaires. Permet par exemple de définir le label de sévérité (icicritical
). On peut mettre les labels que l'on veut.annotations: <annotations set>
: utilisé pour décrire l'alerte avecdescription
,message
. Vous pouvez spécifier n'importe quelle clé pour l'annotation, un exemple ici avechelp_alerts
ethelp_alerts2
qui sont des liens url vers l'aide.
Les alertes sont regroupées dans des groups
.
Dans un groupe, les alertes seront évaluées en même temps, et seront regroupées lors de l'envoi des notifications.
Cela est utile lorsque les alertes se déclenchent en raison de la même root cause.
RecordingRule¶
Parfois, les expressions d'alerte peuvent être complexes et coûteuses.
Les RecordingRules vous permettent de pré-calculer des expressions fréquemment utilisées ou coûteuses en termes de calcul et d'enregistrer leur résultat sous la forme d'un nouvel ensemble de time series (séries temporelles).
Nous pouvons les utiliser comme métriques dans une expression d'alerte ou un tableau de bord.
Exemple simple d'un fichier de configuration pour RecordingRule¶
groups:
- name: node-exporter.rules
rules:
- expr: |-
(count without (cpu) (
count without (mode) (
node_cpu_seconds_total{job="node-exporter"}
)
)
)
labels:
example: additionallabel
record: instance:node_num_cpu:sum
Format des RecordingRule¶
expr: <PromQL expr>
: l'expression dans PromQL que nous voulons évaluer à intervalles régulierslabels: <labels set>
: labels supplémentaires pour la recordingRule. Nous pouvons mettre les labels de notre choix. Iciexample: additionallabel
sera un label de la nouvelle série temporelle (time serie).record
: nom de la métrique.
record
le nom doit être de forme générale level:metric:operations
.
level
représente le niveau d'agrégation et les labels de la sortie de la règle.metric
est le nom de la métrique et doit rester inchangé, à l'exception de la suppression de_total
des compteurs lorsque l'on utiliserate()
ouirate()
.operations
est une liste d'opérations qui ont été appliquées sur la métrique, l'opération la plus récente en premier.