Iso*_*o J 8 google-cloud-platform kubernetes google-kubernetes-engine
我目前正在寻找最简单的 JSON 日志消息,这些消息可以简单地将严重性和消息从在 Kubernetes Engine 中运行并使用托管 Fluentd 守护程序的容器写入 Stackdriver 日志记录。
基本上我正在编写单行 JSON 条目,如下所示。
{"severity": "DEBUG", "message": "I'm a debug entry"}
{"severity": "ERROR", "message": "I'm an error entry"}Run Code Online (Sandbox Code Playgroud)
这些最终会在 Stackdriver 日志记录中得到以下结果。
我的结论是 Fluentd 将日志行识别为 JSON,但我不明白的是严重性如何没有正确设置到日志条目中。例如,我是否缺少一些需要到位的必填字段?
根据您提供的信息,我猜 fluentd 正在将您的整个 JSON 作为 jsonpayload 作为logEntry 传递,并提供 logName、资源类型和来自环境变量的其余所需信息。
最后,Stackdriver 收到的内容必须如下所示:
{
"logName": "projects/[YOUR PROJECT ID]/logs/[KUBERNETES LOG]",
"entries": [
{
"jsonPayload": {
"message": "I'm an ERROR entry",
"severity": "ERROR"
},
"resource": {
"labels": {
"project_id": "[YOUR PROJECT ID]",
"instance_id": "[WHATEVER]",
"zone": "[YOUR ZONE]"
},
"type": "gce_instance"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
因此,您实际上是在 Stackdriver 上获取 JSON 有效负载的内容,但是由于严重性是在 JSON 有效负载之外定义的,或者,如果您想在内部进行定义,则必须使用"severity": enum([NUMERICAL VALUE])
Enums
DEFAULT (0) 日志条目没有指定的严重性级别。
DEBUG (100) 调试或跟踪信息。
INFO (200) 常规信息,例如正在进行的状态或性能。
NOTICE (300) 正常但重要的事件,例如启动、关闭或配置更改。
WARNING (400) 警告事件可能会导致问题。
ERROR (500) 错误事件可能会导致问题。
CRITICAL (600) 关键事件会导致更严重的问题或中断。
ALERT (700) 一个人必须立即采取行动。
紧急情况 (800) 一个或多个系统无法使用。
因此,包括该字段"severity": enum(500)应将条目记录为 ERROR 而不是回退到默认 INFO。
| 归档时间: |
|
| 查看次数: |
5897 次 |
| 最近记录: |