Я использую API на виртуальной машине Linux в качестве вычислительного экземпляра в Google Cloud. API работает с systemd
, и он входит в syslog
. Я запускаю агент ведения журнала StackDriver, чтобы передать журналы в StackDriver.
С помощью этого API я записываю сообщения Json на стандартный вывод. Если я прочитаю /var/log/syslog
(или сделать systemctl status
), Вижу такие сообщения:
May 9 14:10:25 test-rulesapi-core-473n dotnet-example[4021]: {"customfield": "value"}
Я хотел бы добиться, чтобы полезная нагрузка Json попала в jsonPayload
поле записей журнала, чтобы иметь возможность запускать пользовательские запросы. Я попытался изменить конфигурацию StackDriver таким образом, чтобы она игнорировала префикс, добавленный к сообщениям журнала (с датой, именем приложения и т. Д.), Чтобы в StackDriver отправлялся только необработанный Json. Конфигурация выглядит так (по умолчанию закомментирована):
# format /^(?<message>(?<time>[^ ]*\s*[^ ]* [^ ]*) .*)$/
format /^(?<time>[^ ]*\s*[^ ]* [^ ]*)[^{]*(?<message>.*)$/
Кажется, что это правильно извлекает только json-часть сообщения, но моя проблема в том, что в записях журнала она все еще попадает в textPayload
поле.
Например, если я получаю одну конкретную запись журнала с помощью gcloud
, это выглядит так:
$ gcloud logging read "logName=projects/my-project/logs/syslog AND insertId=ajooj1g318gl2l"
---
insertId: ajooj1g318gl2l
labels:
compute.googleapis.com/resource_name: myapi-473n
logName: projects/travix-production/logs/syslog
receiveTimestamp: '2018-05-09T14:00:03.877941542Z'
resource:
labels:
instance_id: '3565608832621021979'
project_id: travix-production
zone: europe-west1-c
type: gce_instance
textPayload: '{"customfield": "value"}'
timestamp: '2018-05-09T14:00:03Z'
Как я могу заставить StackDriver поместить объект Json в jsonPayload
как подходящий объект, чтобы иметь возможность использовать пользовательские запросы?
Я вижу, что вам нужно напечатать объект Json в поле jsonPayload для ведения журнала.
Прочитав некоторые документы, я вот что думаю. Вам следует изучить синтаксический анализатор [1], также я хотел бы поделиться с вами тем, как плагин синтаксического анализа системного журнала анализирует журналы [2].
[1] https://cloud.google.com/logging/docs/structured-logging#writing_your_own_parser