Zabbix Memcache Server ueberwachen

Memcache Statistiken

Der Memcacheserver liefert über das Memcacheprotokoll auch Statistiken aus. Über Telnet oder netcat können Sie die Statistiken auslesen.

(echo stats ; echo quit ) | nc 127.0.0.1 11211

Legen Sie folgendes Shell Skript als Datei memcache.stats.sh an

#!/bin/bash
test -e /bin/nc || (echo "-1";exit)
(echo stats ; echo quit ) | nc 127.0.0.1 11211|grep -w $1|cut -d " " -f3

und binden Sie es als UserParameter in die zabbix_agentd.conf ein

UserParameter=memcache.stats[*],/path/to/memcache.stats.sh $1

Legen Sie nun Items an, welche die Statistikdaten gezielt auslesen. Zabbix memcache.png

Memcache Performance testen

Wenn Sie ermitteln wollen, wie schnell der Memcacheserver schreiben und lesen kann, können Sie folgende Script als UserParameter im Agenten oder als external Script auf dem Zabbix-Server installieren.

#!/usr/bin/php
<?php
// Checks performance and availability of memcache server
// returns 0 if memcache connection fails.
// if writing, reading and deleting works fine, return the time spend on this operations
$value_length = 1024;

$memcached    = $argv[1];
if(isset($argv[2])) { $value_length = $argv[2]; }

$key   = 'zabbix_test'.rand(1000,9999);
$value = rand_text($value_length);

ini_set('error_reporting',NULL );
$start = microtime(TRUE);
$memcache = new Memcache;
$memcache->connect($memcached, 11211)   or die('0');
$memcache->add($key, $value, false, 90) or die('0');
if( $memcache->get($key) == $value )
{
    $memcache->delete($key)             or die('0');
    echo microtime(TRUE)-$start."\n";
}
else
{
    die('0');
}

function rand_text($length)
{
    $return = NULL;
    while(strlen($return)<$length)
    {
        $alphanum = "abcdefghijkmnpqrstuvwxyz23456789";
        $return  .= substr(str_shuffle($alphanum), 0, 1);
    }
    return $return;
}