如何在AWS ECS任务定义中配置Logentries

5
我正在尝试为AWS ECS上的任务定义配置logentries。 如您所见,容器实例中可用“logentries”在这里
然而,我找不到任何关于如何配置它的文档或示例。我已经看到了其他驱动程序的示例:https://docs.aws.amazon.com/AmazonECS/latest/userguide/example_task_definitions.html 因此,我尝试在AWS控制台中设置此文档中定义的必要参数: enter image description here 但是,当我尝试使用此配置运行任务时,我会得到:

由于没有符合任务要求的容器实例,my-service服务无法放置任务。最接近匹配的容器实例缺少任务所需的属性。有关更多信息,请参见故障排除部分。

有什么想法吗?


你尝试过这个吗?https://aws.amazon.com/premiumsupport/knowledge-center/ecs-container-instance-requirement-error/ - Ferran Maylinch
是的,我得到了“com.amazonaws.ecs.capability.logging-driver.logentries”作为缺失属性。 - Ignasi
1个回答

2
在ECS中使用splunk日志记录(将EC2实例作为主机,使用ECS优化的镜像,而不是Fargate),您需要在启动时显式启用splunk日志记录,方法是设置环境变量ECS_AVAILABLE_LOGGING_DRIVERS(可以使用userdata)。对于logentries也有类似的选项。
请参见https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html 您的错误消息与logentries的配置不正确无关,而是环境中根本没有logentries。

我已经将以下内容包含在EC2的用户数据中(使用ECS优化镜像启动),并获得了相同的结果:

编写ECS配置文件

cat << EOF > /etc/ecs/ecs.config ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs","logentries"] EOF
- Ignasi
@ilopezluna,你一直有它还是后来添加的?userData仅在实例第一次启动时被调用,因此重新启动不足以解决问题。您需要终止并启动一个新的实例。您是如何启动EC2实例的?通过自动缩放组吗? - jishi
我正在使用Cloud Formation脚本启动EC2实例。然而,在之前的测试中,我尝试了你提到的重启方法。现在,我尝试将用户数据包含在CloudFormation脚本中,并重新启动整个堆栈,它可以正常工作。所以你是对的,唯一缺少的是在用户数据中包含ECS_AVAILABLE_LOGGING_DRIVERS。 - Ignasi
是否有选项可以在“ECS_AVAILABLE_LOGGING_DRIVERS”和要流式传输到CloudWatch的文件之间指定? - Babar Baig
@BabarBaig ECS 只能使用标准输出日志,无法使用文件。如果您需要将文件转发到日志服务,则需要以某种方式运行它作为单独的应用程序,并超出此问题的范围。 - jishi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接