如何在AWS ECS中为syslog驱动配置有意义的主机名?
解决ECS syslog日志到Papertrail的主机名显示问题
容器级别指定主机名(推荐)
你之前设置容器的hostname参数无效,是因为该参数仅控制容器内部的主机名,和syslog驱动发送的主机字段无关。要直接在ECS任务定义中指定Papertrail显示的主机名,需在容器的日志配置里添加syslog驱动的专属参数:
- 打开ECS控制台,编辑对应的任务定义
- 在容器定义的日志配置部分,选择
syslog驱动后,添加以下选项:syslog-hostname:设置你想要的有意义名称(比如order-service-v1)syslog-address:填写你的Papertrail日志接收地址(格式如udp://logs.papertrailapp.com:12345)- 可选
syslog-tag:额外标记日志来源的应用名称,方便区分
对应的任务定义JSON片段示例:
"containerDefinitions": [ { "name": "your-container-name", "image": "your-image", "logConfiguration": { "logDriver": "syslog", "options": { "syslog-address": "udp://logs.papertrailapp.com:XXXX", "syslog-hostname": "payment-service-prod", "syslog-tag": "payment-api" } } } ]
更新任务定义后,重新部署服务,新启动的容器日志就会用你指定的主机名发送到Papertrail。
实例级别统一设置
如果希望同一ECS容器实例上的所有容器日志都使用同一个主机名,也可以在任务定义的日志配置里引用实例的元数据作为syslog-hostname:
"syslog-hostname": "${ecs.container-instance.ec2-instance-id}"
内容的提问来源于stack exchange,提问作者Andy Davis
相关产品推荐
相关产品推荐

