Munin plugin, пример.
Так получилось, что однажды, в целях ознакомления, поставленная система мониторинга Munin покорила меня своей простотой. С тех пор я нею и пользуюсь.
После недавних работ с геймсервером (была снесена FreeBSD, установлен CentOS), мунин законно встал и тут.
Захотелось анализировать загруженность игровых серверов. Полез делать плагин для Munin.
Что имеется:
- 3 игровых сервера
- Мониторинг серверов: lgsl
- 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
и идем глядеть результат на графике: