amazon-web-services - 将 Cloudwatch 日志流式传输到 Amazon ES
问题描述
我正在使用 Fargate 部署我的应用程序。为了记录容器日志,我将awslogs
其用作日志驱动程序。现在我想将我的日志发送到 Amazon ES 服务。在浏览运输文档时,我遇到了一个提到
Streaming large amounts of CloudWatch Logs data to other
destinations might result in high usage charges.
我想了解在将日志运送到 ELK 时我需要支付哪些费用?他们如何定义large amounts
?
我会被收费吗
a) 云观察?
b) 日志驱动程序?
c) Lambda 函数?每个日志行都会触发一个 lambda 函数吗?
最后,还有没有可能进一步降低成本?
解决方案
就我个人而言,我会在你的应用程序旁边的另一个容器中运行 fluent 或 fluentbit https://docs.fluentbit.io/manual/pipeline/outputs/elasticsearch
您可以将日志直接发送到 ES,然后无需任何 cloudwatch 费用。
编辑
这是最终的解决方案,以防万一有人正在寻找更便宜的解决方案。
在您的应用程序旁边的另一个容器中运行 Fluentd/Fuentbit
使用Github Config,我能够使用以下配置将日志转发到 ES。
{
"family": "workflow",
"cpu": "256",
"memory": "512",
"containerDefinitions": [
{
"name": "log_router",
"image": "docker.io/amazon/aws-for-fluent-bit:latest",
"essential": true,
"firelensConfiguration": {
"type": "fluentbit",
"options":{
"enable-ecs-log-metadata":"true"
}
},
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "true",
"awslogs-group": "your_log_group",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "ecs"
}
},
"memoryReservation": 50
},
{
"name": "ContainerName",
"image": "YourImage",
"cpu": 0,
"memoryReservation": 128,
"portMappings": [
{
"containerPort": 5005,
"protocol": "tcp"
}
],
"essential": true,
"command": [
"YOUR COMMAND"
],
"environment": [],
"logConfiguration": {
"logDriver": "awsfirelens",
"secretOptions": [],
"options": {
"Name": "es",
"Host": "YOUR_ES_DOMAIN_URL",
"Port": "443",
"tls": "On",
"Index": "INDEX_NAME",
"Type": "TYPE"
}
},
"resourceRequirements": []
}
]
}
log_router
容器收集日志并将其发送到 ES 。有关详细信息,请参阅自定义日志路由
请注意,log_router
Fargate 需要容器,而 ECS 不需要。
这是我所知道的最便宜的解决方案,它不涉及 Cloudwatch、Lamdas、Kinesis。
推荐阅读
- tensorflow - keras split 多个“迷你单元”的输入
- reactjs - springboot-react 应用程序在 Internet Explorer 11 和 9 中不起作用
- php - PHP浮点精度
- docker - 在 Dockerfile 中运行 npm run test?
- swift - 如何从 firebase 获取特定数据并将其存储在字典中?
- javascript - 如何使可拖动元素在拖放时保持在新位置(HTML5 不是 jQuery)?
- anylogic - 我应该使用什么类型的事件或工具来使用预先存在的数据对客户订单进行建模?
- spring - Spring 是否为每个响应添加 HSTS 标头?
- c# - 如何从可为空的类型中获取属性?
- python - 调整滑动窗口 Python 生成器函数以随机播放窗口