Я пытаюсь настроить ведение журнала для микросервисов Node.js, развернутых на докер-машине.
Я настроил драйвер ведения журнала в моем docker-compose.yml примерно так ...
logging:
driver: "syslog"
options:
tag: "my-app-name"
Я настроил докер-машину для отправки журналов в loggly, выполнив следующие действия ...
curl -O https://www.loggly.com/install/configure-linux.sh
sudo bash configure-linux.sh -a SUBDOMAIN -t TOKEN -u USERNAME
... в соответствии с этими инструкциями https://www.loggly.com/docs/configure-syslog-script/
Мои приложения теперь отправляют логи в loggly.Однако многострочные записи журнала проходят как несколько записей журнала.Это крайне затрудняет работу с трассировкой стека и т. Д.
Есть ли способ настроить docker-compose, syslog, rsyslogd и т. Д. Для сохранения многострочных записей вместе?
Если я проверю/ var / log / syslog напрямую, записи журнала выглядят так ...
Sep 13 08:26:32 [ip_address] my-app-name[1082]: WARNING: Creating a duplicate database object for the same connection.
Sep 13 08:26:32 [ip_address] my-app-name[1082]: at Object.<anonymous> (/app/my-app-name/db.js:14:10)
...
Sep 13 08:26:32 [ip_address] my-app-name[1082]: at Object.<anonymous> (/app/my_routes.js:3:28)
В данный момент это создает запись журнала для каждой строки, поэтому он теряет весь контекст.
Я надеюсь, что есть какой-то способ, с помощью которого rsyslogd может выяснить, что все эти строки (имеющие одинаковый префикс) должны быть отправлены в виде одной записи журнала в loggly.
Можно ли это сделать с помощью драйвера системного журнала?Я бы предпочел не добавлять журналы непосредственно в сами приложения.