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 :
https://<prometheus host>/metrics
Il existe deux options de prétraitement des données Prometheus :
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.
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 :
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
/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 :
node_disk_usage_bytes{path="/var/db"}
node_disk_usage_bytes
:node_disk_usage_bytes
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 :
elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1
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').
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.
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> |