Как использовать регистратор для регистрации ошибки в stackdriver?

У меня есть микро-экземпляр виртуальной машины, работающий в вычислительном облаке Google, и я хочу записать сообщение об ошибке в stackdriver. Эта страница https://cloud.google.com/logging/docs/agent/installation показывает этот пример

logger "Some test message"

который отлично работает для обычных сообщений, но я хочу, чтобы stackdriver распознавал некоторые сообщения как ошибки, чтобы они отображались здесь https://console.cloud.google.com/errors, что позволит мне получать уведомления по электронной почте.

Я знаю, что у инструмента gcloud есть бета-версия решения для ведения журнала, но я надеюсь избежать установки необходимых ему дополнительных компонентов.


person Bijou Trouvaille    schedule 19.08.2017    source источник


Ответы (1)


Вы можете прочитать документы о форматировании на странице https://cloud.google.com/error-reporting/docs/formatting-error-messages

Что-то вроде:

  {
   "message": "Some test message",
   "context": {
     "reportLocation": {
       "functionName": "my_function"
    }
   },
   "serviceContext": {
     "service": "my service",
   }
  }

Вам нужно, чтобы сообщение было jsonPayload записи журнала, а не textPayload. Я считаю, что агент автоматически распознает сообщения JSON, но если есть также сообщения, не относящиеся к JSON, он может вернуться к использованию текста во всех случаях. В этом случае может помочь использование специального журнала для ошибок.

Вам также могут быть интересны документы о том, как сообщения группируются вместе: https://cloud.google.com/error-reporting/docs/grouping

person Kirk Kelsey    schedule 25.08.2017
comment
Спасибо за ответ. Я пробовал ваш пример с logger "$json" (в оболочке), и он отображается в stackdriver, но не в репортере ошибок. Я тоже пробовал то же самое, но заменяя новые строки на \n вот так json='{\n "message": "Some test message",\n "context": {\n "reportLocation": {\n "functionName": "my_function"\n }\n },\n "serviceContext": {\n "service": "my service",\n }\n }' - person Bijou Trouvaille; 25.08.2017
comment
Когда вы расширяете запись журнала в средстве просмотра журналов облачной консоли, какой тип полезной нагрузки содержит содержимое (json, text, proto)? - person Kirk Kelsey; 01.09.2017
comment
Думаю, это просто текст, но вот ответ gist.github.com/bijoutrouvaille/ - person Bijou Trouvaille; 07.09.2017
comment
textPayload - это уловка. Похоже, агент не полностью анализирует запись системного журнала. Если бы сообщение было, например, в файле, я подозреваю, это сработает лучше. Планируете ли вы использовать logger для создания сообщений в долгосрочной перспективе? - person Kirk Kelsey; 08.09.2017
comment
Я бы хотел по возможности избежать установки дополнительных компонентов, особенно тех, которые требуют ручной настройки. - person Bijou Trouvaille; 08.09.2017
comment
Кроме того, я думаю, что systemd автоматически передает журналы в syslog. - person Bijou Trouvaille; 08.09.2017
comment
Вот вопрос о том, как научиться свободно конвертировать текст в полезные данные json, которые могут помочь (но я думаю, что нужны дополнительные сведения): stackoverflow.com/questions/45933111/ - person Kirk Kelsey; 15.09.2017