bri*_*anz 3 logging fluentd docker
当前设置正在使用fluentd驱动程序运行 Docker 容器:
docker run --log-driver=fluentd my-container
Run Code Online (Sandbox Code Playgroud)
这很容易工作……将标准输出发送到主机上本地运行的 fluentd 系统。
我想tag使用一些设置在容器上的标签来控制 fluentd 。对于这个例子,假设一些标签(docker inspect片段):
"Config": {
"Labels": {
"com.amazonaws.ecs.container-name": "web",
"com.amazonaws.ecs.task-definition-version": "3"
}
}
Run Code Online (Sandbox Code Playgroud)
如何fluentd tag通过提取一个或多个 来设置Labels?
此列表中的 Docker 文档列出了当前支持的标签:https : //docs.docker.com/engine/admin/logging/log_tags/
这些文档记录了ExtraAttributes……但是我可以弄清楚如何使用它来查找一个或多个标签。阅读 Docker 代码我不清楚:https : //github.com/docker/docker/blob/master/daemon/logger/context.go#L29
这与docker inspect以下内容无关:
docker inspect --format '{{index .ContainerLabels "com.amazonaws.ecs.container-name"}}'
Run Code Online (Sandbox Code Playgroud)
我想提取相同的信息并将其输入 log-opt tag=?
该ContainerLabels图是一个在码头工人登录上下文中可用的物品和fluentd驱动程序支持ParseLogTag所以你可以使用去模板格式。
在直接 docker 中,这看起来像:
docker run \
--label alabel=1value \
--log-driver=fluentd \
--log-opt tag="{{ .ContainerLabels.alabel }}" \
busybox \
echo "$(date) test log"
Run Code Online (Sandbox Code Playgroud)
因此,如果您可以将 a 注入--log-opt到您的 ECS 启动中,如下所示:
--log-opt tag='{{ index .ContainerLabels "com.amazonaws.ecs.container-name" }}'
Run Code Online (Sandbox Code Playgroud)
你应该得到你的标签。
index此处需要使用非字母数字字符访问地图键
| 归档时间: |
|
| 查看次数: |
2885 次 |
| 最近记录: |