设置应用程序日志记录 - Amazon Kinesis Data Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

设置应用程序日志记录

通过添加亚马逊 CloudWatch 将选项记录到 Kinesis Data Analytics 应用程序中,您可以监控应用程序事件或配置问题。

本主题介绍如何配置应用程序以将应用程序事件写入到 CloudWatch 日志流。一个 CloudWatch 日志记录选项是应用程序设置和权限集合,应用程序用于配置将应用程序事件写入到的方式。 CloudWatch 日志。你可以添加和配置 CloudWatch 日志记录选项使用Amazon Web Services Management Console或者Amazon Command Line Interface(Amazon CLI)。

请注意有关添加以下内容: CloudWatch 应用程序的日志记录选项:

  • 当你添加 CloudWatch 使用控制台的日志记录选项,Kinesis Data Analytics 创建 CloudWatch 为您提供日志组和日志流添加应用程序写入到日志流所需的权限。

  • 当你添加 CloudWatch 使用 API 的日志记录选项,您还必须创建应用程序的日志组和日志流,并添加应用程序写入到日志流所需的权限。

设置 CloudWatch 使用控制台日志记录

启用时 CloudWatch 在控制台中记录应用程序, CloudWatch 将为您创建一个日志组和日志流。此外,还会使用写入到流的权限更新应用程序的权限策略。

以下屏幕截图显示CloudWatch 日志记录在中设置配置应用页.

 


                控制台屏幕截图,显示创建应用程序页面上的设置。

Kinesis Data Analytics(使用以下约定)创建一个名为的日志组,ApplicationName是你的应用程序的名称。

/aws/kinesis-analytics/ApplicationName

Kinesis Data Analytics 会在新日志组中创建一个具有以下名称的日志流。

kinesis-analytics-log-stream

您可以使用监控日志级别的 部分配置应用页. 有关应用程序日志级别的信息,请参阅应用程序监控级别

设置 CloudWatch 使用 CLI 日志记录

添加 CloudWatch 使用日志记录选项Amazon CLI中,执行以下操作:

  • 创建 CloudWatch 日志组和日志流。

  • 使用 CreateApplication 操作在创建应用程序时添加日志记录选项,或使用 AddApplicationCloudWatchLoggingOption 操作在现有应用程序中添加日志记录选项。

  • 在应用程序的策略中添加权限以写入到日志。

创建 CloudWatch 日志组和日志流

你创建了 CloudWatch 使用日志组和流 CloudWatch 日志控制台或 API。有关创建 CloudWatch 日志组和日志流,请参阅使用日志组和日志流.

使用应用程序 CloudWatch 记录选项

使用以下 API 操作添加 CloudWatch 将日志选项更改到新的或现有的应用程序,或者更改现有应用程序的日志选项。有关如何将 JSON 文件用于 API 操作输入的信息,请参阅 Kinesis Data Analytics API 示例代码

添加 CloudWatch 在创建应用程序时记录选项

以下示例说明了如何使用CreateApplication添加 CloudWatch 创建应用程序时的日志选项。在示例中,替换的 Amazon 资源名称 (ARN) CloudWatch 要添加到新应用程序的日志流用你自己的信息。有关该操作的更多信息,请参阅 CreateApplication

{ "ApplicationName": "test", "ApplicationDescription": "test-application-description", "RuntimeEnvironment": "FLINK-1_13", "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation":{ "BucketARN": "arn:aws:s3:::mybucket", "FileKey": "myflink.jar" } }, "CodeContentType": "ZIPFILE" } }, "CloudWatchLoggingOptions": [{ "LogStreamARN": "<Amazon Resource Name (ARN) of the CloudWatch log stream to add to the new application>" }] }

添加 CloudWatch 将选项记录到现有应用程序

以下示例说明了如何使用AddApplicationCloudWatchLoggingOption添加 CloudWatch 现有应用程序的日志选项。在该示例中,将每个用户输入占位符替换为您自己的信息。有关该操作的更多信息,请参阅 AddApplicationCloudWatchLoggingOption

{ "ApplicationName": "<Name of the application to add the log option to>", "CloudWatchLoggingOption": { "LogStreamARN": "<ARN of the log stream to add to the application>" }, "CurrentApplicationVersionId": <Version of the application to add the log to> }

更新现有的 CloudWatch 日志选项

以下示例说明了如何使用UpdateApplication修改现有的操作 CloudWatch 日志选项。在该示例中,将每个用户输入占位符替换为您自己的信息。有关该操作的更多信息,请参阅 UpdateApplication

{ "ApplicationName": "<Name of the application to update the log option for>", "CloudWatchLoggingOptionUpdates": [ { "CloudWatchLoggingOptionId": "<ID of the logging option to modify>", "LogStreamARNUpdate": "<ARN of the new log stream to use>" } ], "CurrentApplicationVersionId": <ID of the application version to modify> }

删除集群 CloudWatch 应用程序中的日志选项

