Un petit billet sur le monitoring de PHP-APC avec Zabbix.

Scripts web

Deux scripts PHP sont à placer dans le répertoire de votre serveur Web :

root@www:/var/www# cat apc-stats_mem.php
<?php print(serialize(apc_sma_info())); ?>
root@www:/var/www# cat apc-stats.php
<?php print(serialize(apc_cache_info('',true))); ?>

Script de monitoring Zabbix

Au niveau du monitoring, un nouveau script PHP va se charger de récupérer les valeurs actuelles d’APC :

root@www:/etc/zabbix/scripts# cat apc.php
<?php
$url_stats = "http://localhost/apc-stats.php";
$url_memstats = "http://localhost/apc-stats_mem.php";

$results = file_get_contents($url_stats);
if ($results == "")
   exit(1);

$results = unserialize($results);
$num_hits = $results["num_hits"];
$num_misses = $results["num_misses"];
$hits_ratio = $num_hits / ($num_hits + $num_misses) * 100;
$entries = $results["num_entries"];

$results = file_get_contents($url_memstats);
if ($results == "")
   exit(1);

$results = unserialize($results);
$mem_used = $results["seg_size"] * $results["num_seg"] - $results["avail_mem"];
$mem_available = $results["avail_mem"];

echo("num_hits=$num_hits\n");
echo("num_misses=$num_misses\n");
echo("hits_ratio=$hits_ratio\n");
echo("entries=$entries\n");
echo("mem_used=$mem_used\n");
echo("mem_available=$mem_available\n");
?>

Configuration de l’agent Zabbix

Reste à modifier l’agent Zabbix en y insérant les nouveaux paramètres :

root@www:/etc/zabbix# nano zabbix_agentd.conf
UserParameter=apc.num_hits,/usr/bin/php /etc/zabbix/scripts/apc.php|grep num_hits|cut -d"=" -f2
UserParameter=apc.num_misses,/usr/bin/php /etc/zabbix/scripts/apc.php|grep num_misses|cut -d"=" -f2
UserParameter=apc.hits_ratio,/usr/bin/php /etc/zabbix/scripts/apc.php|grep hits_ratio|cut -d"=" -f2
UserParameter=apc.entries,/usr/bin/php /etc/zabbix/scripts/apc.php|grep entries|cut -d"=" -f2
UserParameter=apc.mem_used,/usr/bin/php /etc/zabbix/scripts/apc.php|grep mem_used|cut -d"=" -f2
UserParameter=apc.mem_available,/usr/bin/php /etc/zabbix/scripts/apc.php|grep mem_available|cut -d"=" -f2