Инструменты пользователя

Инструменты сайта


mod_status

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

mod_status [2014/03/03 10:36] (текущий)
Строка 1: Строка 1:
 +====== mod_status ======
 +Homepage: [[http://​httpd.apache.org/​docs/​2.2/​mod/​mod_status.html|Apache Module mod_status]]
  
 +**mod_status** — это модуль,​ который генерирует специальную страницу с подробной информацией про веб-сервер,​ системные ресурсы,​ текущие запросы и скорость их обработки.
 +
 +Если скрипты на ваших сайтах обрабатываются модулями вроде mod_php или mod_perl, то команды top и ps выведут только процессы httpd. В этом случае,​ проследить стандартными средствами системы,​ какой именно из скриптов потребляет системные ресурсы,​ уже невозможно. Этой информацией располагает только Apache, а администратор может её получить с помощью модуля mod_status.
 +
 +mod_status предоставляет следующие сведения:​
 +
 +  * количество процессов,​ обрабатывающих запросы;​
 +  * количество процессов в состоянии ожидания;​
 +  * статус каждого процесса,​ число обработанных запросов и переданных байт;
 +  * общее число запросов и переданных байт;
 +  * время, когда сервер был запущен/​перезапущен и сколько он уже работает (uptime);
 +  * среднее число запросов/​сек,​ байт/​сек и байт/​запрос;​
 +  * текущее использование CPU каждым процессом отдельно и Apache в целом (в процентах);​
 +  * текущие посетители и их запросы.
 +Выведем эту эту информацию по определенному адресу,​ обозначив для Location обработчик server-status.
 +<​file>​
 +# nano /​etc/​apache2/​mods-available/​status.conf
 +
 +<​IfModule mod_status.c>​
 +ExtendedStatus On
 +<​Location /​server-status>​
 +    SetHandler server-status
 +    Order deny,allow
 +    Deny from all
 +    Allow from localhost ip6-localhost
 +#    Allow from .example.com
 +</​Location>​
 +
 +</​IfModule>​
 +
 +</​file>​
 +
 +Если вы хотите собирать эту информацию для статистики или построить график,​ существует специальная версия страницы для использования в скриптах. Она доступна по адресу вида: http://​example.com/​server-status?​refresh=2.
 +====== mod_status - скрипт сортирующей по IP клиента ======
 +PHP скрипт вытягивает [[GET]] запросом данные mod_status и преобразует его в массив языка PHP. Далее эти данные сортируются по IP клиента при помощи пользовательской функции для uasort.
 +<file php apache_status.php>​
 +<?php
 +$url = '​http://​example.com/​server-status';​
 +$stat = file_get_contents($url);​
 +
 +// результат с тегами <​table></​table>​. Весь шаблон.
 +preg_match('​|<​table(.*)</​table>​|Uis',​ $stat, $matches);
 +
 +// получаем массив строк
 +preg_match_all('​|<​tr(.*?​)</​tr>​|s',​ $matches[0],​ $matches);
 +
 +$arr_td = array();
 +$arr_tr = array();
 +
 +foreach ($matches[0] as $value) {
 +    preg_match_all('​|<​td.*?>​(.*?​)</​td>​|s',​ $value, $matches);
 +
 +    foreach ($matches[0] as $v) {
 +        $arr_td[] = strip_tags($v);​
 +    }
 +    if (!empty($arr_td)) {
 +        $arr_tr[] = $arr_td;
 +    }
 +
 +    $arr_td = array();
 +}
 +
 +function cmp($a, $b) {
 +    if ($a['​10'​] == $b['​10'​]) {
 +        return 0;
 +    }
 +    return ($a['​10'​] < $b['​10'​]) ? -1 : 1;
 +}
 +
 +$data_tmp = array();
 +for ($i = 0; $i < 1000; $i++) {
 +    $data_tmp = $arr_tr;
 +    uasort($data_tmp,​ '​cmp'​);​
 +}
 +?>
 +<table border="​1">​
 +    <​thead>​
 +        <tr>
 +            <​th>​0</​th>​
 +            <​th>​1</​th>​
 +            <​th>​2</​th>​
 +            <​th>​3</​th>​
 +            <​th>​4</​th>​
 +            <​th>​5</​th>​
 +            <​th>​6</​th>​
 +            <​th>​7</​th>​
 +            <​th>​8</​th>​
 +            <​th>​9</​th>​
 +            <​th>​10</​th>​
 +            <​th>​11</​th>​
 +            <​th>​12</​th>​
 +        </tr>
 +    </​thead>​
 +    <​tbody>​
 +        <?php
 +        foreach ($data_tmp as $value) {
 +            echo '<​tr>';​
 +            echo '<​td>'​ . $value[0] . '</​td>';​
 +            echo '<​td>'​ . $value[1] . '</​td>';​
 +            echo '<​td>'​ . $value[2] . '</​td>';​
 +            echo '<​td>'​ . $value[3] . '</​td>';​
 +            echo '<​td>'​ . $value[4] . '</​td>';​
 +            echo '<​td>'​ . $value[5] . '</​td>';​
 +            echo '<​td>'​ . $value[6] . '</​td>';​
 +            echo '<​td>'​ . $value[7] . '</​td>';​
 +            echo '<​td>'​ . $value[8] . '</​td>';​
 +            echo '<​td>'​ . $value[9] . '</​td>';​
 +            echo '<​td>'​ . $value[10] . '</​td>';​
 +            echo '<​td>'​ . $value[11] . '</​td>';​
 +            echo '<​td>'​ . $value[12] . '</​td>';​
 +            echo '/<​tr>';​
 +        }
 +        ?>
 +    </​tbody>​
 +</​table>​
 +</​file>​
загрузка...
mod_status.txt · Последние изменения: 2014/03/03 10:36 (внешнее изменение)