sqlitelog
Директива `sqlitelog` настраивает NGINX для записи запросов в базу данных SQLite.
Описание
Директива sqlitelog включает логирование деталей HTTP-запросов в базу данных SQLite, что позволяет эффективно хранить и выполнять запросы по журналам доступа. Эта директива принимает один или несколько аргументов, включая путь к файлу базы данных SQLite и формат журнала, ранее определённый директивой sqlitelog_format. Кроме того, она предоставляет опции для настройки размера буфера логирования и других параметров, влияющих на обработку данных и взаимодействие с базой данных.
При использовании в контекстах http или server директива sqlitelog работает путём записи форматированных записей журнала в указанную базу данных SQLite. Схема базы данных определяется в соответствии с указанным форматом, отражая основные данные запроса, такие как удалённый адрес, время запроса и коды состояния. По мере обработки запросов эти данные могут записываться асинхронно, если активирована директива sqlitelog_async, что помогает уменьшить влияние на производительность рабочий процесса NGINX.
Директива также поддерживает условное логирование через необязательный фильтр. Пользователи могут задать критерии, определяющие, когда записи должны сохраняться, что позволяет более тонко контролировать сохраняемые данные. Это особенно полезно в сценариях, где требуется мониторинг только определённых типов трафика, обеспечивая эффективную очистку и обслуживание журналов.
Пример конфига
http {
sqlitelog_format myformat $remote_addr $time_local $host $request_uri $request_time $status;
sqlitelog /tmp/access.db myformat buffer=128K max=5;
}Убедитесь, что файл базы данных SQLite имеет соответствующие права записи для пользователя NGINX, иначе логирование не будет работать.
Слишком большие буферы логов могут задерживать запись логов, что в условиях высокого трафика при падении сервера потенциально приведёт к потере данных.
Если используется асинхронный режим, имейте в виду возможную сложность при устранении неполадок, поскольку логи могут не записываться в момент обработки запроса.