Различия

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


mod_status [2025/07/06 12:39] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 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>

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!