Monitoreando memcache desde cacti con php

June 19, 2008 – 12:31 am

Hace unos dias tuve la necesidad de comenzar a monitorear remotamente desde cacti mi servidor memcache.

En principio pense utilizar la implementacion original del script pero me surgio el inconveniente que este script requiere python para acceder al servidor memcache, mi primera intencion fue instalar todo lo necesario para correr el script anterior, pero como el servidor ya estaba muy “toqueteado” (y no por mi) preferi no meterme de mas con la instalacion de python (y todas sus dependecias) ya que en Centos el YUM corre con python.


En resumen, si dejaba sin andar python rompia YUM y dejaba el servidor unitilizable.

Me puse a investigar un poco el script utilzado en python, y decidi hacer mi propia implementacion en PHP, que no es gran cosa, pero que tampoco encontre por ahi.

Lo necesario para utilzar este script es:

  • PHP (obvio)
  • la Extension PHP-MCC (desde PECL )

Esta es la implementacion que realice, hace exactamente lo mismo que la que esta en python. Detalles: por ahora tiene el puerto fijo, cosa que solucionare en una version posterior.

Aca te adjunto un zip que contiene el script junto con el template necesario listo para salir andando en cualquier CACTI.

Que si es confiable? Bueno, para probarlo bien lo puse en paralelo en otro servidor al cual si le funcionabe python y junto con la implementacion original se obtuvieron exatamente los mismos valores, osea 100% de confiabilidad.

<?php

if (!count($argv) > 1) {

die (‘please give me the server address’);

}

define (‘MMC_PORT’, 11211);

$memcache_obj = new Memcache;

$memcache_obj->addServer($argv[1], MMC_PORT);

$stats = $memcache_obj->getExtendedStats();

$array_key = ;

$var = $key = null;

$array_key = $argv[1].‘:’.MMC_PORT;

$tmp = array();

foreach ($stats[$array_key] as $key => $val) {

$var = $var ? $var : 0;

$tmp[] = "$key:$val";

}

echo implode(‘ ‘, $tmp);

?>

Ahh, casi si olvido el archivo cacti-php-memcache.zip

Post a Comment