Информация о сервере ServerInfo
Каждый системный администратор хотел был знать, что происходит у него на сервере. Например: какая средняя нагрузка на процессор, за сколько времени сайт отдаёт контент, сколько ресурсов потребляют пользователи и боты поисковых систем, какие коды ошибок выдаёт тот или иной сайт. Желательно было бы детализировать эту информацию по минутам и иметь возможность посмотреть данные за последний: час, день, месяц.
С этой целью была написана программа ServerInfo, которая анализирует логи nginx и сохраняет их данные в базу, с интервалом в минуту. В результате мы можем обратиться к этой базе и посмотреть, что происходит на сервере.
Интерфейс системы ServerInfo представляет собой список сайтов, находящихся на сервере и выбор временного интервала. По умолчанию отображается информация для всего сервера, но можно выбрать каждый сайт.
Ниже представлены графики:
- CPU time. Total: 87.57; Average: 1.46. Сколько серверного времени затрачено и средняя загрузка сервера.
- Request time total — 3566.82 sec. Bots time — 1452.03 sec. (40.71%). User time — 2114.79 sec. (59.29%). Общее серверное время, в секундах, затраченное на пользователей и ботов.
- Request total count — 16781. Bots count — 3807 (22.69%). Users count — 12974 (77.31%). Количество обращений к серверу от ботов и пользователей.
- One request time. Total avg — 0.21 sec. Bots avg — 0.4 sec. User avg — 0.16 sec. Время обработки одного запроса для ботов и пользователей, в секундах.
- Satus: 200 (14073 — 83.86%). 301 (1848 — 11.01%). 302 (532 — 3.17%). Статусы основных кодов.
- Satus other: 201 (1 — 0.01%). 304 (41 — 0.24%). 400 (1 — 0.01%). 403 (23 — 0.14%). 404 (170 — 1.01%). 444 (51 — 0.3%). 499 (11 — 0.07%). 500 (30 -0.18%). Статусы остальных кодов и ошибок.
Под графиками находится таблица, в которой сведены все вышеперечисленные показатели.
Установка
- Задать формат логов nginx в соответствии с шаблоном:
log_format main '$proxy_add_x_forwarded_for|$time_local|'
'$status|$request_length|$bytes_sent|$request_time|'
'$request|$http_referer|$http_user_agent|$host';
Пример лога, который должен получиться, можно посмотреть в папке logtest/access.log. - Скопировать config_sample.php как config.php
- Создать новую базу данных, с именем, указанным в config.php
- Запустить install.php
- Настроить задание cron для файла cron.php, с выполнением каждую минуту:
0-59 * * * * wget -O - -q http://yoursite/cron.php > /dev/null
Где скачать
Скачать данный скрипт можно с репозитория BitBucket:
Your humor made this an enjoyable read, on top of being super informative.
Thanks for the informative content.
Your blog is a treasure trove.