События системного журнала#

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

stream/http

[уровень] - аналогичный error_log

Так же есть возможность получить значение уровня, заданного в директиве 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.