Зачем и как анализировать логи веб-сервера

Zerox Обновлено: 09.11.2017 Zabbix 27 комментариев 31,810 Просмотры

Введение

Когда происходит взаимодействие через сессию оболочки, имеется множество информации, которую консольная оболочка обрабатывает для определения своего поведения и доступа к сторонним ресурсам. Некоторые из этих настроек находятся в конфигурационных настройках, а другие определены самим пользователем.

Место, в котором оболочка держит пути всех этих настроек, называется окружением. Окружение — это место, которое оболочка определяет каждый раз, когда запускается сессия. В ней заключены переменные, созданные свойствами системы.

Введение

Ранее я рассказывал об использовании утилиты управления упсами марки apc — apcupsd. Я показал, как установить apcupsd на hyper-v и xenserver для корректного завершения работы при отключении электричества. Рекомендую ознакомиться, если вас интересует этот вопрос. Его не всегда получается быстро и удобно решить. На помощь приходит apcupsd.

Указанные конфигурации у меня успешно работают, проверено годами. Я решил настроить отправку оповещений на почту через zabbix при пропадании электричества. Да и просто хочется хранить информацию об инцидентах в одном месте. Почтовые сообщения не всегда будут доставлены, нужно следить, чтобы на резервное питание были подключены все устройства, которые обеспечивают связь с интернетом. Частенько бывает, что при выключении электричества у провайдера так же выключается оборудование и связи нет. Либо ваш свитч, к которому подключен сервер, выключится и сообщение не будет доставлено.

Заранее позаботьтесь об этих вещах. Пишу об этом, потому что сам недавно на одном объекте все запитал от упсов, но забыл про свитч. В итоге об отключении электричества я узнал уже после того, как его вернули назад и сервера автоматически поднялись. Если у вас еще не настроен сервер мониторинга, рекомендую мою подробную статью с видео об установке и настройке zabbix на centos 9 или установка zabbix 3.4 на debian 9.

Читайте также:  Apple выпустила — iOS 12.4 финальная версия для iPhone

Что такое логи Apache

Файлы журналов веб-сервера Apache содержат самую полную информацию о посетителях веб-сайта и запросах, пришедших к серверу. Журналы веб-сервера представляют собой обычные текстовые файлы, в которых хранится информация о сделанных к серверу запросах, в том числе IP адрес, запрошенная страница, статус ответа, информация о ссылающейся страницы (реферер), количество переданных данных, пользовательский агент, дата и время.

Если всё работает нормально, то обычно необходимость в анализе логов отсутствует. К журналам веб-сервера мы обращаемся когда начинаются проблемы, либо для профилактики этих проблем.

С помощью логов Apache можно выловить битые ссылки — найти страницы, на которые ведёт ссылка, но которые отсутствуют на сайте; можно найти IP, User Agent и Referer пользователей, которые создают слишком большую нагрузку на веб-сайт или проявляются странную активность (в случае DoS атак и скликивания рекламы). Анализ журналов даст информацию о профиле посетителей: в какие часы и дни максимальная нагрузка на сервер, какое количество данных передаётся (такую информацию не даст ни один счётчик), из каких стран и городов посетители и прочее.

Кстати, если сравнивать анализ сторонних метрик (например, ) и анализ журналов веб-сервера, то по факту это довольно разные вещи — в логах сервера данных может быть в разы больше, чем покажет сторонняя метрика, поскольку она собирает информацию только со страниц, которые содержат счётчик, из его поля зрения выпадают, например, работа сканеров по поиску скрытых файлов и папок на сервере, а также отправка данных методами HEAD и другими необычными. Метрики не показывают IP адреса пользователей. То есть метрики не могут заменить собой анализ логов если нужно найти источник проблемы. Точно также как логи не заменят сбор статистики с помощью сторонних метрик или установленного не сервере/сайте ПО, поскольку файлы журналов сервера обычно хранятся ограниченное время. Кстати, по этой причине при подозрении на серьёзные эксцессы (взлом сайта или веб сервера), нужно сделать копию файлов журналов, чтобы они не были удалены в процессе ротации.

Читайте также:  3 способа отключить все платные услуги на МТС

В этой заметке я покажу несколько способов автоматизированного анализа файлов журналов Apache:

  • онлайн сервис
  • программа для Linux
  • как анализировать логи в Windows

Конфигурирование

Прежде чем начать работу с подсистемой аудита, откроем конфигурационный файл etc/audit/ Он содержит в числе прочих следующие параметры:

  • log_file — файл, в котором будут храниться логи подсистемы аудита;
  • log_format — формат, в котором будет сохранены логи;
  • freq — максимальное число записей протокола, которые могут храниться в буфере;
  • flush — режим синхронизации буфера с диском (none — ничего не делать, incremental — переносить данные из буфера на диск с частотой, указанной в значении параметра freq; data — синхронизировать немедленно, sync — синхронизировать как данные, так и метаданные файла при записи на диск);
  • max_log_file — максимальный размер файла лога в мегабайтах;
  • max_log_file_action — действие при превышении максимального размера файла лога;
  • space_left — минимум свободного пространства в мегабайтах, по достижении которого должно быть осуществлено действие, указанное в следующем параметре;
  • space_left_admin — указывает, что делать, когда на диске недостаточно свободного места (ignore — ничего не делать; syslog — отправлять в syslog, email — отправлять уведомление по почте; suspend — прекратить запись логов на диск; single — перейти в однопользовательский режим; halt — выключить машину);
  • disk_full_action — действие, которое нужно осуществить при переполнении диска (этот параметр может принимать те же значения, что и space_left_admin).