将 Elastic Bean CloudWatch stalk 与亚马逊日志配合使用 - AWS Elastic Beanstalk

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

将 Elastic Bean CloudWatch stalk 与亚马逊日志配合使用

本主题介绍亚马逊 CloudWatch 日志服务可以为 Elastic Beanstalk 提供的监控功能。它还会引导您完成配置设置,并列出每个 Elastic Beanstalk 平台的日志位置。

通过实施 CloudWatch 日志,您可以执行以下监控活动:

  • 监控和存档您环境中的EC2亚马逊实例中您的 Elastic Beanstalk 应用程序、系统和自定义日志文件。

  • 配置警报,使您可以更轻松地对指标筛选器提取的特定日志流事件做出反应。

安装在您环境中每个 Amazon EC2 实例上的 CloudWatch 日志代理会将您配置的每个日志组的指标数据点发布到该 CloudWatch 服务。每个日志组都应用自己的过滤器模式来确定要 CloudWatch 作为数据点发送到哪些日志流事件。属于同一日志组的各日志流具有相同的保留、监控和访问控制设置。您可以将 Elastic Beanstalk 配置为自动将日志流式传输到服务 CloudWatch ,如中所述。将实例日志流式传输到 CloudWatch 日志有关 CloudWatch 日志的更多信息,包括术语和概念,请参阅 Amazon CloudWatch Logs 用户指南

除了实例日志外,如果您为环境启用增强型运行状况,则可以将环境配置为将运行状况信息流式传输到 CloudWatch 日志。请参阅 将 Elastic Beanstalk 环境运行状况信息流式传输到 Amazon CloudWatch Logs

将日志流式传输到日志的 CloudWatch 先决条件

要启用将日志从您环境的 Amazon EC2 实例流式传输到 CloudWatch 日志,您必须满足以下条件。

  • 平台 – 由于此功能仅在此版本推出时或之后发布的平台版本中可用,因此,如果您使用的是早期平台版本,请将环境更新为当前环境。

  • 如果您的 E AWSElasticBeanstalkWorkerTierlastic Beanstalk 实例配置文件中没有AWSElasticBeanstalkWebTier或 El astic Beanstalk 托管策略,则必须在配置文件中添加以下内容才能启用此功能。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": [ "*" ] } ] }

Elastic Beanstalk 是如何设置日志 CloudWatch 的

Elastic Beanstalk 在其创建的 CloudWatch 每个实例上安装一个使用默认配置设置的日志代理。要了解更多信息,请参阅CloudWatch 日志代理参考

当您启用将实例日志流式传输到 CloudWatch 日志时,Elastic Beanstalk 会将您的环境实例中的日志文件发送到日志。 CloudWatch 不同的平台将流式传输不同的日志。下表按平台列出了日志。

平台/平台分支

日志

Docker /

平台分支:在 64 位 Amazon Linux 2 上运行的 Docker

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/docker

  • /var/log/docker-events.log

  • /var/log/eb-docker/con eb-current-app tainers/ /stdouterr.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Docker /

平台分支:在 64 位亚马逊 Linux 上ECS运行 2

  • /var/log/docker-events.log

  • /var/l eb-ecs-mgr og/ .log

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/ecs/ecs-agent.log

  • /var/log/ecs/ecs-init.log

Go

。 NETLinux 上的内核

Java /平台分支:在 64 位 Amazon Linux 2 上运行的 Corretto

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/web.stdout.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Node.js

Python

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/web.stdout.log

  • /var/log/httpd/access_log

  • /var/log/httpd/error_log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Tomcat

PHP

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/httpd/access_log

  • /var/log/httpd/error_log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

。 NET在 Windows 服务器上

  • C:\inetpub\logs\\ W3 LogFilesSVC1\ u_ex*.log

  • C:\Program Files\ Amazon\ElasticBeanstalk\ logs\ AWSDeployment .log

  • C:\Program Files\ Amazon\ElasticBeanstalk\ logs\ Hooks.log

Ruby

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/puma/puma.log

  • /var/log/web.stdout.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

注意

2022 年 7 月 18 日,Elastic Beanstalk 将所有基于亚马逊 Linux () 的平台分支的状态设置为停用。AMI AL1有关迁移到当前且完全受支持的 Amazon Linux 2023 平台分支的更多信息,请参阅 将 Elastic Beanstalk Linux 应用程序迁移到 Amazon Linux 2023 或 Amazon Linux 2

下表按平台列出了从基于 Amazon LinuxAMI(之前的 Amazon Linux 2)的平台分支上的实例流式传输的日志文件。

平台/平台分支

日志

Docker /

平台分支:在 64 位 Amazon Linux 上运行的 Docker

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/docker-events.log

  • /var/log/docker

  • /var/log/nginx/access.log

  • /var/log/eb-docker/con eb-current-app tainers/ /stdouterr.log

Docker /

平台分支:在 64 位 Amazon Linux 上运行的多容器 Docker

  • /var/log/eb-activity.log

  • /var/log/ecs/ecs-init.log

  • /var/l eb-ecs-mgr og/ .log

  • /var/log/ecs/ecs-agent.log

  • /var/log/docker-events.log

Glassfish(预配置的 Docker)

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/docker-events.log

  • /var/log/docker

  • /var/log/nginx/access.log

Go

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/nginx/access.log

Java /

平台分支:在 64 位 Amazon Linux 上运行的 Java 8

平台分支:在 64 位 Amazon Linux 上运行的 Java 7

  • /var/log/eb-activity.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

  • /var/log/web-1.error.log

  • /var/log/web-1.log

Tomcat

  • /var/log/eb-activity.log

  • /var/log/httpd/error_log

  • /var/log/httpd/access_log

  • /var/log/nginx/error_log

  • /var/log/nginx/access_log

