mod_status
Homepage: Apache Module mod_status
mod_status — это модуль, который генерирует специальную страницу с подробной информацией про веб-сервер, системные ресурсы, текущие запросы и скорость их обработки.
Если скрипты на ваших сайтах обрабатываются модулями вроде mod_php или mod_perl, то команды top и ps выведут только процессы httpd. В этом случае, проследить стандартными средствами системы, какой именно из скриптов потребляет системные ресурсы, уже невозможно. Этой информацией располагает только Apache, а администратор может её получить с помощью модуля mod_status.
mod_status предоставляет следующие сведения:
- количество процессов, обрабатывающих запросы;
- количество процессов в состоянии ожидания;
- статус каждого процесса, число обработанных запросов и переданных байт;
- общее число запросов и переданных байт;
- время, когда сервер был запущен/перезапущен и сколько он уже работает (uptime);
- среднее число запросов/сек, байт/сек и байт/запрос;
- текущее использование CPU каждым процессом отдельно и Apache в целом (в процентах);
- текущие посетители и их запросы.
Выведем эту эту информацию по определенному адресу, обозначив для Location обработчик server-status.
# 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>
Если вы хотите собирать эту информацию для статистики или построить график, существует специальная версия страницы для использования в скриптах. Она доступна по адресу вида: http://example.com/server-status?refresh=2.
mod_status - скрипт сортирующей по IP клиента
PHP скрипт вытягивает get запросом данные mod_status и преобразует его в массив языка PHP. Далее эти данные сортируются по IP клиента при помощи пользовательской функции для uasort.
- 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>
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах