Чтобы отслеживать HTTP-ошибки в логах IIS более всего подойдет стек ELK, ведь этот набор инструментов специально заточен для задачи парсинга логов. Тем не менее, если есть потребность в подсчете количества появления только одной определенной ошибки (например 404 или др.), а поднимать ELK нет никакого желания и возможности, можно использовать всем знакомый Zabbix.
Если вам интересна тематика ZABBIX, рекомендую обратиться к основной статье – Система мониторинга ZABBIX, в ней вы найдете дополнительную информацию.
HTTP-ошибки в логах IIS
Чтобы было более понятно, приведу пример одной строчки лога IIS:
1 |
2018-06-20 00:00:16 ::1 RPC_IN_DATA /rpc/rpcproxy.dll EXCH01.sc.local:6001&RequestId=c36b439b-44a8-4146-9615-41d165c8ff75 81 - ::1 MSRPC - 401 1 2148074254 0 |
Цифра 401 в самом конце и есть код ответа веб-сервера, он мне и нужен.
Подготовка
Скачать шаблон вместе со скриптом вы можете из моего репозитория на Github (каталог windows_iis_log_checker). Как это сделать, смотрите в официальной документации 1.
Скрипт написан на Python, поэтому нужно его установить (качайте с официального сайта).
Особенности работы
Особенности работы скрипта:
- Поддерживается ротация логов, но не чаще, чем 1 раз в промежутке между запусками скрипта;
- Хранится имя текущего лог-файла и номер последней проанализированной строки внутри него;
- Если скрипт запускается в первый раз, он не анализирует ничего, а только запоминает номер последней строчки в самом свежем лог-файле. При следующем запуске он проанализирует только добавившийся объем данных.
На момент написания статьи скрипт находится в бета-версии, поэтому о поддержке расширенного функционала речь пока не идет.
Установка
Задачи по установке нужно выполнить как на целевом хосте, так и на сервере Zabbix. На стороне хоста выполняем:
- Копируем iis_log_checker.py в удобную для вас папку и запоминаем полный путь;
- В самый конец конфигурационного файла агента добавляем пользовательские параметры (одна ошибка IIS – один параметр), либо закидываем файл iis_log_checker.conf (не забудьте изменить пути и номера ошибок) в каталог, который определен в параметре Include= конфигурации вашего агента Zabbix;
- Перезапускаем агента.
Заходим на Zabbix Server:
- Импортируем шаблон iis_log_checker.xml;
- Подключаем шаблон к нужным хостам.
Установка завершена.
Пример
Для каждой отслеживаемой ошибки IIS в каталоге с iis_log_checker.py создаются файлы, которые хранят имя текущего лог-файла и позицию внутри него:
График Zabbix отображает количество новых строчек в логе с нужной вам ошибкой с момента предпоследнего запуска скрипта:
Решайте сами что можно сделать с этими ошибками. Например по количеству кодов возврата 200 можно определять интенсивность обращений к сайту. Ещё раз повторюсь, что шаблон решает очень узкую задачу в условиях заранее ограниченной по масштабу инфраструктуре.
Notes: