17 Vérifications Prometheus

Aperçu

Zabbix peut interroger les métriques exposées dans le format de ligne Prometheus.

Deux étapes sont nécessaires pour commencer à collecter les données Prometheus :

  • un élément principal HTTP pointant vers le point de terminaison de données approprié, par ex. https://<prometheus host>/metrics
  • des éléments dépendants utilisant une option de prétraitement Prometheus pour interroger les données requises à partir des métriques recueillies par l'élément principal

Il existe deux options de prétraitement des données Prometheus :

  • Motif Prometheus - utilisé dans les éléments normaux pour interroger les données Prometheus
    • Prometheus vers JSON * - utilisé dans les éléments normaux et pour la découverte de bas niveau. Dans ce cas, les données Prometheus interrogées sont renvoyées au format JSON.
Traitement de masse

Le traitement de masse est pris en charge pour les éléments dépendants. Pour activer la mise en cache et l'indexation, le prétraitement Motif Prometheus doit être la première étape de prétraitement. Lorsque Motif Prometheus est la première étape de prétraitement, les données Prometheus analysées sont mises en cache et indexées par la première condition <label>==<value> dans l'étape de prétraitement Motif Prometheus. Ce cache est réutilisé lors du traitement d'autres éléments dépendants dans ce lot. Pour des performances optimales, la première étiquette doit être celle avec les valeurs les plus différentes.

S'il y a un autre prétraitement à effectuer avant la première étape, il doit être déplacé soit vers l'élément principal, soit vers un nouvel élément dépendant qui serait utilisé comme élément principal pour les éléments dépendants.

Configuration

Si l'élément maître HTTP est configuré, vous devez créer un élément dépendant qui utilise une étape de prétraitement Prometheus :

  • Saisissez les paramètres généraux de l'élément dépendant dans le formulaire de configuration
  • Accédez à l'onglet Prétraitement
  • Sélectionnez une option de prétraitement Prometheus (Motif Prometheus ou Prometheus vers JSON)

Les paramètres suivants sont spécifiques à l'option de prétraitement Motif Prometheus :

Paramètre Description Exemples
Motif Pour définir le modèle de données requis, vous pouvez utiliser un langage de requête similaire au langage de requête Prometheus (voir la table de comparaison), par exemple :
<nom métrique> - sélectionner par nom de métrique
{__name__="<nom métrique>"} - sélectionner par nom de métrique
{__name__=~"<regex>"} - sélectionner par nom de métrique correspondant à une expression régulière
{<nom étiquette>="<étiquette>",...} - sélectionner par nom d'étiquette
{<nom étiquette>=~"<regex>",...} - sélectionner par nom d'étiquette correspondant à une expression régulière
{__name__=~".*"}==<valeur> - sélectionner par valeur de métrique
Ou une combinaison des éléments ci-dessus :
<nom métrique>{<nom étiquette1>="<valeur étiquette1>",<nom étiquette2>=~"<regex>",...}==<valeur>

La valeur de l'étiquette peut être n'importe quelle séquence de caractères UTF-8, mais les caractères de barre oblique inverse, de guillemet double et de saut de ligne doivent être échappés sous la forme \\, \" et \n respectivement ; les autres caractères ne doivent pas être échappés .
wmi_os_physical_memory_free_bytes
cpu_usage_system{cpu="cpu-total"}
cpu_usage_system{cpu=~".*"}
cpu_usage_system{cpu="cpu-total",host=~".*"}
wmi_service_state{name="dhcp"}==1
wmi_os_timezone{timezone=~".*"}==1
Traitement du résultat Indiquez s'il faut renvoyer la valeur, l'étiquette ou appliquer la fonction appropriée (si le modèle correspond à plusieurs lignes et que le résultat doit être agrégé) :
valeur - renvoie la valeur de la métrique (erreur si plusieurs lignes correspondent)
étiquette - renvoie la valeur du libellé spécifié dans le champ Étiquette (erreur si plusieurs métriques correspondent)
sum - renvoie la somme des valeurs<br >min - renvoie la valeur minimale
max - renvoie la valeur maximale
avg - renvoie la valeur moyenne
count - renvoie le nombre de valeurs
Ce champ n'est disponible que pour l'option Motif Prometheus.
Voir aussi des exemples d'utilisation de paramètres ci-dessous.
Sortie Définir le nom de l'étiquette (optionnel). Dans ce cas, la valeur correspondant au nom de l'étiquette est renvoyée.
Ce champ n'est disponible que pour l'option Motif Prometheus, si 'Étiquette' est sélectionné dans le champ Traitement du résultat.

