Apache Flink용 관리 서비스에서 애플리케이션 로깅 설정 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink는 이전에 Amazon Kinesis Data Analytics for Apache Flink로 알려졌습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Apache Flink용 관리 서비스에서 애플리케이션 로깅 설정

Apache Flink용 관리형 서비스 애플리케이션에 Amazon CloudWatch 로깅 옵션을 추가하면 애플리케이션 이벤트 또는 구성 문제를 모니터링할 수 있습니다.

이 주제에서는 애플리케이션 이벤트를 CloudWatch 로그 스트림에 기록하도록 애플리케이션을 구성하는 방법을 설명합니다. CloudWatch 로깅 옵션은 애플리케이션이 애플리케이션 이벤트를 CloudWatch 로그에 기록하는 방식을 구성하는 데 사용하는 애플리케이션 설정 및 권한 모음입니다. AWS Management Console 또는 AWS Command Line Interface (AWS CLI) 를 사용하여 CloudWatch 로깅 옵션을 추가하고 구성할 수 있습니다.

애플리케이션에 CloudWatch 로깅 옵션을 추가하는 방법에 대한 다음 내용을 참고하십시오.

  • 콘솔을 사용하여 CloudWatch 로깅 옵션을 추가하면 Managed Service for Apache Flink가 자동으로 CloudWatch 로그 그룹과 로그 스트림을 생성하고 애플리케이션이 로그 스트림에 기록하는 데 필요한 권한을 추가합니다.

  • 를 사용하여 CloudWatch 로깅 옵션을 추가할 때는 애플리케이션의 로그 그룹과 로그 스트림을 생성하고 애플리케이션이 로그 스트림에 기록하는 데 필요한 권한을 추가해야 합니다. API

콘솔을 사용하여 CloudWatch 로깅을 설정합니다.

콘솔에서 애플리케이션 CloudWatch 로깅을 활성화하면 CloudWatch 로그 그룹과 로그 스트림이 자동으로 생성됩니다. 또한 스트림에 쓸 수 있는 권한으로 애플리케이션의 권한 정책이 업데이트됩니다.

Apache Flink용 관리형 서비스는 다음 규칙에 따라 이름이 지정된 로그 그룹을 생성합니다.ApplicationName 애플리케이션 이름입니다.

/AWS/KinesisAnalytics/ApplicationName

Managed Service for Apache Flink는 새 로그 그룹에 다음과 같은 이름으로 로그 스트림을 생성합니다.

kinesis-analytics-log-stream

애플리케이션 구성 페이지의 모니터링 로그 수준 섹션을 사용하여 애플리케이션 모니터링 지표 수준 및 모니터링 로그 수준을 설정합니다. 애플리케이션 로그 수준에 대한 자세한 내용은 애플리케이션 모니터링 수준을 제어하세요. 섹션을 참조하세요.

를 사용하여 CloudWatch 로깅을 설정합니다. CLI

를 사용하여 CloudWatch 로깅 옵션을 추가하려면 AWS CLI다음을 완료합니다.

  • CloudWatch 로그 그룹과 로그 스트림을 생성합니다.

  • 작업을 사용하여 응용 프로그램을 만들 때 로깅 옵션을 추가하거나 CreateApplication작업을 사용하여 기존 응용 프로그램에 로깅 옵션을 추가합니다. AddApplicationCloudWatchLoggingOption

  • 애플리케이션 정책에 로그에 쓸 수 있는 권한을 추가합니다.

CloudWatch 로그 그룹 및 로그 스트림을 생성합니다.

CloudWatch 로그 콘솔이나 를 사용하여 로그 그룹 및 스트리밍을 CloudWatch 생성합니다API. CloudWatch 로그 그룹 및 로그 스트림을 만드는 방법에 대한 자세한 내용은 로그 그룹 및 로그 스트림 작업을 참조하십시오.

애플리케이션 CloudWatch 로깅 옵션 사용

다음 API 작업을 사용하여 새 응용 프로그램 또는 기존 응용 프로그램에 CloudWatch 로그 옵션을 추가하거나 기존 응용 프로그램의 로그 옵션을 변경할 수 있습니다. API작업 입력에 JSON 파일을 사용하는 방법에 대한 자세한 내용은 을 참조하십시오아파치 플링크용 매니지드 서비스 API 예제 코드.

응용 프로그램을 만들 때 CloudWatch 로그 옵션 추가

다음 예제는 애플리케이션을 만들 때 CreateApplication 작업을 사용하여 CloudWatch 로그 옵션을 추가하는 방법을 보여줍니다. 이 예제에서는 다음을 대체하십시오.Amazon Resource Name (ARN) of the CloudWatch Log stream to add to the new application 자신의 정보로 이러한 작업에 대한 자세한 내용은 CreateApplication 섹션을 참조하세요.

