Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 将Cloudwatch日志流式传输到Amazon ES_Amazon Web Services_Amazon Cloudwatch_Elk - Fatal编程技术网

Amazon web services 将Cloudwatch日志流式传输到Amazon ES

Amazon web services 将Cloudwatch日志流式传输到Amazon ES,amazon-web-services,amazon-cloudwatch,elk,Amazon Web Services,Amazon Cloudwatch,Elk,我正在使用Fargate部署我的应用程序。为了记录容器日志,我使用awslogs作为日志驱动程序。现在我想将日志发送到Amazon ES服务。当我在查看装运通知时,我遇到一张便条,上面提到 Streaming large amounts of CloudWatch Logs data to other destinations might result in high usage charges. 我想知道当我把原木运到麋鹿的时候,我要付多少钱?他们如何定义大额金额 我会被收费吗 a) 云手

我正在使用Fargate部署我的应用程序。为了记录容器日志,我使用
awslogs
作为日志驱动程序。现在我想将日志发送到Amazon ES服务。当我在查看装运通知时,我遇到一张便条,上面提到

Streaming large amounts of CloudWatch Logs data to other
destinations might result in high usage charges. 
我想知道当我把原木运到麋鹿的时候,我要付多少钱?他们如何定义大额金额

我会被收费吗

a) 云手表

b) 日志驱动程序

c) Lambda函数?是否每个日志行都触发lambda函数


最后,还有可能进一步降低成本吗?

就个人而言,我会在应用程序旁边的另一个容器中运行fluent或fluentbit

您可以将日志直接发送到ES,而无需支付任何cloudwatch费用

编辑

这是最终的解决方案,以防有人正在寻找更便宜的解决方案

在应用程序旁边的另一个容器中运行Fluentd/Fuentbit

使用,我能够使用下面的配置将日志转发到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\u路由器
容器收集日志并将其发送到ES。有关更多信息,请参阅

请注意,Fargate需要
log_路由器
容器,但ECS不需要


这是我所知道的最便宜的解决方案,它不涉及Cloudwatch、Lamdas和Kinesis。

就个人而言,我希望在应用程序旁边的另一个容器中运行fluent或fluentbit

您可以将日志直接发送到ES,而无需支付任何cloudwatch费用

编辑

这是最终的解决方案,以防有人正在寻找更便宜的解决方案

在应用程序旁边的另一个容器中运行Fluentd/Fuentbit

使用,我能够使用下面的配置将日志转发到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\u路由器
容器收集日志并将其发送到ES。有关更多信息,请参阅

请注意,Fargate需要
log_路由器
容器,但ECS不需要


这是我所知道的最便宜的解决方案,它不涉及Cloudwatch、Lamdas和Kinesis。

与所有资源一样,AWS对使用和维护收费。因此,费用将用于执行lambda函数和将数据存储在CloudWatch中。他们提到的原因是:
将大量CloudWatch日志数据流式传输到其他目的地可能会导致高昂的使用费是因为lambda函数处理日志并将其插入ES需要时间,当您尝试流式处理大量日志时,lambda函数将执行更长的时间

  • Lambda函数?是否每个日志行都触发lambda函数

    是的,当启用从CloudWatch到ES的流时,插入到CloudWatch的每个日志都会触发lambda函数

演示图像(参见触发器):

  • 还有可能进一步降低成本吗
降低成本的唯一方法(使用此实现时)是编写自己的lambda函数,该函数将每X秒\分钟触发一次,并插入到ES日志中。 据我所知,成本差距将毫无意义

更多信息:


.

与所有资源一样,AWS收取使用和维护费用。因此,费用将用于执行lambda函数和将数据存储在CloudWatch中。他们提到的原因是:
将大量CloudWatch日志数据流式传输到其他目的地可能会导致高昂的使用费是因为lambda函数处理日志并将其插入ES需要时间,当您尝试流式处理大量日志时,lambda函数将执行更长的时间

  • Lambda函数?是否每个日志行都触发lambda函数

    是的,当启用从CloudWatch到ES的流时,插入到CloudWatch的每个日志都会触发lambda函数

演示图像(参见触发器):

  • 还有可能进一步降低成本吗
降低成本的唯一方法(使用此实现时)是编写自己的lambda函数,该函数将每X秒\分钟触发一次,并插入到ES日志中。 据我所知,成本差距将毫无意义

更多信息:


.

您的意思是使用
awsfirelens
作为
日志驱动程序
?啊,我的坏fargate不支持fluentd日志驱动程序,ec2 ecs支持。只需查看文档,是的,awsfirelens可以工作,除了正常的数据传输成本外,他们似乎不收费。如果你不想使用消防软管,可以转发到另一个像这样流畅的容器,我无法理解
log\u router
容器在其中做什么?在几乎所有的例子中都看到了。有什么输入吗?你是说使用
awsfirelens
作为
logDriver
?啊,我的坏fargate不支持fluentd日志驱动程序,ec2 ecs支持。只需查看文档,是的,awsfirelens可以工作,除了正常的数据传输成本外,他们似乎不收费。如果你不想使用消防软管,可以转发到另一个像这样流畅的容器,我无法理解
log\u router
容器在其中做什么?在几乎所有的例子中都看到了。对此有什么意见吗?使用??与涉及cloudwatch、lambdas和kinesis的流式数据相比,它不是更便宜吗?非常感谢您的想法!我还没有尝试过这个,但如果它的工作成本将非常小。你能分享更多关于你的架构的信息吗?我已经发布了一个答案。请看一看。它不涉及Cloudwatch、Kinesis/Lambdas。@pythonenthusist Nice,在我面对这个问题时