Aller au contenu

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éguliers
  • for: <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é (ici critical). On peut mettre les labels que l'on veut.
  • annotations: <annotations set> : utilisé pour décrire l'alerte avec description, message. Vous pouvez spécifier n'importe quelle clé pour l'annotation, un exemple ici avec help_alerts et help_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éguliers
  • labels: <labels set> : labels supplémentaires pour la recordingRule. Nous pouvons mettre les labels de notre choix. Ici example: 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 utilise rate() ou irate().
  • 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.

Liens utiles