Exemples d'utilisation de paramètres

  1. Le cas d'usage le plus courant consiste à renvoyer la valeur. Pour renvoyer la valeur de /var/db à partir de :

node_disk_usage_bytes{path="/var/cache"} 2.1766144e+09
node_disk_usage_bytes{path="/var/db"} 20480
node_disk_usage_bytes{path="/var/dpkg"} 8192
node_disk_usage_bytes{path="/var/empty"} 4096

utilisez les paramètres suivants :

  • Motif - node_disk_usage_bytes{path="/var/db"}
  • Traitement du résultat - sélectionnez 'valeur'
  1. Vous pouvez également être intéressé par la valeur moyenne de tous les paramètres node_disk_usage_bytes :
  • Motif - node_disk_usage_bytes
  • Traitement du résultat - sélectionnez 'avg'
  1. Alors que Prometheus ne prend en charge que les données numériques, il est courant d'utiliser une solution de contournement qui permet également de renvoyer la description textuelle pertinente. Cela peut être accompli avec un filtre et en spécifiant l'étiquette. Ainsi, pour renvoyer la valeur de l'étiquette 'color' de

elasticsearch_cluster_health_status{cluster="elasticsearch",color="green"} 1
elasticsearch_cluster_health_status{cluster="elasticsearch",color="red"} 0
elasticsearch_cluster_health_status{cluster="elasticsearch",color="yellow"} 0

utilisez les paramètres suivants :

  • Motif - elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1
  • Traitement du résultat - sélectionnez 'étiquette'
  • Étiquette - spécifiez 'color'

Le filtre (basé sur la valeur numérique '1') correspondra à la ligne appropriée, tandis que l'étiquette renverra la description de l'état de santé (actuellement 'green' ; mais potentiellement aussi 'red' ou 'yellow').

Prometheus vers JSON

Les données de Prometheus peuvent être utilisées pour la découverte de bas niveau. Dans ce cas, des données au format JSON sont nécessaires et l'option de prétraitement Prometheus vers JSON renverra exactement cela.

Pour plus de détails, voir Découverte à l'aide des données Prometheus.

Comparaison des langages de requête

Le tableau suivant répertorie les différences et les similitudes entre le langage de requête de prétraitement PromQL et Zabbix Prometheus.

PromQL instant vector selector Prétraitement Zabbix Prometheus
Différences
Cible de la requête Serveur Prometheus Texte brut au format d'exposition Prometheus
Renvois Vecteur instantané Valeur de métrique ou d'étiquette (modèle Prometheus)
Tableau de métriques pour une valeur unique dans JSON (Prometheus vers JSON)
Opérateurs de correspondance d'étiquettes =, !=, =~, !~ =, !=, =~, !~
Expression régulière utilisée dans la correspondance de libellé ou de nom de métrique RE2 PCRE
Opérateurs de comparaison Voir la liste Seulement == (égal) est pris en charge pour le filtrage de valeur
Similitudes
Sélection par nom de métrique égal à chaîne <nom de métrique> or {__nom__="<nom de métrique>"} <nom de métrique> or {__nom__="<nom de métrique>"}
Sélection par nom de métrique qui correspond à l'expression régulière {__nom__=~"<regex>"} {__nom__=~"<regex>"}
Sélection par <nom d'étiquette> valeur égale à string {<nom d'étiquette>="<valeur d'étiquette>",...} {<nom d'étiquette>="<valeur d'étiquette>",...}
Sélection par la valeur <nom d'étiquette> qui correspond à l'expression régulière {<nom d'étiquette>=~"<regex>",...} {<nom d'étiquette>=~"<regex>",...}
Sélection par valeur égale à chaîne {__nom__=~".*"} == <valeur> {__nom__=~".*"} == <valeur>