Docker 与 awslogs 驱动程序组合:如何获得更好的流名称?
Docker Compose with awslogs driver: How to get better stream names?
我在 docker compose 中使用 awslogs 驱动程序,想知道是否有更好的方法来控制 cloudwatch 日志流命名。
如果您的服务由于性能问题在多个 containers/nodes 上运行,则如下所示指定 awslogs-stream
效果不佳。如果您不指定它,您最终会得到随机容器 ID,这也不是很好,并且会随着时间的推移变得难看。
看起来 ECS(我没有使用)支持 awslogs-stream-prefix
,但未显示为 docker compose 或 awslogs 驱动程序的选项。
我是否遗漏了一些其他选项来获得更有意义但更独特的流名称?
logging:
driver: awslogs
options:
mode: non-blocking
awslogs-region: us-east-1
awslogs-group: mygroup
awslogs-stream: mystream # Can't do this with multiple containers
tag 选项指定如何格式化标识容器日志消息的标签。默认情况下,如果您未指定,系统将使用容器 ID 作为日志流名称。要覆盖此行为,请指定一个标记选项。这是一个golang模板。
logging:
driver: "awslogs"
options:
awslogs-region: "us-east-1"
awslogs-group: "mygroup"
tag: "{{.ImageName}}/{{.Name}}/{{.ID}}"
因此,您的日志流名称将采用这种方式 (imagename/containerName/containerID)
我在 docker compose 中使用 awslogs 驱动程序,想知道是否有更好的方法来控制 cloudwatch 日志流命名。
如果您的服务由于性能问题在多个 containers/nodes 上运行,则如下所示指定 awslogs-stream
效果不佳。如果您不指定它,您最终会得到随机容器 ID,这也不是很好,并且会随着时间的推移变得难看。
看起来 ECS(我没有使用)支持 awslogs-stream-prefix
,但未显示为 docker compose 或 awslogs 驱动程序的选项。
我是否遗漏了一些其他选项来获得更有意义但更独特的流名称?
logging:
driver: awslogs
options:
mode: non-blocking
awslogs-region: us-east-1
awslogs-group: mygroup
awslogs-stream: mystream # Can't do this with multiple containers
tag 选项指定如何格式化标识容器日志消息的标签。默认情况下,如果您未指定,系统将使用容器 ID 作为日志流名称。要覆盖此行为,请指定一个标记选项。这是一个golang模板。
logging:
driver: "awslogs"
options:
awslogs-region: "us-east-1"
awslogs-group: "mygroup"
tag: "{{.ImageName}}/{{.Name}}/{{.ID}}"
因此,您的日志流名称将采用这种方式 (imagename/containerName/containerID)