Системным администраторам требуется подробная информация для диагностики и устранения проблем, которые могут возникнуть в системе. Одним из источников такой информации являются журналы. Журналы – это серия записей, описывающих использование системы или ресурсов в системе.
Веб-сервер, такой как Lighttpd, позволяет настраивать уровень детализации выходной информации с помощью журналов. По умолчанию он использует общий формат журнала. Однако метод ведения журнала легко настраивается для различных нужд и сценариев.
В этой статье вы узнаете, как включить ведение журнала на сервере Lighttpd, и поймете форматирование журналов из файла access.log.
Включить ведение журнала доступа
Перед тем, как проанализировать файл и узнать, как он отформатирован, нам нужно включить ведение журнала доступа на веб-сервере.
Журналы доступа содержат информацию журнала о запросах файлов и ресурсов из веб-приложения, размещенного на веб-сервере. Типичная информация, хранящаяся в журналах доступа, включает IP-адрес, пользовательский агент, доступ к файлам и многое другое.
Чтобы включить ведение журнала доступа на сервере Lighttpd, разрешите модуль журнала доступа с помощью команды:
sudo lighttpd-enable-mod accesslog
Приведенная выше команда загрузит модуль журнала доступа, позволяющий серверу записывать журналы доступа к файлам и ресурсам размещенного веб-приложения.
Если вы хотите изменить параметры модулей accessLog, отредактируйте файл, расположенный в:
/etc/lighttpd/conf-enabled/10-accesslog.conf
Изменение имени файла журнала доступа
По умолчанию журналы доступа хранятся в файле access.log, как определено в параметре accessLog.filename.
Чтобы установить собственное имя, отредактируйте значение записи. Например, чтобы установить журналы доступа в файл server.log:
accesslog.filename = "/var/log/lighttpd/server.log"
Доступ к параметрам журнала.
Другие параметры, которые вы можете изменить для настройки журналов доступа на сервере Lighttpd, включают:
- accesslog.use-syslog – эта опция отправляет журналы доступа в syslog. По умолчанию эта опция отключена.
- accesslog.syslog-level – определяет уровень ведения журнала (серьезность) для системного журнала. По умолчанию установлен уровень INFO. Другие варианты включают:
- 0 – Emergency
- 1 – Alert
- 2 – Critical
- 3 – Error
- 4 – Warning
- 5 – Notice
- 6 – Info
- 7 – Debug
Вы можете узнать больше об уровнях системного журнала в ресурсе ниже:
https://en.wikipedia.org/wiki/Syslog#Severity_level
- accesslog.format – эта опция описывает структуру журналов в файле access.log.
Понимание формата журнала
Разберем формат журналов доступа на сервере Lighttpd. Стоит отметить, что для простоты мы будем использовать формат журнала по умолчанию.
Чтобы просмотреть содержимое файла журнала, вы можете использовать команду cat как:
sudo cat /var/log/lighttpd/access.log
Возьмем одну запись, как показано в примере ниже:
127.0.0.1 localhost - [02/Nov/2021:01:05:28 -0400] "GET / HTTP/1.1" 200 15043 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0"
- Первый блок записи журнала содержит IP-адрес удаленного хоста, запрашивающего указанный ресурс. В этом примере исходный IP-адрес – localhost.
- Вторая часть содержит имя удаленного хоста.
- Далее следует отметка времени окончания HTTP-запроса.
- Далее следует метод HTTP-запроса, такой как GET, POST,…
- Следующая часть содержит запрошенный URL. В нашем примере выше запрошенный URL является индексным,
- Следующая часть – это протокол HTTP-запроса, например HTTP/1.1.
- Далее идет код состояния HTTP для запрошенного ресурса или URL-адреса, например 200 OK, 404 не найден и т. д.
- Затем идет количество байтов, отправленных в теле запроса.
- Последний блок содержит User-Agent для запроса.
Следующий формат описывает все указанные выше блоки:
accesslog.format = "%h %V %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""
Пользовательский формат журнала.
Вы можете создать собственный формат журнала, используя параметры, представленные в документации по формату журнала Lighttpd.
https://redmine.lighttpd.net/projects/1/wiki/Docs_ModAccesslog
Давайте воспользуемся предоставленными параметрами, чтобы создать минималистичный формат журнала для нашего сервера. В нашем примере мы включим исходный IP-адрес, имя удаленного хоста, метод запроса, код состояния, запрошенный URL-адрес и количество байтов в теле запроса.
- %h – представляет удаленный IP-адрес.
- %l – представляет собой удаленное имя хоста.
- %m – для метода запроса.
- %s – код статуса.
- %U – запрошенный URL.
- %b – количество байтов в теле запроса.
Отредактируйте файл журнала доступа:
sudo nano conf-enabled/10-accesslog.conf
Установите формат журнала, как показано ниже:
accesslog.format = "%h %l %m %s %U %b"
Сохраните и закройте файл. Перезапустите службу как:
sudo service lighttpd restart
После перезапуска службы перейдите по индексной веб-странице. Теперь вы должны увидеть формат журнала, как показано:
192.168.9.220 localhost - GET 200 / 15043
Чтобы узнать, как создать собственный формат журнала, обратитесь к документации.
Вывод
В этой статье вы узнали, как настроить ведение журнала доступа на сервере Lighttpd и отформатировать журналы. Вы также узнали, как создать собственный формат журнала, используя различные параметры.