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 l'élément maître HTTP soit 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 (Prometheus pattern ou Prometheus to JSON)

Les paramètres suivants sont spécifiques à l'option de prétraitement Prometheus pattern :
| Paramètre | Description | Exemples |
|---|---|---|
| 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 le tableau comparatif), par exemple : <metric name> - sélectionner par nom de métrique {__name__="<metric name>"} - sélectionner par nom de métrique {__name__=~"<regex>"} - sélectionner par nom de métrique correspondant à une expression régulière {<label name>="<label value>",...} - sélectionner par nom de libellé {<label name>=~"<regex>",...} - sélectionner par nom de libellé correspondant à une expression régulière {__name__=~".*"}==<value> - sélectionner 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 toute séquence de caractères UTF-8, mais les caractères barre oblique inverse, guillemet double et saut de ligne doivent être échappés respectivement comme \\, \" 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 retourner 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 - retourner la valeur de la métrique (erreur si plusieurs lignes correspondent) label - retourner la valeur du libellé indiqué dans le champ Label (erreur si plusieurs métriques correspondent) sum - retourner la somme des valeurs min - retourner la valeur minimale max - retourner la valeur maximale avg - retourner la valeur moyenne count - retourner le nombre de valeurs Ce champ est disponible uniquement pour l'option Prometheus pattern. |
Voir également les exemples d'utilisation des paramètres ci-dessous. |
| Output | Définissez le nom du libellé (facultatif). Dans ce cas, la valeur correspondant au nom du libellé est retourné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 à retourner la valeur. Pour retourner
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 solution de contournement permettant également de retourner la description textuelle correspondante. Cela peut être réalisé à l'aide d'un filtre et en indiquant le libellé. Ainsi, pour retourner 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 - indiquez « color »
Le filtre (basé sur la valeur numérique « 1 ») correspondra à la ligne appropriée, tandis que le libellé retournera 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 du langage 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__=~".*"} == <value> | {__name__=~".*"} == <value> |