Création d'un modèle pour Zabbix en utilisant le DVR Trassir SDK comme exemple

Le modèle a pour but d'automatiser la surveillance des serveurs d'un système de vidéosurveillance basé sur les bureaux d'enregistrement Trassir sous le contrôle du même logiciel basé sur linux via le serveur web SDK.

Le SDK Trassir est inclus dans les paramètres du serveur Web, vous devez également y spécifier un mot de passe. Selon la documentation du fabricant, vous n'avez pas besoin de créer un compte distinct pour effectuer des lectures sur le serveur.

Trassir SDK offre un accès à l'état du serveur via une demande

https://{ip   }:{ }/health?password={ SDK} 

Lorsque vous ouvrez ce lien via un navigateur, un message apparaît indiquant que le certificat utilisé n'est pas sûr et vous devez suivre les instructions du navigateur pour continuer.

Pour un exemple spécifique, dans le corps de la réponse, nous obtenons ce qui suit:

 { "disks": "1", "database": "1", "channels_total": "13", "channels_online": "13", "uptime": "882232", "cpu_load": "33.96", "network": "1", "automation": "1", "disks_stat_main_days": "16.41", "disks_stat_priv_days": "0.00", "disks_stat_subs_days": "16.41" } /* Meanings of values: -1 - undefined value 0 - bad health (error) 1 - good health (ok) Values for channels are channel counters. Value of cpu_load is given in percents. 

La première partie de la sortie du caractère {vers le caractère} correspond à la documentation et est une sortie au format JSON normalisé, qui correspond à la documentation, puis il y a une description de la sortie, qui ne correspond pas à la norme.

Auparavant, pour utiliser cette sortie dans le système de surveillance Zabbix, vous deviez écrire votre propre script, qui serait utilisé sur l'agent et obtiendrait les données nécessaires. Avec cette approche, vous devez soit stocker le fichier de réponses et surveiller sa pertinence, soit demander chaque élément séparément, c'est-à-dire utilisez 11 requêtes au lieu de 1.

Dans la version Zabbix 4.0, un type d'élément de données d'agent est apparu, qui permet de recevoir des données via les protocoles http et https et de les traiter, ainsi que des éléments dépendants, qui sont calculés à partir des principaux.

L'idée est d'obtenir une réponse du serveur dans un élément de données texte, puis de sélectionner les éléments de données nécessaires à partir de celui-ci.

Dans un premier temps, nous définirons des macros pour le numéro de port et le mot de passe pour la polyvalence et la sécurité de notre modèle.

Nous créons un modèle et ajoutons un élément de données avec le type «agent HTTP», une clé comme vous le souhaitez, l'URL https: // {HOST.IP}: {$ TRASSIR_SDK_PORT} / health et le champ de demande de mot de passe {$ TRASSIR_SDK_PASS}. Ici {HOST.IP} est une macro qui, lors de l'ajout d'un modèle à l'hôte, sera convertie en l'adresse IP de l'hôte.

Comme nous l'avons déjà découvert expérimentalement plus tôt, cette demande n'est pas entièrement conforme au format JSON, et elle ne fonctionne tout simplement pas pour en extraire des données.

Nous allons utiliser la nouvelle fonctionnalité Zabbix et ajouter l'expression régulière \ {(\ n |.) * \} Dans l'onglet "prétraitement" du modèle d'élément de données avec la sortie \ 0 qui renverra uniquement les données au format JSON.

Peu importe pourquoi il en est ainsi
Développer de telles expressions pour les débutants est beaucoup plus facile dans l' éditeur visuel . Dans cette expression, nous recherchons un caractère spécifique de l'accolade ouvrante, et puisque dans les expressions régulières ces crochets sont utilisés, il est nécessaire de spécifier une barre oblique inverse avant le caractère. Il peut y avoir des caractères (en fait, non, mais omettons ce moment) dans les données JSON, ainsi qu'un saut de ligne. Ces options de caractères qui indiquent un point ou un caractère de contrôle de saut de ligne \ n sont indiquées entre parenthèses avec une barre verticale. Derrière les crochets, un astérisque indique que le caractère ou le saut de ligne trouvé peut être répété un nombre infini de fois. Vient ensuite l'accolade de fermeture. La sortie \ 0 signifie que toutes les séquences trouvées seront affichées.

Ensuite, un élément de données dépendant est créé pour lequel l'élément de données principal est indiqué la réponse reçue plus tôt au format JSON et le prétraitement est indiqué avec l'étape "Chemin JSON" qui vous permet d'accéder à n'importe quel élément de données en spécifiant le chemin JSON. Dans notre exemple, toutes les données sont au niveau supérieur, nous spécifions donc $ .disks et ainsi de suite pour tous les éléments.

Il ne reste plus qu'à créer des déclencheurs qui vérifieront les nouvelles données, leur entrée dans des plages normales, ainsi que des graphiques optionnels.

Il s'avère que nous avons très facilement et rapidement par des méthodes régulières de Zabbix reçu des données d'un système externe, dont la sortie n'est pas entièrement conforme à la norme. L'absence de scripts externes simplifie la compréhension du système de surveillance et augmente la facilité de maintenance.

Le modèle spécifié est disponible sur le portail d'échange share.zabbix.com .

Source: https://habr.com/ru/post/fr430534/


All Articles