Мониторинг игровых серверов

Категория: / DEV Блог / Разное
В продолжение этой статьи.

Мониторинг серверов (всех, которые поддерживает qstat) на php.

$regexp = '~([\d\.]+)\s*([\d\/]+)\s*([\S]+)\s*(\d+\s\/\s\d+)\s*([\S]+)~s';
 
$out_ = array();
 
$m_ = array();
// check q3
$s = `/usr/local/bin/qstat -nh -q3s 127.0.0.1`;
preg_match($regexp,$s,$m_);
$m_[0]='Quake 3'; $out_[]=$m_;
 
$m_ = array();
// check q2
$s = `/usr/local/bin/qstat -nh -q2s 127.0.0.1`;
preg_match($regexp,$s,$m_);
$m_[0]='Quake 2'; $out_[]=$m_;
 
$m_ = array();
// check cs
$s = `/usr/local/bin/qstat -nh -a2s 127.0.0.1`;
preg_match($regexp,$s,$m_);
$m_[0]='CS 1.6'; $out_[]=$m_;
 
// output
 
foreach($out_ as $v) {
    $s_color=intval($v[2])?'green':'red';
    echo "<p style='font-family:monospace;margin-bottom:8px;'>"
    ."<u style='display:block;margin-bottom:4px;'><b>{$v[0]}</b> ({$v[1]})</u>"
    ."Игроков : <span style='color:{$s_color};font-family:monospace;'>{$v[2]}</span><br/>"
    ."Карта : {$v[3]}<br/>"
    ."Пинг : {$v[4]}<br/>"
    ."Мод : {$v[5]}<br/>"
    ."</p>";
}


Код легко модифицируется под любые потребности.

Применение его несет следующие трудности:
- при падении проверяемого сервера скрипт будет долго "думать"
- при нагруженном веб сервере результаты необходимо кэшировать, чтобы не создавать лишнюю нагрузку вызовом программы qstat