Docker | awslogs 驱动程序 |设置含义流名称

Docker | awslogs driver | Setting meaning stream name

我告诉 containerd 使用 /etc/docker/daemon.json 文件来使用 awslogs,正如 https://docs.docker.com/config/containers/logging/awslogs/

中的文档所建议的那样

默认情况下,aws 流名称设置为随机生成的容器 ID,当您在组内列出流时,它没有意义。

awslogs 驱动程序可以选择将 awslogs-stream 设置为特定名称,但这不能满足我的需求,因为我希望不同的容器使用不同的流。

我想我想做的是告诉 docker 从图像名称和容器 ID 组成流 ID,但我找不到相应的选项。

理论上,我可以直接在 docker run 命令中设置流名称,但这还不够好,因为我使用 Kubernetes 启动这些容器,所以我不确定如何设置 stream_name 来自应用程序 yml 文件。

有什么办法可以满足我的需求吗?

你是对的,没有迹象表明 --log-opt 被实施到 Kubernetes 中,因为 dockerd 已被弃用。

您是否尝试设置 tag 而不是指定 awslogs-stream

  • 检查此 Use Awslogs With Kubernetes 'Natively',因为它可能完全符合您的需求。

来自 Docker 您发布的文档 link:

Specify tag as an alternative to the awslogs-stream option. tag interprets Go template markup, such as {{.ID}}, {{.FullID}} or {{.Name}} docker.{{.ID}}. See the tag option documentation for details on all supported template substitutions.

另一种可行的方法是使用 sidecar 容器守护进程来处理日志,然后转发到 awslogs,但 tag 是一种更清洁、更简单的解决方案。

这是使用 fluentd 的过程:

How to Send Kubernetes Logs to AWS Cloudwatch