Мониторинг memcached с помощью MRTG

На больших программных проектах для кэширования данных часто используется сервис изначально разработанный Бредом Фитцпатриком для созданного им же сервиса livejournal.com. Отличительными особенностями являются высокая скорость работы и простота взаимодействия. По сути представляет собой реализацию хеш-таблицы (хранит пары ключ-значение) в памяти (после перезапуска сервиса данные теряются) что и обуславливает простоту и скорость работы.

На практике обычно важно следить за эффективностью работы кэша чтобы своевременно находить проблемы и решать их совершенствуя код продукта. Далее будет показано как можно осуществить мониторинг memcached с помощью MRTG.

Для начала немного теории. Обычно memcached используется примерно вот так (пример на псевдокоде):

// Пытаемся получить данные из кэша

$val = memcached_get ($key);

// Если данные не были найдены в кэше

if (!$val) {

// Получаем данные из БД

$val = get_data_from_db ();

// Сохраняем их в кэше

memcached_set ($key, $val)

}

Видно что эффективность кэша можно описать как отношение числа операций чтения к числу операций записи в единицу времени. Чем выше это соотношение — тем эффективнее работает кэш.

Так же можно использовать и обратное соотношение: число операций записи к числу операций чтения за единицу времени. В этом случае чем меньше это соотношение — тем выше эффективность кэша. Для изображения на графиках MRTG этот вариант немного удобнее потому воспользуемся им.

Допустим что у нас есть сервер мониторинга под управлением FreeBSD 8.2 и на нём уже запущен и работает MRTG. Нам надо добавить график, иллюстрирующий работу memcached. Для этого нам понадобится скрипт, который сможет получить статистику работу сервера memcached и отобразить её в нужном для использования MRTG виде.

Скрипт будем писать на PHP. Почему? Просто автору этих строк так проще и удобнее, хотя этот скрипт можно написать практически на любом языке программирования. Для работы скрипта понадобится PHP-модуль -memcache. Установим его:

cd //ports//pecl-memcache

make install clean

Собственно сам скрипт:

#!/usr/local/bin/php

connect ($host, 11211);

// Запрашиваем статистику

$rv = $mcd_obj->getStats ();

// Отображаем её

«{$rv['cmd_set']}\n»;

print «{$rv['cmd_get']}\n»;

print «{$rv['uptime']}\n»;

print «$host\n»;

В качестве параметра скрипт принимает адрес хоста с memcached, с которого надо получить статистику. Важно чтобы у скрипта был доступ на тот хост.

Сохраним скрипт под именем «/usr/local/scripts/mrtg_memcached.php» и сделаем его исполнимым. После этого остаётся только добавить в конфигурацию MRTG примерно такие строки:

Target[memcached]: `/usr/local/scripts/mrtg_memcached.php memcached.example.com`

MaxBytes[memcached]: 1

Title[memcached]: memcached statistics

PageTop[memcached]:

memcached statistics

AbsMax[memcached]: 1250000

Options[memcached]: integer,nopercent,nobanner,growright,dorelpercent

YLegend[memcached]: per second

ShortLegend[memcached]: per second

Legend1[memcached]: writes per second

Legend2[memcached]: reads per second

На этом всё. Приятной работы!

Запись навигация

Top