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

Sphinx это система полнотекстового поиска c поддержкой таких баз данных как MySQL и PostgreSQL. Он обычно используется на проектах с большой нагрузкой, поскольку обладает высокой скоростью поиска и масштабируемостью.

Для наблюдения за Sphinx можно использовать MRTG. Наиболее интересными параметрами для наблюдения являются количество обрабатываемых tcp-соединений и количество выполняемых запросов. Далее будет показано как можно организовать такой мониторинг.

Забирать данные о состоянии Sphinx мы будем вот таким скриптом:

#!/usr/local/bin/php
SetServer($host, 9312);

// Получаем статус во временный массив
$data_tmp = $sph->Status();

// Препарируем временный массив
$data = array();
foreach ($data_tmp as $item) {
    $data[$item[0]] = $item[1];
}

// Отображаем результат
print "{$data['connections']}\n";
print "{$data['queries']}\n";
print "{$data['uptime']}\n";
print "$host\n";



Далее добавляем в файл конфигурации MRTG вот такие строки:

Target[sphinxsearch]: `/usr/local/scripts/mrtg_sphinxsearch.php sphinx.example.com`
MaxBytes[sphinxsearch]: 1
Title[sphinxsearch]: sphinxsearch statistics
PageTop[sphinxsearch]: 

sphinxsearch statistics

AbsMax[sphinxsearch]: 1250000 Options[sphinxsearch]: integer,nopercent,nobanner,growright,dorelpercent,perhour YLegend[sphinxsearch]: per second ShortLegend[sphinxsearch]: per second Legend1[sphinxsearch]: Connections per second Legend2[sphinxsearch]: Queries per second



Полученный график будет выглядеть примерно так:

Здесь синяя линия это число запросов, обрабатываемых ежесекундно а зелёная - число tcp-соединений. Жёлтая линия показывает соотношение этих двух показателей и является косвенным показателем эффективности использования соединений со sphinx: запросы, выполняемые в рамках одного tcp-соединения выполняются немного быстрее, потому чем ниже эта линия - тем эффективнее используется каждое tcp-соединение.

Ещё одной интересной особенностью Sphinx является реализация в нём протокола MySQL, позволяющая обращаться к Sphinx любому MySQL-клиенту и получать результаты используя SQL-подобный язык запросов (SphinxQL). Чтобы использовать эту возможность в файле конфигурации сервиса в секции "searchd" должна присутствовать строка:

listen = 0.0.0.0:9306:mysql41



Если вы используете Sphinx именно таким образом, то скрипт получения данных для MRTG будет выглядеть так:

#!/usr/bin/php



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

Оригинал




Вас также может заинтересовать:

Мониторинг Nginx с помощью MRTG
Мониторинг количества активных хостов в сети
Настройка параметров файловой системы с помощью tune2fs
Оптимизация MySQL запросов с помощью Neor Profile SQL
Простой мониторинг нагрузки на сервер в реальном времени с веб-интерфейсом
NRPE - мониторинг удаленных (недоступных извне) серверов средствами Nagios