Node.js

  • /var/log/eb-activity.log

  • /var/log/nodejs/nodejs.log

  • /var/log/nginx/error.log

  • /var/log/nginx/access.log

  • /var/log/httpd/error.log

  • /var/log/httpd/access.log

PHP

  • /var/log/eb-activity.log

  • /var/log/httpd/error_log

  • /var/log/httpd/access_log

Python

  • /var/log/eb-activity.log

  • /var/log/httpd/error_log

  • /var/log/httpd/access_log

  • /opt/python/log/supervisord.log

Ruby /

平台分支:基于在 64 位 Amazon Linux 上运行的 Ruby 的 Puma

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/puma/puma.log

  • /var/log/nginx/access.log

Ruby /

平台分支:基于在 64 位 Amazon Linux 上运行的 Ruby 的 Passenger

  • /var/log/eb-activity.log

  • /var/app/support/logs/passenger.log

  • /var/app/support/logs/access.log

  • /var/app/support/logs/error.log

Elastic Beanstalk 在日志中为其流式 CloudWatch 传输的各种日志文件配置日志组。要从 Logs 中检索特定的 CloudWatch 日志文件,您必须知道相应日志组的名称。日志组命名方案取决于平台的操作系统。

对于 Linux 平台,为实例上日志文件位置加上前缀 /aws/elasticbeanstalk/environment_name 以获得日志组名称。例如,要检索文件 /var/log/nginx/error.log,请指定日志组 /aws/elasticbeanstalk/environment_name/var/log/nginx/error.log

有关 Windows 平台,请参阅下表以了解每个日志文件对应的日志组。

实例上日志文件

日志组

C:\Program Files\Amazon\ElasticBeanstalk\logs\AWSDeployment.log

/aws/elasticbeanstalk/<environment-name>/EBDeploy-Log

C:\Program Files\Amazon\ElasticBeanstalk\logs\Hooks.log

/aws/elasticbeanstalk/<environment-name>/EBHooks-Log

C:\inetpub\logs\LogFiles (整个目录)

/aws/elasticbeanstalk/<environment-name>/IIS-Log

将实例日志流式传输到 CloudWatch 日志

您可以使用 Elastic Beanstalk 控制台、CLI EB 或配置选项启用将实例 CloudWatch 日志流式传输到日志。

在启用它之前,请设置与 L CloudWatch ogs 代理一起使用的IAM权限。您可以将以下自定义策略挂载到分配给您的环境的实例配置文件

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "*" ] } ] }

使用 Elastic Beanstalk 控制台进行实例日志流式传输

将实例日志流式传输到 CloudWatch 日志
  1. 打开 Elastic Beanstalk 控制台,然后在 “区域” 列表中,选择您的。 AWS 区域

  2. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在导航窗格中,选择 Configuration(配置)。

  4. Updates, monitoring, and logging(更新、监控和日志记录)配置类别中,选择 Edit(编辑)。

  5. 在 “将实例日志流式传输到 CloudWatch 日志” 下:

    • 启用 Log streaming (日志流式传输)

    • Retention (保留) 设置为保存日志的天数。

    • 选择 Lifecycle (生命周期) 设置,该设置确定日志是否在环境终止时进行保存。

  6. 要保存更改,请选择页面底部的 Apply(应用)。

在启用日志流式传输后,您可以返回到软件配置类别或页面并查找日志组链接。单击此链接可在 CloudWatch 控制台中查看您的日志。

使用 EB 进行实例日志流式传输 CLI

要使用 EB 启用将实例 CloudWatch 日志流式传输到日志CLI,请使用eb logs命令。

$ eb logs --cloudwatch-logs enable

您也可以使用从 eb logs “日志” 中检索 CloudWatch 日志。您可以检索环境的所有实例日志,也可以使用该命令的多个选项来指定要检索的日志的子集。例如,以下命令检索您的环境中一组完整的实例日志,并且将它们保存到 .elasticbeanstalk/logs 下的目录。

$ eb logs --all

具体而言,--log-group 选项可让您检索特定日志组的实例日志,对应于特定实例上日志文件。为此,您需要了解对应于要检索的日志文件的日志组的名称。您可以在 Elastic Beanstalk 是如何设置日志 CloudWatch 的 中找到此信息。

使用配置文件进行日志流式传输

创建或更新环境时,您可以使用配置文件来设置和配置向日志传输的实例 CloudWatch 日志。以下示例配置文件启用默认实例日志流式传输。Elastic Beanstalk 为您的环境平台流式传输一组默认日志文件。要使用此示例,请将该文本复制到应用程序源代码包的顶层 .ebextensions 目录中扩展名为 .config 的文件。

option_settings: - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: StreamLogs value: true

自定义日志文件流式传输

Elastic Beanstalk 与日志的 CloudWatch 集成不直接支持您的应用程序生成的自定义日志文件的流式传输。要流式传输自定义日志,请使用配置文件直接安装 CloudWatch 代理并配置要推送的文件。有关示例配置文件,请参阅 logs-streamtocloudwatch-linux.config

注意

该示例在 Windows 平台上不起作用。

有关配置 CloudWatch 日志的更多信息,请参阅 Amazon CloudWatch 用户指南中的CloudWatch 代理配置文件参考

故障排除 CloudWatch 日志集成

如果您在日志中找不到预期的某些环境实例 CloudWatch 日志,则可以调查以下常见问题:

  • 您的IAM角色缺少所需的IAM权限。

  • 您在不支持 Logs AWS 区域 的环境中启动了您的 CloudWatch 环境。

  • 您的其中一个自定义日志文件不存在于您指定的路径中。