GCP 中 Stackdriver 中的 DialogFlow 日志没有 json_payload

Posted

技术标签:

【中文标题】GCP 中 Stackdriver 中的 DialogFlow 日志没有 json_payload【英文标题】:No json_payload for DialogFlow logs in Stackdriver in GCP 【发布时间】:2020-11-28 23:58:23 【问题描述】:

最近,我尝试通过启用以下选项从 StackDriver 检索 DialogFlow 日志(即包含有关会话信息/交互的所有内容),以针对仪表板目的执行我的自定义分析:

但是,在我检查了 DialogFlow 日志条目的格式后,似乎只有 unstructured text_payload 可用(即)并且没有 structured json_payload。

痛苦是我无法轻松解析 text_payload 以从中获取我想要的数据。因此,我的问题是:

    可以通过启用一些我错过的设置来使用 json_payload 吗? 如果由于某种原因 json_payload 不可用,是否有任何可以轻松用于数据检索的替代格式?或者我可以在 text_payload 上使用的任何解析器?

提前致谢。


Dialogflow 请求的日志条目格式:

"textPayload": "Dialogflow 请求:"session":"44885105","query_input":"\n \"event\": \n \"name\": \"WELCOME\",\n \"参数\": \n \n \n","timezone":"澳大利亚/悉尼"", "insertId": "gnp3xsg27351ns", “资源”: “类型”:“全球”, “标签”: “project_id”:“ai-hackathon-2020-lrwc” , “时间戳”:“2020-08-07T04:11:29.737Z”, “严重性”:“信息”, “标签”: "request_id": "05f6f343-a646-42e0-8181-48c2e853e21b-0820055c", “协议”:“V2”, “类型”:“对话流请求” , "logName": "projects/ai-hackathon-2020-lrwc/logs/dialogflow_agent", “跟踪”:“44885105”, “接收时间戳”:“2020-08-07T04:11:29.800030654Z”

Dialogflow 响应的日志条目格式: "textPayload": "Dialogflow 响应: id: "05f6f343-a646-42e0-8181-48c2e853e21b-0820055c"\nlang: "en"\nsession_id: "44885105"\ntimestamp: "2020-08-07T04:11:29.747Z" \nresult \n source: "agent"\n resolved_query: "WELCOME"\n action: "input.welcome"\n score: 1.0\n parameters \n \n contexts \n name: "defaultwelcomeintent-followup "\n 生命周期:2\n 参数 \n \n \n 元数据 \n intent_id: "22498e9a-efcf-43e0-a945-36a7ef4c702d"\n intent_name: "默认欢迎意图"\n webhook_used: "false "\n webhook_for_slot_filling_used: "false"\n is_fallback_intent: "false"\n \n 实现 \n 演讲:“嗨,美好的一天!你想报告什么样的问题?"\n messages \n lang: "en"\n type \n number_value: 0.0\n \n speech \n string_value: "Hey Good Day!您要报告什么样的问题?"\n \n \n \n\nstatus \n code: 200\n error_type: "success"\n\n", "insertId": "gnp3xsg27351nt", “资源”: “类型”:“全球”, “标签”: “project_id”:“ai-hackathon-2020-lrwc” , “时间戳”:“2020-08-07T04:11:29.789Z”, “严重性”:“信息”, “标签”: "type": "dialogflow_response", “协议”:“V2”, “request_id”:“05f6f343-a646-42e0-8181-48c2e853e21b-0820055c” , "logName": "projects/ai-hackathon-2020-lrwc/logs/dialogflow_agent", “跟踪”:“44885105”, “接收时间戳”:“2020-08-07T04:11:29.800030654Z”

【问题讨论】:

【参考方案1】:

我在Processing payloads 上查看了此文档,发现当日志行是序列化的 JSON 对象并且启用了 detect_json 选项时,输出插件会将日志条目转换为结构化 (JSON) 有效负载。默认情况下,在 App Engine 柔性环境和 Google Kubernetes Engine 上运行的 VM 实例启用此选项。而在 App Engine 标准环境上运行的 VM 实例默认情况下未启用此选项。

但是,可以自定义代理的配置以支持从其他资源提取结构化日志。 Streaming structured (JSON) log records to Cloud Logging 上的文档可能会有所帮助。

由自定义配置的 Logging 代理流式传输的日志记录的负载可以是单个非结构化文本消息 (textPayload) 或结构化 JSON 消息 (jsonPayload)。

【讨论】:

以上是关于GCP 中 Stackdriver 中的 DialogFlow 日志没有 json_payload的主要内容,如果未能解决你的问题,请参考以下文章

.NetCore 日志在 GCP Stackdriver 中输出错误的严重性

使用 Python 查询 GCP Stackdriver 日志

如何使用 API 或 Terraform 模板在 GCP 中创建 StackDriver 工作区

来自 Python 应用的 Opencensus Stackdriver 跟踪未出现在 GCP 的跟踪列表中

用于 Google Cloud 外部服务器的 agentPath 上的 Stackdriver GCP 多个代理

安装在 VM 上的 GCP stackdriver-agent 每分钟发送一次奇怪的日志