Tho*_*ach 5 logging kubernetes google-kubernetes-engine
我在 GCP 上创建了一个 GKE 集群。
kubectl logs 命令中的 Kubernetes 日志与 /var/log/containers 不同
库贝克特尔
{"method":"GET","path":"/healthz","format":"*/*","controller":"Public::PublicPagesController","action":"healthz","status":204,"duration":0.39,"view":0.0,"request_id":"ca29b519-d1e8-49a2-95ae-e5f23b60c36f","params":{},"custom":null,"request_time":"2022-04-27T15:25:43.780+00:00","process_id":6,"@version":"vcam-backend-vvcam-72_shareholder_event-rc16","@timestamp":"2022-04-27T15:25:43.780Z","message":"[204] GET /healthz (Public::PublicPagesController#healthz)"}
Run Code Online (Sandbox Code Playgroud)
并登录 /var/log/containers,将时间戳添加到我的容器日志的开头:
2022-04-27T15:25:43.780523421Z stdout F {"method":"GET","path":"/healthz","format":"*/*","controller":"Public::PublicPagesController","action":"healthz","status":204,"duration":0.39,"view":0.0,"request_id":"ca29b519-d1e8-49a2-95ae-e5f23b60c36f","params":{},"custom":null,"request_time":"2022-04-27T15:25:43.780+00:00","process_id":6,"@version":"vcam-backend-vvcam-72_shareholder_event-rc16","@timestamp":"2022-04-27T15:25:43.780Z","message":"[204] GET /healthz (Public::PublicPagesController#healthz)"}
Run Code Online (Sandbox Code Playgroud)
我希望我的应用程序日志保持一致,我希望它采用 json 格式,就像来自 kubectl 命令的日志一样,这样我就可以解析和分析更多内容。
我想删除这部分:2022-04-27T15:25:43.780523421Z stdout F
有人遇到这个问题吗?如何使容器日志与 kubectl 命令日志相同?
GKE 版本:
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.10-gke.2000", GitCommit:"0823380786b063c3f71d5e7c76826a972e30550d", GitTreeState:"clean", BuildDate:"2022-03-17T09:22:22Z", GoVersion:"go1.16.14b7", Compiler:"gc", Platform:"linux/amd64"}
Run Code Online (Sandbox Code Playgroud)
Docker 守护进程.json
{
"pidfile": "/var/run/docker.pid",
"iptables": false,
"ip-masq": false,
"log-level": "warn",
"bip": "169.254.123.1/24",
"mtu": 1460,
"storage-driver": "overlay2",
"live-restore": true,
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "5"
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我注意到日志行开头的时间戳仅在我们添加选项时显示docker logs -t,此处的文档
但我仍然不知道如何在 GKE 集群中解决此问题。
此问题与容器运行时接口(CRI)有关。您可以在此处阅读有关 CRI 的信息。
目前,我仍然无法根据需要更改日志格式,我只是适应这种新格式。这种格式称为CRI log format,GKE 集群的 CRI 默认总是以这种格式生成日志,聚合日志应用程序也适应这种新的 CRI 日志格式:
所以我认为你需要改变解决这个问题的方式:如果我们不能按照我们想要的方式改变日志格式,我们可以使用支持这种日志格式的应用程序。
注意:我不确定,但我认为这个问题来自:Kubernetes is removing support for Docker as a container runtime- docs,并且新的容器运行时生成此 CRI 日志格式。
| 归档时间: |
|
| 查看次数: |
1713 次 |
| 最近记录: |