以下示例说明了如何使用DeleteApplicationCloudWatchLoggingOption删除现有的操作 CloudWatch 日志选项。在该示例中,将每个用户输入占位符替换为您自己的信息。有关该操作的更多信息,请参阅 DeleteApplicationCloudWatchLoggingOption

{ "ApplicationName": "<Name of application to delete log option from>", "CloudWatchLoggingOptionId": "<ID of the application log option to delete>", "CurrentApplicationVersionId": <Version of the application to delete the log option from> }

设置应用程序日志记录级别

要设置应用程序日志记录的级别,请使用MonitoringConfiguration的参数CreateApplication操作或MonitoringConfigurationUpdate的参数UpdateApplicationaction.

有关应用程序日志级别的信息,请参阅应用程序监控级别

在创建应用程序时设置应用程序日志记录级别

CreateApplication 操作的以下示例请求将应用程序日志级别设置为 INFO

{ "ApplicationName": "MyApplication", "ApplicationDescription": "My Application Description", "ApplicationConfiguration": { "ApplicationCodeConfiguration":{ "CodeContent":{ "S3ContentLocation":{ "BucketARN":"arn:aws:s3:::mybucket", "FileKey":"myflink.jar", "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345" } }, "CodeContentType":"ZIPFILE" }, "FlinkApplicationConfiguration": "MonitoringConfiguration": { "ConfigurationType": "CUSTOM", "LogLevel": "INFO" } }, "RuntimeEnvironment": "FLINK-1_13", "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole" }
更新应用程序日志记录级别

UpdateApplication 操作的以下示例请求将应用程序日志级别设置为 INFO

{ "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "MonitoringConfigurationUpdate": { "ConfigurationTypeUpdate": "CUSTOM", "LogLevelUpdate": "INFO" } } } }

将权限添加到写入权限 CloudWatch 日志流

Kinesis Data Analytics 需要相应的权限以将配置错误写入到 CloudWatch。您可以将这些权限添加到Amazon Identity and Access ManagementKinesis Data Analytics 承担的 (IAM) 角色。

有关将 IAM 角色用于 Kinesis Data Analytics 的更多信息,请参阅Amazon Kinesis Data Analytics 中的 Identity and Access Management 适用于 Apache Flink.

信任策略

要向 Kinesis Data Analytics 授予担任 IAM 角色的权限,您可以将以下信任策略附加到服务执行角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "kinesisanalytics.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

权限策略

要为应用程序授予权限以将日志事件写入到 CloudWatch 通过使用 Kinesis Data Analytics 资源,您可以使用以下 IAM 权限策略。为日志组和流提供正确的 Amazon 资源名称 (ARN)。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt0123456789000", "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:log-stream:my-log-stream*", "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:*", "arn:aws:logs:us-east-1:123456789012:log-group:*", ] } ] }

应用程序监控级别

您可以使用应用程序的监控指标级别监控日志级别,以控制生成应用程序日志消息的过程。

应用程序的监控指标级别控制日志消息的粒度。监控指标级别定义如下:

应用程序的监控日志级别控制应用程序日志的详细程度。监控日志级别定义如下:

  • 错误:应用程序的潜在灾难性事件。

  • 警告:应用程序的潜在危害情况。

  • Info:应用程序的信息性和暂时性故障事件。我们建议您使用该日志记录级别。

  • Debug:对调试应用程序非常有用的精细信息性事件。注意:仅将该级别用于临时调试目的。

日志记录最佳实践

我们建议您的应用程序使用信息日志记录级别。我们建议您使用该级别,以确保您看到 Apache Flink 错误,这些错误是在信息级别而不是错误级别记录的。

我们建议您仅在调查应用程序问题时临时使用调试级别。在解决问题后,请切换回信息级别。使用调试日志记录级别将严重影响应用程序的性能。

过多的日志记录也可能会严重影响应用程序性能。例如,我们建议您不要为每个处理的记录写入一个日志条目。过多的日志记录可能会导致严重的数据处理瓶颈,并且可能会导致从源中读取数据时出现反向压力。

日志记录故障排除

如果没有将应用程序日志写入到日志流,请验证以下内容:

  • 验证应用程序的 IAM 角色和策略是否正确。应用程序的策略需要具有以下权限以访问日志流:

    • logs:PutLogEvents

    • logs:DescribeLogGroups

    • logs:DescribeLogStreams

    有关更多信息,请参阅 将权限添加到写入权限 CloudWatch 日志流

  • 验证应用程序是否正在运行。要检查应用程序的状态,请在控制台中查看应用程序的页面,或者使用 DescribeApplicationListApplications 操作。

  • 显示器 CloudWatch 例如指标downtime以诊断其他应用程序问题。有关阅读的信息 CloudWatch 指标,请参阅指标与维度.

下一个步骤

启用后 CloudWatch 登录你的应用程序,你可以使用 CloudWatch 记录见解以分析应用程序日志。有关更多信息,请参阅 使用分析日志 CloudWatch 日志见解