Zabbix : script de notification d'alertes XMPP / Jabber

Boris HUISGEN
Boris HUISGEN
|

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];

// 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 :

Zabbix : media XMPP

Je vous laisse le soin de l’associer à une action. Voici ce que j’obtiens comme notification sur mon poste avec Growl :

Zabbix : alertes XMPP

Boris HUISGEN
Boris HUISGEN
Blog owner
  • #jabber
  • #xmpp
  • #zabbix