События системного журнала#
SynGX, как и Nginx, имеет возможность вести два вида журналов. В первый журнал, который называется error.log, SynGX записывает информацию о своей собственной работе. Количество информации, которая записывается в error.log, определяется в конфигурации SynGX, при этом формат журнала изменять нельзя. Во второй журнал, который называется access.log, SynGX записывает информацию об обработанных запросах клиентов. Формат сообщений, которые записываются в данный журнал, определяется в конфигурации SynGX.
Логгирование можно настроить в конфигурационном файле SynGX с расширением .conf, который по умолчанию располагается в директории /opt/syngx/conf. Конфигурацию задает администратор SynGX самостоятельно, согласно требованиям эксплуатирующей организации.
Журнал error log
В error log записываются сообщения об ошибках, возникающих в процессе работы сервиса, предупреждения, информационные сообщения, отладочные сообщения - в зависимости от выставленного уровня логгирования. Запись производится по следующей маске: время события, уровень события, номер процесса, сообщение по событию.
Настройка error log производится директивой error_log в конфигурационном файле с расширением .conf (по умолчанию syngx.conf).
Синтаксис: error_log файл [уровень];
,где [уровень] - это выставляемый уровень логгирования журнала.
Основные типы (уровни) событий системного журнала:
Error — ошибки, возникающие в процессе работы сервиса;
Warn — предупреждения, возникающие в процессе работы сервиса;
Info — информационные сообщения, возникающие в процессе работы сервиса;
Debug — отладочные сообщения (детали внутренних взаимодействий и детали обработки сетевых запросов), возникающие в процессе работы сервиса.
Примечание: Включение уровня логгирования Debug не рекомендуется в промышленных инсталляциях.
Подробнее про настройку директивы error log можно изучить на странице сайта Nginx: https://nginx.org/ru/docs/ngx_core_module.html#error_log .
Пример сообщения об ошибке:
2022/10/30 16:29:36 [error] 3923#3923: *63024022 connect() failed (111: Connection refused) while connecting to upstream, client: <ip-адрес клиента>, server: , request: "POST /hc_proxy/healthcheck/service-healthcheck/ufs-delivery-proxy HTTP/1.0", upstream: "https://<ip-адрес узла>:<port>/healthcheck/service-healthcheck/ufs-delivery-proxy"
Поскольку в SynGX события типа error записывает Nginx, подробнее про события данного типа, записываемые в error log, можно изучить по ссылке сайта Nginx: https://docs.nginx.com/nginx/admin-guide/monitoring/logging/ .
Существует возможность задать отдельный уровень логгирования для lua кода с помощью директивы lua_log_level. При этом уровень логгирования lua кода не будет зависеть от уровня, заданного в директиве error_log. В случае если директива не указана, то уровень логгирования для lua будет соответствовать уровню, заданному в error_log
Название директивы |
Контекст |
Параметры |
|---|---|---|
lua_log_level |
|
[уровень] - аналогичный |
Так же есть возможность получить значение уровня, заданного в директиве lua_log_level, на языке lua с помощью функции get_lua_filter_level() модуля ngx.errlog библиотеки lua-resty-core
get_lua_filter_level()- возвращает уровень фильтрации журнала ошибок (определенный с помощью директивы lua_log_level) в виде целого числа, соответствующего константам уровня журнала ошибок syngx.
Пример конфигурации
content_by_lua '
local errlog = require "ngx.errlog"
local lua_level = errlog.get_lua_filter_level()
';
Журнал access log
В access.log ведется запись логов запросов в указанном формате. Логи записываются в контексте location’а, где заканчивается обработка.
Настройка access.log производится директивой access_log в конфигурационном файле с расширением .conf (по умолчанию syngx.conf).
Подробнее про настройку директивы access_log можно изучить на странице сайта Nginx: https://nginx.org/ru/docs/http/ngx_http_log_module.html#access_log .
Дополнительная информация по системному журналу
По умолчанию, настроенные администратором события журнала локально записываются в директорию /opt/syngx/logs/ :
error.log;
access.log.
SynGX позволяет писать журналы в файлы на VM, а также отправлять их по протоколу syslog, что также определяется в конфигурации SynGX. При записи журналов в файлы на VM, необходимо иметь ввиду, что в ходе работы SynGX размер журналов постоянно увеличивается, поэтому необходимо предусмотреть способ ограничения размера логов, например, с помощью ротирования логов с помощью log rotate.
При необходимости отправлять журналы на другие VM, можно использовать различные схемы с использованием дополнительного ПО, например, RSYSLOG или fluetbit. Описание настройки этих компонентов можно посмотреть в документации на указанные сторонние компоненты.
В SynGX нет функционала отправки логов по протоколу Kafka, однако прикладной разработчик может донастроить SynGX, чтобы он мог отправлять логи по данному протоколу. Например, для этих целей можно использовать RSYSLOG.