애플리케이션 로깅 설정 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink는 이전에 Amazon Kinesis Data Analytics for 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 로그 그룹과 로그 스트림을 생성하고 애플리케이션이 로그 스트림에 기록하는 데 필요한 권한을 추가합니다.

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

콘솔을 사용한 CloudWatch 로깅 설정

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

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

/AWS/KinesisAnalytics/ApplicationName

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

kinesis-analytics-log-stream

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

CLI를 사용한 CloudWatch 로깅 설정

를 사용하여 CloudWatch 로깅 옵션을 추가하려면 다음과 AWS CLI같이 하십시오.

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

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

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

CloudWatch 로그 그룹 및 로그 스트림 생성

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

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

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

애플리케이션 생성 시 CloudWatch 로그 옵션 추가

다음 예제는 애플리케이션을 만들 때 CreateApplication 작업을 사용하여 CloudWatch 로그 옵션을 추가하는 방법을 보여줍니다. 이 예시에서는 새 애플리케이션에 추가할 CloudWatch 로그 스트림의 Amazon 리소스 이름 (ARN) 을 자체 정보로 대체합니다. 이러한 작업에 대한 자세한 내용은 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 로그 옵션을 추가하는 방법을 보여줍니다. 예제에서 각 사용자 입력 자리 표시자를 자신의 정보로 바꿉니다. 이러한 작업에 대한 자세한 내용은 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> }

애플리케이션 로깅 수준 설정

애플리케이션 로깅 수준을 설정하려면 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) 역할에 이러한 권한을 추가할 수 있습니다.

Managed Service for Apache Flink에 IAM 역할을 사용하는 방법에 대한 자세한 내용은 Amazon Managed Service for Apache Flink의 자격 증명 및 액세스 관리 섹션을 참조하세요.

신뢰 정책

Managed Service for Apache Flink에 권한을 부여하여 IAM 역할을 맡게하려면 다음의 신뢰 정책을 해당 역할에 연결합니다.

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

권한 정책

Apache Flink용 관리형 서비스 CloudWatch 리소스에서 로그 이벤트를 기록할 수 있는 권한을 애플리케이션에 부여하려면 다음 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:*", ] } ] }

애플리케이션 모니터링 수준

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

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

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

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

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

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

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

로깅 모범 사례

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

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

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

로깅 문제 해결

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

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

    • logs:PutLogEvents

    • logs:DescribeLogGroups

    • logs:DescribeLogStreams

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

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

  • 기타 애플리케이션 문제를 downtime 진단하는 등의 CloudWatch 지표를 모니터링하세요. CloudWatch 지표 읽기에 대한 자세한 내용은 을 참조하십시오Apache Flink용 매니지드 서비스의 메트릭과 디멘션.

다음 단계

애플리케이션에서 CloudWatch 로깅을 활성화한 후에는 CloudWatch Logs Insights를 사용하여 애플리케이션 로그를 분석할 수 있습니다. 자세한 정보는 Logs Insights를 통한 CloudWatch 로그 분석을 참조하세요.