1 Vérification Prometheus
Vue d'ensemble
Zabbix peut interroger des métriques exposées au format de ligne Prometheus.
Deux étapes sont nécessaires pour commencer à collecter des données Prometheus :
- un élément maître HTTP pointant
vers le point de terminaison de données approprié, par exemple
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 collectées par l'élément maître
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 par lot
Le traitement par lot est pris en charge pour les éléments dépendants. Pour activer la mise en cache et l'indexation, la prétraitement Prometheus pattern doit être la première étape de prétraitement. Lorsque Prometheus pattern 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 Prometheus pattern. Ce cache est réutilisé lors du traitement d'autres éléments dépendants dans ce lot. Pour des performances optimales, le premier label doit être celui qui possède le plus grand nombre de valeurs différentes.
S'il existe un autre prétraitement à effectuer avant la première étape, il doit être déplacé soit vers l'élément maître, soit vers un nouvel élément dépendant qui serait utilisé comme élément maître pour les éléments dépendants.
Configuration
À condition que vous ayez configuré l'élément maître HTTP, 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 (Prometheus pattern ou Prometheus to JSON)

Les paramètres suivants sont spécifiques à l'option de prétraitement Prometheus pattern :
| Parameter | Description | Examples |
|---|---|---|
| Pattern | 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 tableau de comparaison), par exemple : <metric name> - sélection par nom de métrique {__name__="<metric name>"} - sélection par nom de métrique {__name__=\~"<regex>"} - sélection par nom de métrique correspondant à une expression régulière {<label name>="<label value>",...} - sélection par nom de libellé {<label name>=\~"<regex>",...} - sélection par nom de libellé correspondant à une expression régulière {__name__=\~".*"}==<value> - sélection par valeur de métrique Ou une combinaison des éléments ci-dessus : <metric name>{<label1 name>="<label1 value>",<label2 name>=\~"<regex>",...}==<value> La valeur du libellé peut être n'importe quelle séquence de caractères UTF-8, mais les caractères antislash, guillemet double et saut de ligne doivent être échappés respectivement en \\, \" et \n; 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 |
| Result processing | Indiquez s'il faut renvoyer la valeur, le libellé ou appliquer la fonction appropriée (si le modèle correspond à plusieurs lignes et que le résultat doit être agrégé) : value - renvoyer la valeur de la métrique (erreur si plusieurs lignes correspondent) label - renvoyer la valeur du libellé spécifié dans le champ Label (erreur si plusieurs métriques correspondent) sum - renvoyer la somme des valeurs min - renvoyer la valeur minimale max - renvoyer la valeur maximale avg - renvoyer la moyenne des valeurs count - renvoyer le nombre de valeurs Ce champ est disponible uniquement pour l'option Prometheus pattern. |
Voir aussi les exemples d'utilisation des paramètres ci-dessous. |
| Output | Définir le nom du libellé (facultatif). Dans ce cas, la valeur correspondant au nom du libellé est renvoyée. Ce champ est disponible uniquement pour l'option Prometheus pattern, si 'Label' est sélectionné dans le champ Result processing. |
Exemples d'utilisation des paramètres
- Le cas d'utilisation 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 :
- Pattern -
node_disk_usage_bytes{path="/var/db"} - Result processing - sélectionnez 'value'
- Vous pouvez également être intéressé par la valeur moyenne de tous les
paramètres
node_disk_usage_bytes:
- Pattern -
node_disk_usage_bytes - Result processing - sélectionnez 'avg'
- Bien que Prometheus ne prenne en charge que les données numériques, il est courant d'utiliser une astuce permettant également de renvoyer la description textuelle pertinente. Cela peut être réalisé avec un filtre et en spécifiant le libellé. Ainsi, pour renvoyer la valeur du libellé 'color' à partir 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 :
- Pattern -
elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1 - Result processing - sélectionnez 'label'
- Label - spécifiez 'color'
Le filtre (basé sur la valeur numérique '1') correspondra à la ligne appropriée, tandis que le libellé 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 to JSON renverra exactement cela.
Pour plus de détails, consultez 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 PromQL et le langage de requête de prétraitement Prometheus de Zabbix.
| Sélecteur de vecteur instantané PromQL | Prétraitement Prometheus de Zabbix | |
|---|---|---|
| Différences | ||
| Cible de la requête | serveur Prometheus | Texte brut au format d'exposition Prometheus |
| Renvoie | Vecteur instantané | Valeur de métrique ou de libellé (modèle Prometheus) Tableau de métriques pour une valeur unique en JSON (Prometheus vers JSON) |
| Opérateurs de correspondance des libellés | =, !=, =\~, !\~ | =, !=, =\~, !\~ |
| Expression régulière utilisée dans la correspondance du nom de libellé ou de métrique | RE2 | PCRE |
| Opérateurs de comparaison | Voir la liste | Seul == (égal) est pris en charge pour le filtrage des valeurs |
| Similitudes | ||
| Sélection par nom de métrique égal à une chaîne | <nom de métrique> ou {__name__="<nom de métrique>"} | <nom de métrique> ou {__name__="<nom de métrique>"} |
| Sélection par nom de métrique correspondant à une expression régulière | {__name__=\~"<regex>"} | {__name__=\~"<regex>"} |
| Sélection par valeur de <nom de libellé> égale à une chaîne | {<nom de libellé>="<valeur de libellé>",...} | {<nom de libellé>="<valeur de libellé>",...} |
| Sélection par valeur de <nom de libellé> correspondant à une expression régulière | {<nom de libellé>=\~"<regex>",...} | {<nom de libellé>=\~"<regex>",...} |
| Sélection par valeur égale à une chaîne | {__name__=\~".*"} == <valeur> | {__name__=\~".*"} == <valeur> |