Zabbix - intelligent, flexible, personnalisable - peut tout faire. Ou presque tout. Il serait étrange qu'il ne puisse pas se lier d'amitié avec la téléphonie cloud, surtout lorsque ce dernier dispose d'une API HTTP pratique - utilisez votre santé. Aujourd'hui, nous allons montrer comment configurer Zabbix pour les appels de notification via Voximplant, ce qui peut être très utile en cas d'urgence («il n'y a pas de temps pour expliquer, vous devez appeler - le serveur de combat vient de tomber»).
Basé sur l'image du film "The Matrix" (The Matrix (1999), Warner Bros.)Remarque: le tutoriel suppose que vous disposez déjà d'un Zabbix fonctionnel et qu'un frontend Zabbix est configuré. L'installation initiale de Zabbix n'est pas le but de cet article, les curieux / ayant besoin d'un tel guide peuvent consulter la documentation officielle et / ou google.
Avec quoi nous travaillerons
Notre exemple utilise VDS avec CentOS 7, sur lequel Zabbix 4.2.6 est installé (la dernière version stable au moment de la rédaction). Nous surveillerons le même serveur sur lequel Zabbix fonctionne. Voximplant a besoin d'un compte sur la plateforme et d'un script de traitement des appels pour JS. Et maintenant un peu plus.
Que ferons-nous
Pas de science de fusée, faisons une surveillance très simple qui répond à l'apparition du
fichier / tmp / habrTriggerFile : lorsqu'un tel fichier apparaît, Zabbix contactera Voximplant via l'API HTTP, un script fonctionnera qui appellera le numéro de téléphone spécifié, dites "Attention". Un fichier a été créé sur le serveur. ” et raccrochez. Si vous supprimez / renommez le fichier, puis le renvoyez, il y aura à nouveau un appel. Si vous ne faites rien, il n'y aura qu'un seul appel.
Voximplant
Connectez-vous Ă votre compte (ou
inscrivez-vous ) et créez
l'application habr . Dans l'application, accédez à l'onglet Scénarios et créez un script de
notification avec ce code:
VoxEngine.addEventListener(AppEvents.Started, () => { const call = VoxEngine.callPSTN(" ", " ") call.addEventListener(CallEvents.PlaybackFinished, () => { VoxEngine.terminate() }) call.addEventListener(CallEvents.Connected, () => { setTimeout( () => call.say(". .", Language.RU_RUSSIAN_FEMALE), 1000 ) }) })
Vous pouvez exécuter ce script avec une requête HTTP (et ne pas acheter de numéro de téléphone). N'oubliez pas de substituer les numéros de
téléphone dans
callPSTN : le premier est qui la plateforme appellera, le second est callerid, qui sera affiché sur l'abonné appelé; il peut s'agir soit de votre numéro personnel vérifié sur la plateforme, soit d'un numéro précédemment acheté auprès de Voximplant (attention, les numéros virtuels ne peuvent pas être utilisés). Le script appelle le numéro, après la connexion, il signale qu'un fichier a été créé et raccroche.
Enregistrez le script et accédez à l'onglet Routage pour créer une règle:
Enregistrez la règle et - note - copiez son ID.
Ensuite, vous aurez besoin de clés API, prenez-les
dans la section appropriée du menu principal.
Connaissant les clés d'API et l'ID de règle, vous pouvez les remplacer dans la méthode
StartScenarios de notre API HTTP, cela ressemblera Ă ceci:
https://api.voximplant.com/platform_api/StartScenarios/?account_id=1&api_key=4ed5695e-4690-448r-95e8-3f8f0001287c&rule_id=28
Un peu plus tard, nous utilisons cette requête lors de la configuration de la surveillance, qui peut déjà être lancée.
Zabbix
Saisissez votre interface Zabbix en tant qu'utilisateur (ou administrateur), puis dans la section Configuration - Hôtes, cliquez sur Créer un hôte. Dans le nom, écrivez
localhost , dans les groupes, spécifiez
le groupe de test et cliquez sur Ajouter ci-dessous.
Maintenant, dans la liste des hôtes, vous verrez à la fois le serveur Zabbix par défaut et l'hôte local. À partir de là , nous continuerons de configurer.
La surveillance Zabbix est basée sur une chaîne de 3 entités: Item - Trigger - Action. Les trois liens sont obligatoires, vous devez donc créer chacun d'eux en séquence.
Objet
L'élément est un accumulateur de données, et sans données, la surveillance ne réagira à rien. Pour créer un élément, dans la liste des hôtes, cliquez sur Éléments à droite du nom de l'hôte local. Vous pouvez également cliquer sur le nom d'hôte lui-même et sur l'écran qui s'ouvre, allez dans l'onglet Articles - l'essence est la même. Une fois dans l'onglet Éléments, cliquez sur Créer un élément dans le coin supérieur droit. Entrez le nom -
élément habr , puis cliquez sur Ajouter à côté du champ Clé -
faites défiler vers le bas, nous avons besoin de la clé standard
vfs.file.exists , sélectionnez-la et elle sera remplacée dans le champ Clé. Remplacez le fichier par le chemin actuel, dans notre cas, la clé sera comme ceci:
vfs.file.exists [/ tmp / habrTriggerFile] . Dans le champ Intervalle de mise à jour, définissez 5 s pour que la surveillance réponde plus rapidement lorsque nous créons le fichier sur l'hôte. En bas de la page, cliquez sur Ajouter et voyez immédiatement le nouvel élément.
Déclencheur
Les déclencheurs évaluent les données collectées et lorsqu'ils atteignent le seuil spécifié, ils réagissent - ils démarrent l'action. Sur l'écran avec l'élément créé, accédez à l'onglet Déclencheurs:
Cliquez sur Créer un déclencheur, nommez-le
habr trigger . La valeur du champ Expression est facilement collectée à l'aide du constructeur - le bouton Ajouter. Définissez les paramètres comme dans la capture d'écran et cliquez sur Insérer:
Cliquez sur Ajouter en bas de la page - terminé, le déclencheur est créé.
Action
L'action est une action qui déclenche un déclencheur déclenché. Ouvrez l'onglet Configuration - Actions, cliquez sur Créer une action. Le nom est soudainement -
habr action . Ci-dessous, dans le bloc Nouvelle condition, laissez tout par défaut et ajoutez
habr , par conséquent, le
nom du
déclencheur contient la condition
habr sera obtenue. Cliquez sur Ajouter pour ajouter une condition - elle apparaîtra immédiatement dans le bloc Conditions, voir capture d'écran:
Ici, accédez à l'onglet Opérations, puis dans le bloc Opérations, cliquez sur Nouveau pour ajouter une action. Dans le Type d'opération, sélectionnez Commande à distance, le bloc Liste cible et le champ de saisie Commandes apparaîtront. Dans le bloc Liste cible, cliquez sur Nouveau, la cible par défaut vous sera proposée - Hôte actuel, vous en avez besoin - cliquez sur Ajouter et la cible apparaîtra dans la liste. Dans le champ de saisie, insérez curl + une requête précédemment générée à Voximplant:
curl "https://api.voximplant.com/platform_api/StartScenarios/?account_id=1&api_key=4ed5695e-4690-448r-95e8-3f8f0001287c&rule_id=28"
Ajoutez ensuite cette action (Ajouter en tant que lien), puis cliquez sur le bouton Ajouter pour terminer la création de l'action.
Un point important: nous avons choisi le type d'action de commande à distance, qui est désactivé par défaut dans la configuration de l'agent Zabbix. Pour résoudre ce problème, sur l'hôte, ouvrez la configuration et mettez une valeur de 1 pour EnableRemoteCommands:
vi /etc/zabbix/zabbix_agentd.conf // EnableRemoteCommands = 1
Après cela, redémarrez le service d'agent:
service zabbix-agent restart
Nous commençons la chaîne d'actions
Dans le panneau Zabbix, accédez à la section Surveillance - Problèmes. Bientôt, nous verrons un avertissement ici que le déclencheur a fonctionné.
Sur l'hôte, créez un fichier:
touch /tmp/habrTriggerFile
Après 5 secondes dans le panneau Problèmes, nous verrons un nouveau message; PROBLEM clignotera dans la colonne Status, et si vous cliquez sur l'icône dans la colonne Actions, vous verrez les détails de l'action (la capture d'écran est cliquable):
En cours de route, un appel sera effectué vers le numéro de téléphone que nous avons spécifié dans le script Voximplant.
Basé sur l'image du film "The Matrix" (The Matrix (1999), Warner Bros.)Si vous renommez le fichier,
mv /tmp/habrTriggerFile /tmp/habrTriggerFile_
puis après 5 secondes, le statut du problème deviendra RÉSOLU.
C'est fait! Vous êtes formidable car vous configurez la chaîne d'interaction hôte - Zabbix - Voximplant et, par le même principe, vous pouvez configurer une logique arbitrairement complexe pour les appels de notification.