观测云采集 Amazon ECS 日志

云计算
可观测性
0
0
## 简介 Amazon Elastic Container Service (Amazon ECS) 是一项高度可扩展的快速容器管理服务,可以使用它轻松运行、停止和管理群集上的容器。这些容器可以运行在自己的 EC2 服务器上,也可以运行在由 AWS Fargate 托管的无服务器基础设施。\ 针对任务使用 Fargate 的启动类型,需要启动容器的 [awslogs 日志驱动程序](https://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/using_awslogs.html),运行在容器中的应用以 STDOUT 和 STDERR I/O 流的方式输出的日志,会被发送到 CloudWatch Logs 的日志组中,再通过 Func 采集这些日志,Func 再把日志通过 EC2 上部署的 DataKit 写入观测云中。 本文的日志采集就是针对 AWS Fargate 托管的容器。 ## 前置条件 * 需要先创建一个[观测云账号](https://www.guance.com/) * [安装 DataKit](https://docs.guance.com/datakit/datakit-install/) * [安装 Func 携带版](https://docs.guance.com/dataflux-func/quick-start/) * 已经拥有运行在 ECS 的 Java 应用 这里使用到的 ECS 集群名称是 cluster-docker,下面查看示例的日志及日志组。登录「[AWS](https://www.amazonaws.cn/)」,进入「Elastic Container Service」 - 点击「集群」 - 「cluster-docker」。 ![image.png](https://dev-media.amazoncloud.cn/be7d1db1ddcd49fdacff08a9686e2dab_image.png "image.png") 点击「服务名称」 ![image](https://docs.guance.com/best-practices/images/ecs/ecs-log-3.png) ![image.png](https://dev-media.amazoncloud.cn/89ef59086fdd4e5cb6ef3b45d69d384f_image.png "image.png") 进入任务 ![image.png](https://dev-media.amazoncloud.cn/c309303f1bb94ac79760a7075bf28add_image.png "image.png") 在详细信息标签的容器下面找到日志配置。 ![image.png](https://dev-media.amazoncloud.cn/64f584c8bace41dd94fc89d161d0d371_image.png "image.png") 点击「日志标签」,里面是应用的日志,接下来采集这些日志。 ![image.png](https://dev-media.amazoncloud.cn/7f51847b83124f6fa723ea2658c4527d_image.png "image.png") ## 操作步骤 Attention 示例所使用的版本为 DataKit 1.4.18 ### 步骤 1 AWS 配置 #### 1.1 用户密钥 使用部署 ECS 用到的账号,AWS 创建该用户时提供的 `Access key ID` 和 `Secret access key` 后面会使用到。 #### 1.2 设置 AWS 用户权限 登录 AWS 的 IAM 控制台,在用户下面找到 ECS 所在的「用户」- 点击「添加权限」。 ![image.png](https://dev-media.amazoncloud.cn/6e867764e2ce41a182d443016636d131_image.png "image.png") 点击「直接附加现有策略」,「筛选策略」选中 `CloudWatchLogsReadOnlyAccess`、`CloudWatchEventsReadOnlyAccess`,然后点击「下一步:审核」。 ![image.png](https://dev-media.amazoncloud.cn/97314d77d225454a97c4621e539d94f1_image.png "image.png") ### 步骤 2 Func 配置 #### 2.1 配置环境变量 登录「Func」 - 「开发」 - 「环境变量」 - 「添加环境变量」。这里添加 3 个环境变量: * `AWS_LOG_KEY` 值对应[步骤 1.1](https://docs.guance.com/best-practices/cloud-native/amazon-ecs/#1.1) 中 AWS 用户的 `Access key ID` * `AWS_LOG_SECRET_ACCESS_KEY` 值对应[步骤 1.1](https://docs.guance.com/best-practices/cloud-native/amazon-ecs/#1.1)中 AWS 用户的 `Secret access key` * `AWS_REGION_NAME` 值对应 AWS 用户所在的 `REGION`。 ![image.png](https://dev-media.amazoncloud.cn/465634a9992d4f44902499e2a3e49a97_image.png "image.png") #### 2.2 配置连接器 登录「Func」 - 「开发」 - 「连接器」 - 「添加连接器」。\ 这里 ID 必须填 DataKit,主机对应已安装 DataKit 的地址,端口是 DataKit 的端口。(本示例直接用 IP,所以协议填 HTTP)\ 点击「测试连通性」,有![✅](https://twemoji.maxcdn.com/v/latest/svg/2705.svg ":white_check_mark:")返回,说明 DataKit 可用。 ![image.png](https://dev-media.amazoncloud.cn/d39e6678d5da4ddca5e786cdf94dd972_image.png "image.png") #### 2.3 PIP 工具配置 登录「Func」 - 「管理」 - 「实验性功能」,右侧选中「开启 PIP 工具模块」。 ![image.png](https://dev-media.amazoncloud.cn/1fb18ab14fa84d3e897e72d569cc5f74_image.png "image.png") 点击左侧的「PIP 工具」 - 选择「阿里云镜像」 - 输入 `boto3` - 点击「安装」。 ![image.png](https://dev-media.amazoncloud.cn/d58d3e0ae9c348818f3d79d31c48ade2_image.png "image.png") #### 2.4 脚本库 登录「Func」 - 「开发」 - 「脚本库」 - 「添加脚本集」,ID 可以自定义,点击「保存」。 ![image.png](https://dev-media.amazoncloud.cn/b3b116b3b96444ee968783ffca619a42_image.png "image.png") 找到「AWS 日志采集」 - 点击「添加脚本」。 ![image.png](https://dev-media.amazoncloud.cn/88f9c3fb1a344c9a838ec5a67592b9c5_image.png "image.png") 输入 ID ,示例这里定义为 `aws_ecs__log`,点击「保存」。 ![image.png](https://dev-media.amazoncloud.cn/8ea97f71a459419c804cee58d25ac254_image.png "image.png") 点击「编辑」。 ![image.png](https://dev-media.amazoncloud.cn/8519a68da2554ee5bb79bc638efaaf3d_image.png "image.png") 输入如下内容: 输入内容 ``` ``` Attention * 上述内容第4行的 `ecs_log` ,需要确保同一个 Func 中唯一,可以改成其它字母。\ * 第6行的 `awc_ecs` 即是刚才添加的脚本集 ID\ * 第 40、41、42 行中的 `AWS_LOG_KEY`、`AWS_LOG_SECRET_ACCESS_KEY`、`AWS_REGION_NAME` 对应[步骤 2.1](https://docs.guance.com/best-practices/cloud-native/amazon-ecs/#2.1) 中的环境变量名,如果环境变量名变了,需要做对应修改。 #### 2.5 测试脚本 如下图选择「run」,第二个红框所示内容中: * `measurement` 的值输入 `ecs_log_source`,这个值对应观测云日志中的日志来源; * `logGroupName` 的值对应**前置条件**的日志配置中查到的 `awslogs-group`; * `interval` 的值对应采集频率,示例这里是 60 秒。 ![image.png](https://dev-media.amazoncloud.cn/705acc35901e498a9f352cfb187b1c7a_image.png "image.png") 点击「执行」,输出`total 8`,即上报八条日志。 ![image.png](https://dev-media.amazoncloud.cn/7a90eb90bf4940b69948418930c2fa81_image.png "image.png") 登录「[观测云](https://console.guance.com/)」,进入「日志」模块,数据源选择「ecs_log_source」,即可看到日志。 ![image.png](https://dev-media.amazoncloud.cn/c5c5ae4ed23143f9a8841f0c5bc9779b_image.png "image.png") 点击右上角的「发布」 ![image.png](https://dev-media.amazoncloud.cn/8f6609955a1f4b158f6fb4bdb663f4a5_image.png "image.png") 点击右上角「结束编辑」 ![image.png](https://dev-media.amazoncloud.cn/bd579ecb663b413686a171e386799b45_image.png "image.png") #### 2.6 自动采集日志 登录「Func」 - 「管理」 - 「自动触发配置」 - 「新建」,参数输入刚才执行的内容。 ``` { "measurement": "ecs_log_source", "logGroupName": "/ecs/demo-task", "interval": 60 } ``` ![image.png](https://dev-media.amazoncloud.cn/9c0e562e44474dbd9dd01a03025e194f_image.png "image.png") 时间选择每分钟或者每 5 分钟,点击「保存」 ![image.png](https://dev-media.amazoncloud.cn/392f1a0f88a8488bb60db347417a5231_image.png "image.png") 在「自动触发配置」列表中存在「aws_ecs log」的记录 ![image.png](https://dev-media.amazoncloud.cn/6e3fe7e46d4c424b96cad5956e1ac36f_image.png "image.png") 点击「近期执行」查看执行情况 ![image.png](https://dev-media.amazoncloud.cn/f30235e93e0048059fb199f0d8720ffe_image.png "image.png")
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