{ "ApplicationName": "test", "ApplicationDescription": "test-application-description", "RuntimeEnvironment": "FLINK-1_15", "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 로그 옵션을 추가하는 방법을 보여줍니다. 예시에서는 각각 바꾸십시오.user input placeholder 자신의 정보로 이러한 작업에 대한 자세한 내용은 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 로그 옵션을 수정하는 방법을 보여줍니다. 예시에서는 각각 바꾸십시오.user input placeholder 자신의 정보로 이러한 작업에 대한 자세한 내용은 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 로그 옵션을 삭제하는 방법을 보여줍니다. 예시에서는 각각 바꾸십시오.user input placeholder 자신의 정보로 이러한 작업에 대한 자세한 내용은 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> }

애플리케이션 로깅 수준을 설정합니다.

애플리케이션 로깅 수준을 설정하려면 CreateApplication 작업의 MonitoringConfiguration 파라미터 또는 UpdateApplication 작업의 MonitoringConfigurationUpdate 파라미터를 사용합니다.

애플리케이션 로그 수준에 대한 자세한 내용은 애플리케이션 모니터링 수준을 제어하세요. 섹션을 참조하세요.

애플리케이션을 생성할 때 애플리케이션 로깅 수준을 설정합니다.

다음 예제의 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_15", "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole" }
애플리케이션 로깅 수준 업데이트

다음 예제의 UpdateApplication요청은 애플리케이션 로그 수준을 INFO로 설정합니다.

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

CloudWatch 로그 스트림에 쓰기 권한 추가

Apache Flink용 관리형 서비스에는 잘못된 구성 오류를 기록할 수 있는 권한이 필요합니다. CloudWatch Apache Flink용 관리형 서비스가 위임하는 AWS Identity and Access Management (IAM) 역할에 이러한 권한을 추가할 수 있습니다.

Apache Flink용 관리 서비스의 IAM 역할 사용에 대한 자세한 내용은 을 참조하십시오. Amazon Managed Service for Apache Flink의 자격 증명 및 액세스 관리

신뢰 정책

Apache Flink용 관리형 서비스에 IAM 역할 수임 권한을 부여하려면 다음 신뢰 정책을 서비스 실행 역할에 연결할 수 있습니다.

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

권한 정책

Apache Flink용 관리 서비스 CloudWatch 리소스에서 로그 이벤트를 기록할 수 있는 권한을 애플리케이션에 부여하려면 다음 권한 정책을 사용할 수 있습니다. IAM 로그 그룹 및 스트림에 올바른 Amazon 리소스 이름 (ARNs) 을 제공하십시오.

{ "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:*", ] } ] }

애플리케이션 모니터링 수준을 제어하세요.

애플리케이션의 모니터링 지표 수준모니터링 로그 수준을 사용하여 애플리케이션 로그 메시지 생성을 제어할 수 있습니다.

애플리케이션의 모니터링 지표 수준은 로그 메시지의 세분성을 제어합니다. 모니터링 지표 수준은 다음과 같이 정의됩니다.

애플리케이션의 모니터링 로그 수준은 애플리케이션 로그의 상세 정보를 제어합니다. 모니터링 로그 수준은 다음과 같이 정의됩니다.

  • 오류: 애플리케이션의 잠재적 재해 이벤트.

  • 경고: 애플리케이션의 잠재적으로 위험한 상황입니다.

  • 정보: 애플리케이션의 정보 및 일시적 오류 이벤트. 이 로그 수준을 사용하는 것이 좋습니다.

  • 디버그: 애플리케이션을 디버깅하는 데 가장 유용한 세분화된 정보 이벤트입니다. 참고: 이 수준은 임시 디버깅 용도로만 사용하세요.

로깅 모범 사례 적용

애플리케이션에서는 정보 로깅 수준을 사용하는 것이 좋습니다. 오류 수준이 아닌 정보 수준에서 기록되는 Apache Flink 오류가 표시되도록 하려면 이 수준을 사용하는 것이 좋습니다.

애플리케이션 문제를 조사하는 동안에는 디버그 수준을 일시적으로만 사용하는 것이 좋습니다. 문제가 해결되면 정보 수준으로 다시 전환하세요. 디버그 로깅 수준을 사용하면 애플리케이션 성능이 크게 영향을 받습니다.

과도한 로깅은 애플리케이션 성능에도 상당한 영향을 미칠 수 있습니다. 예를 들어 처리된 모든 레코드에 대해 로그 항목을 작성하지 않는 것이 좋습니다. 과도한 로깅은 데이터 처리에 심각한 병목 현상을 일으킬 수 있으며, 소스에서 데이터를 읽는 데 배압이 발생할 수 있습니다.

로깅 문제 해결 수행

애플리케이션 로그가 로그 스트림에 기록되지 않는 경우 다음을 확인하세요.

  • 애플리케이션의 IAM 역할과 정책이 올바른지 확인하십시오. 로그 스트림에 액세스하려면 애플리케이션 정책에 다음과 같은 권한이 필요합니다.

    • logs:PutLogEvents

    • logs:DescribeLogGroups

    • logs:DescribeLogStreams

    자세한 내용을 알아보려면 CloudWatch 로그 스트림에 쓰기 권한 추가 섹션을 참조하세요.

  • 애플리케이션이 실행 중인지 확인합니다. 애플리케이션 상태를 확인하려면 콘솔에서 애플리케이션 페이지를 보거나 DescribeApplication또는 ListApplications작업을 사용하십시오.

  • 기타 애플리케이션 문제를 downtime 진단하는 등의 CloudWatch 지표를 모니터링하세요. CloudWatch 지표 읽기에 대한 자세한 내용은 을 참조하십시오.

CloudWatch 로그 인사이트 사용

애플리케이션에서 CloudWatch 로깅을 활성화한 후에는 CloudWatch Logs Insights를 사용하여 애플리케이션 로그를 분석할 수 있습니다. 자세한 내용은 로그 인사이트를 통한 CloudWatch 로그 분석 단원을 참조하십시오.