Munin plugin, пример.

28 декабря, 2011 · Posted in Без рубрики · 1 Comment 

Так получилось, что однажды, в целях ознакомления, поставленная система мониторинга Munin покорила меня своей простотой. С тех пор я нею и пользуюсь.

После недавних работ с геймсервером (была снесена FreeBSD, установлен CentOS), мунин законно встал и тут.

Захотелось анализировать загруженность игровых серверов. Полез делать плагин для Munin.

Что имеется:

  1. 3 игровых сервера
  2. Мониторинг серверов: lgsl
  3. Munin

Пишем плагин.

Для упрощения, я разбил систему информирования на составляющие. Т.е. для каждого сервера выдачу количества игроков на сервере ведет свой скрипт.

Код одного из таких скриптов, назовем его server1.sh:


#!/usr/bin/php
<?php
error_reporting(0);
require "/www/lgsl2/lgsl_files/lgsl_class.php";
$server_list = lgsl_query_cached_zone($lgsl_config['players'][0] ? "sp" : "s", 0);

$server_list = lgsl_sort_servers($server_list);

// print_r($server_list);

$results=$server_list[1]['s'];

//номер сервера узнаем из таблицы мониторинга lgsl

echo $results['players'];  //выводит количество игроков на этом сервере

?>

Делаем скрипт исполняемым:

chmod +x server1.sh

Проверяем выдачу результатов работы скрипта.

Делаем скрипты server2.sh и server3.sh и идем писать плагин.

В директории /usr/share/munin/plugins я взял первый плагин, который не использовал и заменил (а также переименовал) его содержимое на:


#!/bin/bash

if [ "$1" = "config" ]; then

echo 'graph_title MegaStyle game servers players'
 echo 'graph_args --base 1000 -r --lower-limit 0 --upper-limit 50'
 echo 'graph_vlabel players'
 echo 'player.label Red Orchestra players'
 echo 'tfplayer.label Team Fortress2 players'
 echo 'q3player.label Quake3 players'
 echo 'graph_category games'
exit 0
fi

echo "player.value" $(/www/lgsl2/server1.sh)
 echo "tfplayer.value" $(/www/lgsl2/server2.sh)
 echo "q3player.value" $(/www/lgsl2/server3.sh)

делаем плагин активным:

ln -s /usr/share/munin/plugins/нашплагин /etc/munin/plugins

рестартим ноду:

service munin-node restart

и идем глядеть результат на графике: