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

При включенной интеграции с компонентом Журналирование (LOGA) логи отправляются в Сервис для хранения лог-файлов Platform V Monitor.

Примечание.

Есть возможность отключить интеграцию с компонентом Журналирование (LOGA) (srls.fluentBitSidecarEnabled=False), тогда логи остаются в рамках Pod.

Примечание.

C версии SRLS 4.9 изменились имена ключей для отображения уровня и времени возникновения событий журналирования. Отныне параметры являются конфигурируемыми и описаны в подразделе «Параметры установки» раздела «Установка» руководства по установке.

Журналируются события уровней Error, Warn, Info, Debug, Trace. Уровень логирования задается при старте приложения в настройках, в runtime уровень логирования можно изменить через REST-сервис в терминале Pod.

Для изменения уровня логирования в runtime из терминала Pod RL Service необходимо выполнить команду:

curl localhost:${port}/logging?level=${level}

Здесь:

  • port — HTTP-порт RL Service, по умолчанию 8080;

  • level — уровень логирования (error, warn, info, debug или trace).

Для уменьшения нагрузки на инфраструктуру не рекомендуется включать уровни Debug и Trace.

Пример лога оператора обработки загруженного артефакта GlobalRateLimit в прикладной namespace:

2023-10-19T21:02:06.562+0300	info	this GRL is mine	{"controller": "globalratelimit", "controllerGroup": "ratelimit.service", "controllerKind": "GlobalRateLimit", "GlobalRateLimit": {"name":"rate-limit-config","namespace":"da-dp2-sy-dev-srls-06"}, "namespace": "da-dp2-sy-dev-srls-06", "name": "rate-limit-config", "reconcileID": "e934b300-aecc-456f-9629-e3ceffdb56bc"}
2023-10-19T21:02:06.563+0300	info	reconcile	creating external resources	{"controller": "globalratelimit", "controllerGroup": "ratelimit.service", "controllerKind": "GlobalRateLimit", "GlobalRateLimit": {"name":"rate-limit-config","namespace":"da-dp2-sy-dev-srls-06"}, "namespace": "da-dp2-sy-dev-srls-06", "name": "rate-limit-config", "reconcileID": "e934b300-aecc-456f-9629-e3ceffdb56bc"}
2023-10-19T21:02:06.568+0300	debug	filter does not exist, try create	{"controller": "globalratelimit", "controllerGroup": "ratelimit.service", "controllerKind": "GlobalRateLimit", "GlobalRateLimit": {"name":"rate-limit-config","namespace":"da-dp2-sy-dev-srls-06"}, "namespace": "da-dp2-sy-dev-srls-06", "name": "rate-limit-config", "reconcileID": "e934b300-aecc-456f-9629-e3ceffdb56bc", "filterName": "da-dp2-sy-dev-srls-06-rls-cluster", "filterNamespace": "da-dp2-sy-dev-srls-06"}
2023-10-19T21:02:06.573+0300	debug	filter does not exist, try create	{"controller": "globalratelimit", "controllerGroup": "ratelimit.service", "controllerKind": "GlobalRateLimit", "GlobalRateLimit": {"name":"rate-limit-config","namespace":"da-dp2-sy-dev-srls-06"}, "namespace": "da-dp2-sy-dev-srls-06", "name": "rate-limit-config", "reconcileID": "e934b300-aecc-456f-9629-e3ceffdb56bc", "filterName": "da-dp2-sy-dev-srls-06-serverf", "filterNamespace": "da-dp2-sy-dev-srls-06"}
2023-10-19T21:02:06.579+0300	debug	filter does not exist, try create	{"controller": "globalratelimit", "controllerGroup": "ratelimit.service", "controllerKind": "GlobalRateLimit", "GlobalRateLimit": {"name":"rate-limit-config","namespace":"da-dp2-sy-dev-srls-06"}, "namespace": "da-dp2-sy-dev-srls-06", "name": "rate-limit-config", "reconcileID": "e934b300-aecc-456f-9629-e3ceffdb56bc", "filterName": "da-dp2-sy-dev-srls-06-servers", "filterNamespace": "da-dp2-sy-dev-srls-06"}
2023-10-19T21:02:06.582+0300	debug	rateLimitConfig	Updating Rate Limit config for GRL name [rate-limit-config] namespace [da-dp2-sy-dev-srls-06]...	{"controller": "globalratelimit", "controllerGroup": "ratelimit.service", "controllerKind": "GlobalRateLimit", "GlobalRateLimit": {"name":"rate-limit-config","namespace":"da-dp2-sy-dev-srls-06"}, "namespace": "da-dp2-sy-dev-srls-06", "name": "rate-limit-config", "reconcileID": "e934b300-aecc-456f-9629-e3ceffdb56bc"}
2023-10-19T21:02:06.583+0300	debug	rateLimitConfig	DependNamespace: [da-dp2-sy-dev-srls-05]	{"controller": "globalratelimit", "controllerGroup": "ratelimit.service", "controllerKind": "GlobalRateLimit", "GlobalRateLimit": {"name":"rate-limit-config","namespace":"da-dp2-sy-dev-srls-06"}, "namespace": "da-dp2-sy-dev-srls-06", "name": "rate-limit-config", "reconcileID": "e934b300-aecc-456f-9629-e3ceffdb56bc"}
2023-10-19T21:02:06.583+0300	debug	operatorservice	successfuly applied GlobalRateLimit	{"controller": "globalratelimit", "controllerGroup": "ratelimit.service", "controllerKind": "GlobalRateLimit", "GlobalRateLimit": {"name":"rate-limit-config","namespace":"da-dp2-sy-dev-srls-06"}, "namespace": "da-dp2-sy-dev-srls-06", "name": "rate-limit-config", "reconcileID": "e934b300-aecc-456f-9629-e3ceffdb56bc"}
2023-10-19T21:02:06.583+0300	debug	reconcile	Adding GRL to GRL Keeper	{"controller": "globalratelimit", "controllerGroup": "ratelimit.service", "controllerKind": "GlobalRateLimit", "GlobalRateLimit": {"name":"rate-limit-config","namespace":"da-dp2-sy-dev-srls-06"}, "namespace": "da-dp2-sy-dev-srls-06", "name": "rate-limit-config", "reconcileID": "e934b300-aecc-456f-9629-e3ceffdb56bc"}
2023-10-19T21:02:06.584+0300	info	load new configs starting...
2023-10-19T21:02:06.584+0300	debug	new config for namespace: [da-dp2-sy-dev-srls-05]
2023-10-19T21:02:06.585+0300	info	load new configs success
2023-10-19T21:02:06.588+0300	info	config load success to podName: [rate-limiter-service-8467777569-7fjcj] namespace: [da-dp2-sy-dev-srls-05] address: [127.0.0.6:55873]
2023-10-19T21:02:06.589+0300	info	reconcile	Finished processing of GRL	{"controller": "globalratelimit", "controllerGroup": "ratelimit.service", "controllerKind": "GlobalRateLimit", "GlobalRateLimit": {"name":"rate-limit-config","namespace":"da-dp2-sy-dev-srls-06"}, "namespace": "da-dp2-sy-dev-srls-06", "name": "rate-limit-config", "reconcileID": "e934b300-aecc-456f-9629-e3ceffdb56bc"}

2023-10-19T20:52:36.799+0300    info    redis server: 'mymaster,redis-sentinel-0.redis-sentinel:26379,redis-sentinel-1.redis-sentinel:26379,redis-sentinel-2.redis-sentinel:26379' status: in wait connection mode
2023-10-19T20:52:36.799+0300    error   subscribe channelSizeConnectChange fail {"error": "redis: all sentinels specified in configuration are unreachable"}
2023-10-19T20:52:36.799+0300    error   subscribe channelUpdateConfigs fail {"error": "redis: all sentinels specified in configuration are unreachable"}

Журналирование несконфигурированных потребителей (не найденных среди invokers)#

При запуске RL Service в случае задания некорректных периодов логирования и очистки несконфигурированных потребителей выводится соответствующее сообщение уровня Warn (некорректные периоды заменяются на минимально допустимые):

 2024-02-21T09:31:26.217 WRN logging period must be less than clearing period; set minimum values gotClear=30 gotLog=35 minClear=30 minLog=1
 
 2024-02-21T09:31:26.217 WRN logging period set as minimum value got=0 min=1
 
 2024-02-21T09:31:26.217 WRN clearing period set as minimum value got=5 min=30

Выводится сообщение уровня Debug, информирующее об успешном запуске логирования и очистки накапливаемых несконфигурированных потребителей в соответствии с установленными периодами:

 2024-02-21T09:31:26.217 DBG Periodic (minutes) logging and clearing unconfigured consumers have been launched clearingPeriod=30 loggingPeriod=1

По прошествии любого из периодов выводится соответствующее сообщение уровня Debug, вслед за чем выполняется вывод/очистка накопленных несконфигурированных потребителей:

 2024-02-21T09:31:26.217 DBG logging of unconfigured consumers has been performed reason=ticker
 
 2024-02-21T09:31:26.217 DBG clearing of unconfigured consumers has been performed reason=ticker

В момент, когда хранилище несконфигурированных потребителей достигнет 100 уникальных записей, накопленные несконфигурированные потребители будут выведены принудительно с очисткой их хранилища. Тикер очистки будет сброшен:

 2024-02-21T09:31:26.217 DBG logging and clearing of unconfigured consumers has been performed, reset clearing ticker maxItems=100 reason="storage overflow"

Лог RL Service уровня Info содержит информацию о несконфигурированных потребителях.

Формат вывода – [key]: value_1 value_2 ..., где «key» формируется из GlobalRateLimit CRD, «value» – значение несконфигурированного потребителя.

Правила формирования key в зависимости от режима работы SRLS и версии Envoy представлены в таблице.

Режим работы

Ключ

Rate Limit Header

{domain}_endpoint_{shortname}_{shortname}_{header}

Rate Limit Prefix

{domain}_endpoint_{shortname}_{shortname}_prefix_{prefix}_{shortname}_{header}

Rate Limit Method

{domain}_endpoint_{shortname}_{shortname}_prefix_{prefix}_{shortname}_method_{method}_{shortname}_{header}

Rate Limit Header Size

{domain}_endpoint_{shortname}_{shortname}_body_{size}_{shortname}_{header}

Rate Limit Prefix Size

{domain}_endpoint_{shortname}_{shortname}_prefix_{prefix}_{shortname}_body_{size}_{shortname}_{header}

Rate Limit Method Size

{domain}_endpoint_{shortname}_{shortname}_prefix_{prefix}_{shortname}_method_{method}_{shortname}_body_{size}_{shortname}_{header}

Пример лога для режима работы Rate Limit Prefix для CRD – GlobalRateLimit:

2024-02-21T09:31:26.217 INF unconfigured consumers: [my_namespace_endpoint_dev_dev_prefix__bar_dev_synapse_consumerid]: unconfigured-consumer-1 unconfigured-consumer-2

При формировании key все символы, не являющиеся буквой, цифрой или знаком подчеркивания (удовлетворяющие регулярному выражению \W+), заменяются нижним подчеркиванием (_). Например, header_value «client-1» преобразуется в «client_1», а uri_prefix «/foo» — в «_foo».