使用 Firelens 日志路由器为 Amazon ECS 创建自定义日志解析器 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Firelens 日志路由器为 Amazon ECS 创建自定义日志解析器

由 Varun Sharma (AWS) 编写

环境:生产

技术: DevOps; 容器和微服务

工作负载:所有其他工作负载

Amazon Web Services:Amazon ECS

Summary

Firelens 是适用于 Amazon Elastic Container Service (Amazon ECS)和 AWS Fargate 的日志路由器。您可以使用 Firelens 将容器日志从 Amazon ECS 路由到亚马逊 CloudWatch 和其他目的地(例如 Splunk 或 S um o Logic)。Firelens 使用 FluentdFluent Bit 作为日志记录代理,这意味着您可以使用 Amazon ECS 任务定义参数来路由日志。

通过选择在源级别解析日志,您可以分析您的日志记录数据并执行查询,从而更加高效和有效地响应操作问题。由于不同的应用程序具有不同的日志模式,因此您需要使用自定义解析器来构建日志,以便在最终目的地更轻松地进行搜索。

此模式使用带有自定义解析器的 Firelens 日志路由器,将日志 CloudWatch 从在 Amazon ECS 上运行的示例 Spring Boot 应用程序推送到。然后,您可以使用 Amazon CloudWatch Logs Insights 根据自定义解析器生成的自定义字段筛选日志。

先决条件和限制

先决条件

  • 活跃 Amazon Web Services (AWS) account

  • AWS 命令行界面(AWS CLI)已在本地计算机上安装和配置。

  • 已在本地计算机上安装并配置的 Docker。

  • Amazon Elastic Container Registry (Amazon ECR) 上现有的基于 Spring Boot 的容器化应用程序。 

架构

使用 Firelens 日志路由器将日志 CloudWatch 从 Amazon ECS 上运行的应用程序推送到。

技术堆栈

  • CloudWatch

  • Amazon ECR

  • Amazon ECS

  • Fargate

  • Docker

  • Fluent Bit

工具

  • Amazon ECR - Amazon Elastic Container Registry (Amazon ECR) 是一项由 AWS 托管的容器映像注册表服务,该服务安全可靠,且可扩展。

  • Amazon ECS - Amazon Elastic Container Service (Amazon ECS) 是一项高度可扩展的快速容器管理服务,可轻松在集群上运行、停止和管理容器。

  • AWS 身份识别和访问管理(IAM) - IAM 是一项 Web 服务,用于安全控制 Amazon Web Services 的访问。

  • AWS CLI - AWS 命令行界面(AWS CLI)是一种开源工具,可让您使用命令行 Shell 中的命令与 Amazon Web Services 交互。

  • Docker - Docker 是用于开发、发布和运行应用程序的开放平台。

代码

此模式附加了以下文件:

  • customFluentBit.zip - 包含用于添加自定义解析和配置的文件。

  • firelens_policy.json - 包含用于创建 IAM policy 的策略文档。

  • Task.json - 包含 Amazon ECS 的示例任务定义。

操作说明

任务描述所需技能

创建 Amazon ECR 存储库。

登录 AWS 管理控制台,打开 Amazon ECR 控制台,然后创建一个名为 fluentbit_custom 的存储库。

有关此内容的更多信息,请参阅 Amazon ECR 文档中的创建存储库

系统管理员、开发人员

解压 customFluentBit .zip 压缩包。

 

  1. customFluentBit.zip 软件包(附件)下载至本地计算机。 

  2. 运行以下命令解压缩到 customFluentBit 目录中:unzip -d customFluentBit.zip

  3. 该目录包含添加自定义解析和配置所需以下文件:

    • parsers/springboot_parser.conf - 包含解析器指令并定义自定义解析器的正则表达式(regex)模式。您可以为您的特定解析器添加正则表达式模式。

    •  conf/parse_springboot.conf - 包含筛选器和服务指令。

    • Dockerfile

创建自定义 Docker 映像。

  1. 将目录更改为 customFluentBit

  2. 打开 Amazon ECR 控制台,选择 fluentbit_custom 存储库,然后选择查看推送命令。 

  3. 上传您的项目。 

  4. 上传完成后,复制生成的 URL。在 Amazon ECS 中创建容器时,此 URL 是必需的

有关更多信息,请参阅 Amazon ECR 文档中的推送 Docker 映像。 

系统管理员、开发人员
任务描述所需技能

创建 Amazon ECS 集群。

按照 Amazon ECS 文档中创建集群仅联网模板部分中的说明创建 Amazon ECS 集群。

注意:请务必选择创建 VPC 来为您的 Amazon ECS 集群创建新的虚拟私有云(VPC)。

系统管理员、开发人员
任务描述所需技能

设置 Amazon ECS 任务执行 IAM 角色。

使用 AmazonECSTaskExecutionRolePolicy 托管策略创建 Amazon ECS 任务执行 IAM 角色。有关此内容的更多信息,请参阅 Amazon ECS 文档中的 Amazon ECS 任务执行 IAM 角色

注意:请务必记录 IAM 角色的 Amazon 资源名称(ARN)。

系统管理员、开发人员

将 IAM policy 附加到 Amazon ECS 任务执行 IAM 角色。

  1. 使用 firelens_policy.json(附加)策略文档创建 IAM policy。有关更多信息,请参阅 IAM 文档中的在 JSON 选项卡上创建策略

  2. 将此策略附加到您之前创建的 Amazon ECS 任务执行 IAM 角色。有关此内容的更多信息,请参阅 IAM 文档中的添加 IAM policy (AWS CLI)。 

系统管理员、开发人员

设置 Amazon ECS 任务定义。

  1. 更新 Task.json 示例任务定义(附加)中的以下部分:

    • 使用任务执行 IAM 角色的 ARN 更新 executionRoleArntaskRoleArn

    • 使用您之前创建的自定义 Fluent Bit Docker 映像更新 containerDefinitions 中的映像

    • 使用您的应用程序映像名称更新 containerDefinitions 中的映像

  2. 打开 Amazon ECS 控制台,选择任务定义,选择创建新任务定义,然后在选择兼容性页面上选择 Fargate。   

  3. 选择通过 Json 配置,将更新的 Task.json 文件粘贴到文本区域,然后选择保存

  4. 创建任务定义

有关此内容的更多信息,请参阅 Amazon ECS 文档中的创建任务定义

系统管理员、开发人员
任务描述所需技能

运行 Amazon ECS 任务。

在 Amazon ECS 控制台上,选择集群,选择您之前创建的集群,然后运行独立任务。

有关此内容的更多信息,请参阅 Amazon ECS 文档中的运行独立任务

系统管理员、开发人员
任务描述所需技能

验证日志。

  1. 打开 CloudWatch 控制台,选择 “日志组”,然后选择/aws/ecs/containerinsights/{{cluster_ARN}}/firelens/application

  2. 验证日志,特别是自定义解析器添加的自定义字段。

  3. 用于 CloudWatch 根据自定义字段筛选日志。

系统管理员、开发人员

相关资源

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip