在 Apache Flink 的受管理服務中設定應用程式登入 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink 之前稱為 Amazon Kinesis Data Analytics for Apache Flink。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Apache Flink 的受管理服務中設定應用程式登入

透過將 Amazon CloudWatch 日誌記錄選項新增至 Apache Flink 應用程式的受管服務,您可以監控應用程式事件或組態問題。

本主題說明如何將應用程式設定為將應用程式事件寫入 CloudWatch 記錄資料流。 CloudWatch 記錄選項是應用程式設定和權限的集合,您的應用程式用來設定將應用程式事件寫入記 CloudWatch 錄的方式。您可以使用 AWS Management Console 或 AWS Command Line Interface (AWS CLI) 來新增和設定 CloudWatch 記錄選項。

請注意下列有關將 CloudWatch 記錄選項新增至應用程式的事項:

  • 當您使用主控台新增 CloudWatch 記錄選項時,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 記錄選項新增至新的或現有的應用程式,或變更現有應用程式的記錄選項。若要取得有關如何使用JSON檔案進API行動作輸入的資訊,請參閱〈〉適用於阿帕奇 Flink 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 log 選項添加到現有的應用程序。在範例中,取代每個 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 log 選項。在範例中,取代每個 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) 角色。

如需將IAM角色用於 Apache Flink 的受管理服務的詳細資訊,請參閱Amazon Managed Service for Apache Flink 的身分和存取管理

信任政策

若要授與 Apache Flink 的受管理服務權限以擔任IAM角色,您可以將下列信任原則附加至服務執行角色。

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

許可政策

若要授與 CloudWatch 從 Apache Flink 資源的受管理服務寫入記錄事件的應用程式權限,您可以使用下列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 記錄資料流的權限

  • 確認應用程式正在執行。若要檢查應用程式的狀態,請在主控台中檢視應用程式的頁面,或使用DescribeApplicationListApplications動作。

  • 監視 CloudWatch 指標,例如診downtime斷其他應用程式問題。如需有關讀取 CloudWatch 量度的資訊,請參閱

使用 CloudWatch 日誌見解

在應用程式中啟用 CloudWatch 記錄之後,您可以使用 CloudWatch 日誌深入解析來分析應用程式記錄檔。如需詳細資訊,請參閱使用日誌見解分析 CloudWatch 日誌