Zabbix : script de notification d’alertes XMPP / Jabber
- Jeudi 19 août 2010
- Publié dans Administration
- Par Boris HUISGEN
- Ecrire
Zabbix intégre le support de notifications par protocole XMPP / Jabber. Pour autant, en fonction du serveur XMPP, les notifications peuvent ne pas fonctionner. Ceci a été mon cas, probablement car le serveur jabber utilisé n’accepte que les connexions sécurisées. Ne pouvant pas le changer (la gestion par LDAP étant nécessaire), j’ai donc dû testé différentes librairies Perl, Python, etc pour en arriver à celle qui marche : xmpphp. Je vous fait part de cette configuration et des scripts nécessaires.
L’installation des scripts se fait dans le répertoire spécifié par l’option de configuration AlertScriptsPath de Zabbix. Ici, il s’agit de mon côté /etc/zabbix/alertscripts/. Je débute par xmpphp :
# cd /tmp/ # wget http://xmpphp.googlecode.com/files/xmpphp-0.1rc2-r77.tgz # tar xzf xmpphp-0.1rc2-r77.tgz # mv xmpphp-0.1rc2-r77/XMPPHP /etc/zabbix/alertscripts/
Puis les deux scripts à mettre en place, le script PHP et le script shell appelé par Zabbix (celui-ci ne peut appeler que des scripts shell) :
# more /etc/zabbix/alertscripts/sendxmpp.php
<?php
include 'XMPPHP/XMPP.php';
if ($_SERVER[argc] < 3)
die ("Not enough arguments.");
$sendto = $_SERVER[argv][1];
$subject = $_SERVER[argv][2];
$message = $_SERVER[argv][3];
// TODO: change your server settings and IM sender
$conn = new XMPPHP_XMPP('jabber.my.domain', 5222, 'zabbix', 'mot_de_passe',
'xmpphp', 'my.domain', $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO);
try
{
$conn->connect();
$conn->processUntil('session_start');
$conn->presence();
$conn->message($sendto, $message);
$conn->disconnect();
}
catch(XMPPHP_Exception $e)
{
die($e->getMessage());
}
# more /etc/zabbix/alertscripts/sendxmpp.sh
#!/bin/sh /usr/bin/php /etc/zabbix/alertscripts/sendxmpp.php "$1" "$2" "$3"
Au niveau de la configuration du serveur Zabbix, un nouveau média doit être créé. Il doit être de type script et pointer sur /etc/zabbix/alertscripts/sendxmpp.sh :
Je vous laisse le soin de l’associer à une action. Voici ce que j’obtiens comme notification sur mon poste avec Growl :


j’ai fait la meme manip la semaine dernière mais j’en était resté aux scripts perl. Faut que je trouve le temps de continuer mes tests
Tiens au passage, il me rappelle qqchose ce vieux lenny :)