Индикаторы состояния web-сервера

Предлагается 2 простых индикатора, позволяющих определить наскользо загружен web-сервер, на котором располагается сайт. Все индикаторы основаны на выводе команды exec, которая вызывает системные приложения UNIX-подобной операционной системы.

Шкала загрузки сервера

Основана на выводе команды uptime. Считается, что значение этого параметра >1 должно вызывать серьёзную озабоченность.

$ uptime
09:45:01 up  1:52,  3 users,  load average: 0.26, 0.21, 0.09
<?php
/* ============= Замер загрузки сервера ================= */

$load_scale=2; // Масштаб шкалы
// Получение данных об аптайме и загрузке
$load=exec("uptime");
// Выделение текущей загрузки
$load=preg_replace("/^.*average.*?:\s([0-9]+?)\.([0-9]+?)\,\ .*$/","$1.$2",$load);
// Определение цветовой шкалы
$colors=array(
"#aaffaa","#aff7aa","#b7f0aa","#bfe7aa","#c7e0aa",
"#cfd7aa","#d7d0aa","#dfc7aa","#E7c0aa","#F0b7aa",
"#F7aaaa","#FFaa99","#FF9988","#FF8877","#FF7766",
"#ff6655","#ff5544","#ff4433","#ff3322","#ff2211",
"#ff1100","#ee1100","#dd0000","#cc0000","#bb0000",
"#aa0000","#990000");
?>

<!-- Шкала загрузки системы -->
<table border="0"style="
    border-top: 1px #8FFF8F solid;
    border-bottom: 1px #8FFF8F solid;
    border-left: 1px #8FFF8F solid;
    border-right: 1px #8FFF8F solid;
    ">
    <tr>
	<?php foreach($colors as $k=>$v){?>
	<td bgcolor="<?php if($load>=($k/$load_scale))echo $v;?>">
	    &#160;
	</td>
	<?php }?>
	<td>
	    <?php echo $load;?>
	</td>
    </tr>
</table>

Количество процессов web-сервера

Основана на выводе команды ps, выборке строк, содержащих http с помощью grep, и подсчете количества выбранных строк с помощью wc -l

$ ps -A|grep httpd
 4348 ?        00:00:00 httpd
 4356 ?        00:00:00 httpd
 4357 ?        00:00:00 httpd
 4358 ?        00:00:00 httpd
 4359 ?        00:00:00 httpd
 4360 ?        00:00:00 httpd
 4361 ?        00:00:00 httpd
 4362 ?        00:00:00 httpd
 4363 ?        00:00:00 httpd
$ ps -A|grep httpd|wc -l
9
<?php
    // Масштаб шкалы
    $httpd_scale=0.1;
    // Получение данных о колистве процессов web-сервера
    $httpd=exec("ps -A|grep httpd|wc -l");
    $httpd=trim($httpd);
?>

<!-- Шкала количества процессов -->
<table border="0"style="
    border-top: 1px #FF8F8F solid;
    border-bottom: 1px #FF8F8F solid;
    border-left: 1px #FF8F8F solid;
    border-right: 1px #FF8F8F solid;
    ">
    <tr>
	<?php foreach($colors as $k=>$v){?>
	<td bgcolor="<?php if($httpd>=($k/$httpd_scale))echo $v;?>">
	    &#160;
	</td>
	<?php }?>
	<td>
	    <?php echo $httpd;?>
	</td>
    </tr>
</table>

Добавить комментарий