在適用於 Apache Flink 的受管理服務中檢視量度和維度 - Managed Service for Apache Flink

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

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

在適用於 Apache Flink 的受管理服務中檢視量度和維度

當您的 Apache Flink 受管服務處理資料來源時,適用於 Apache Flink 的受管服務會向 Amazon 報告以下指標和維度。 CloudWatch

應用程式指標

指標 單位 描述 Level 使用須知
backPressuredTimeMsPerSecond* 毫秒 此任務或運算子每秒承受背壓的時間 (毫秒)。 任務、運算子、平行處理層級

* 僅可用於執行 Flink 1.13 版本之 Managed Service for Apache Flink 應用程式。

這些指標可用於識別應用程式中的瓶頸。

busyTimeMsPerSecond* 毫秒 此任務或運算子每秒忙碌 (既不是閒置也沒有背壓) 的時間 (毫秒)。如果無法計算該值,則可以是 NaN。 任務、運算子、平行處理層級

* 僅可用於執行 Flink 1.13 版本之 Managed Service for Apache Flink 應用程式。

這些指標可用於識別應用程式中的瓶頸。

cpuUtilization 百分比 跨任務管理員的 CPU 使用率整體百分比。例如,如果有 5 個任務管理員,Managed Service for Apache Flink 會針對每個報告間隔發行此指標的 5 個樣本。 應用程式 您可以使用此指標來監控應用程式中的最小、平均和最大 CPU 使用率。該CPUUtilization指標僅考慮在容器內運行的 TaskManager JVM 進程的 CPU 使用率。
containerCPUUtilization 百分比 Flink 應用程式叢集中跨任務管理員容器的 CPU 使用率整體百分比。例如,如果有五個工作管理員,則相應地有五個 TaskManager 容器,而 Apache Flink 的受管理服務會每 1 分鐘報告間隔發佈 2* 5 個此指標的範例。 應用程式

它按每個容器計算如下:

容器使用的總 CPU 時間 (秒) * 100 / 容器 CPU 限制 (單位為 CPU/秒)

CPUUtilization指標僅考慮在容器內運行的 TaskManager JVM 進程的 CPU 使用率。同一個容器內的 JVM 外部還有其他元件在執行。containerCPUUtilization 指標為您提供了更完整的視角,包括容器中 CPU 耗盡的所有處理序以及由此引起的故障。

containerMemoryUtilization 百分比 Flink 應用程式叢集中跨任務管理員容器的記憶體使用率整體百分比。例如,如果有五個工作管理員,則相應地有五個 TaskManager 容器,而 Apache Flink 的受管理服務會每 1 分鐘報告間隔發佈 2* 5 個此指標的範例。 應用程式

它按每個容器計算如下:

容器記憶體用量 (位元組) * 100 / 每 Pod 部署規格的容器記憶體限制 (位元組)

HeapMemoryUtilization和指ManagedMemoryUtilzations標僅考慮特定的內存指標,例如 TaskManager JVM 的堆內存使用情況或託管內存(如 RockSDB 狀態後端等本機進程的 JVM 外的內存使用情況)。containerMemoryUtilization 指標可為您提供更完整的視角,現包括工作集記憶體,這是一個更佳的記憶體總量耗盡追蹤器。一旦耗盡,它將導致該Out of Memory Error網 TaskManager 繭。

containerDiskUtilization 百分比 Flink 應用程式叢集中跨任務管理員容器的磁碟使用率整體百分比。例如,如果有五個工作管理員,則相應地有五個 TaskManager 容器,而 Apache Flink 的受管理服務會每 1 分鐘報告間隔發佈 2* 5 個此指標的範例。 應用程式

它按每個容器計算如下:

磁碟使用量 (位元組) * 100 / 容器的磁碟限制 (位元組)

對於容器,它代表在其上設定容器根磁碟區的檔案系統的使用率。

currentInputWatermark 毫秒 此應用程式/運算子/任務/執行緒收到的最後一個浮水印 應用程式、運算子、任務、平行處理層級 僅針對具有兩個輸入的維度發出此記錄。這是最後接收到的浮水印的最小值。
currentOutputWatermark 毫秒 此應用程式/運算子/任務/執行緒發出的最後一個浮水印 應用程式、運算子、任務、平行處理層級
downtime 毫秒 對於目前處於失敗/復原狀況的作業,此中斷期間經過的時間。 應用程式 此指標衡量作業失敗或復原時經過的時間。此指標針對執行中作業傳回 0,針對完成的作業傳回 -1。如果此指標不是 0 或 -1,則表示應用程式的 Apache Flink 作業執行失敗。
fullRestarts 計數 此作業提交後完全重新啟動的總次數。此指標不衡量細微的重新啟動。 應用程式 您可以使用此指標評估應用程式總體運作狀態。在 Managed Service for Apache Flink 進行內部維護期間,可能會重新啟動。重新啟動時間高於正常狀態可能表示應用程式發生了問題。
heapMemoryUtilization 百分比 任務管理員的整體堆積記憶體使用率。例如,如果有 5 個任務管理員,Managed Service for Apache Flink 會針對每個報告間隔發行此指標的 5 個樣本。 應用程式 您可以使用此指標來監控應用程式中的最小、平均和最大堆積記憶體使用率。特定內存指標的HeapMemoryUtilization唯一帳戶,如 TaskManager JVM 的堆內存使用情況。
idleTimeMsPerSecond* 毫秒 此任務或運算子每秒閒置 (沒有要處理的資料) 的時間 (毫秒)。閒置時間不包括背壓時間,因此如果任務受到背壓,則不會閒置。 任務、運算子、平行處理層級

* 僅可用於執行 Flink 1.13 版本之 Managed Service for Apache Flink 應用程式。

這些指標可用於識別應用程式中的瓶頸。

lastCheckpointSize 位元組 最後一個檢查點的大小總計 應用程式 您可以使用此指標判斷執行中應用程式的儲存體使用率。

如果此指標的值增加,可能表示應用程式發生了問題,例如記憶體流失或瓶頸。

lastCheckpointDuration 毫秒 完成最後一個檢查點所花費的時間 應用程式 此指標會測量完成最新檢查點所花費的時間。如果此指標的值增加,可能表示應用程式發生了問題,例如記憶體流失或瓶頸。在某些情況下,您可以藉由停用檢查點來疑難排解此問題。
managedMemoryUsed* 位元組 目前使用中的受管記憶體數量。 應用程式、運算子、任務、平行處理層級

* 僅可用於執行 Flink 1.13 版本之 Managed Service for Apache Flink 應用程式。

這與 Java 堆積之外由 Flink 管理的記憶體有關。它用於 RocksDB 狀態後端,也可用於應用程式。

managedMemoryTotal* 位元組 記憶體總量。 應用程式、運算子、任務、平行處理層級

* 僅可用於執行 Flink 1.13 版本之 Managed Service for Apache Flink 應用程式。

這與 Java 堆積之外由 Flink 管理的記憶體有關。它用於 RocksDB 狀態後端,也可用於應用程式。ManagedMemoryUtilzations 指標僅考慮特定的記憶體指標,例如受管記憶體 (用於 RocksDB 狀態後端等原生處理序的 JVM 外記憶體使用情況)

managedMemoryUtilization* 百分比 派生者 managedMemoryUsed/managedMemoryTotal 應用程式、運算子、任務、平行處理層級

* 僅可用於執行 Flink 1.13 版本之 Managed Service for Apache Flink 應用程式。

這與 Java 堆積之外由 Flink 管理的記憶體有關。它用於 RocksDB 狀態後端,也可用於應用程式。

numberOfFailedCheckpoints 計數 檢查點失敗的次數。 應用程式 您可以使用此指標來監控應用程式運作狀態和進度。檢查點可能會因為應用程式問題 (例如輸送量或許可問題) 而失敗。
numRecordsIn* 計數 此應用程式、運算子或任務已接收的記錄總數。 應用程式、運算子、任務、平行處理層級

* 若要套用一段時間內 (秒/分鐘) 的 SUM 統計資料:

  • 選取正確層級的指標。如果要追蹤運算子的指標,則需要選取對應的運算子指標。

  • 由於 Managed Service for Apache Flink 每分鐘需要 4 個指標快照,因此應使用下列指標數學表達式:m1/4,其中 m1 是一段期間 (秒/分鐘) 內的 SUM 統計資料

指標的「層級」指定此指標是衡量整個應用程式、特定運算子還是特定任務接收的記錄總數。

numRecordsInPerSecond* 計數/秒 此應用程式、運算子或任務每秒收到的記錄總數。 應用程式、運算子、任務、平行處理層級

* 若要套用一段時間內 (秒/分鐘) 的 SUM 統計資料:

  • 選取正確層級的指標。如果要追蹤運算子的指標,則需要選取對應的運算子指標。

  • 由於 Managed Service for Apache Flink 每分鐘需要 4 個指標快照,因此應使用下列指標數學表達式:m1/4,其中 m1 是一段期間 (秒/分鐘) 內的 SUM 統計資料

指標的「層級」指定此指標是衡量整個應用程式、特定運算子還是特定任務每秒接收的記錄總數。

numRecordsOut* 計數 此應用程式、運算子或任務發出的記錄總數。 應用程式、運算子、任務、平行處理層級

* 若要套用一段時間內 (秒/分鐘) 的 SUM 統計資料:

  • 選取正確層級的指標。如果要追蹤運算子的指標,則需要選取對應的運算子指標。

  • 由於 Managed Service for Apache Flink 每分鐘需要 4 個指標快照,因此應使用下列指標數學表達式:m1/4,其中 m1 是一段期間 (秒/分鐘) 內的 SUM 統計資料

指標的「層級」指定此指標是衡量整個應用程式、特定運算子還是特定任務發出的記錄總數。

numLateRecordsDropped* 計數 應用程式、運算子、任務、平行處理層級

* 若要套用一段時間內 (秒/分鐘) 的 SUM 統計資料:

  • 選取正確層級的指標。如果要追蹤運算子的指標,則需要選取對應的運算子指標。

  • 由於 Managed Service for Apache Flink 每分鐘需要 4 個指標快照,因此應使用下列指標數學表達式:m1/4,其中 m1 是一段期間 (秒/分鐘) 內的 SUM 統計資料

此運算子或任務因遲到而丟棄的記錄數。

numRecordsOutPerSecond* 計數/秒 此應用程式、運算子或任務每秒發出的記錄總數。 應用程式、運算子、任務、平行處理層級

* 若要套用一段時間內 (秒/分鐘) 的 SUM 統計資料:

  • 選取正確層級的指標。如果要追蹤運算子的指標,則需要選取對應的運算子指標。

  • 由於 Managed Service for Apache Flink 每分鐘需要 4 個指標快照,因此應使用下列指標數學表達式:m1/4,其中 m1 是一段期間 (秒/分鐘) 內的 SUM 統計資料

指標的「層級」指定此指標是衡量整個應用程式、特定運算子還是特定任務每秒發出的記錄總數。

oldGenerationGCCount 計數 所有任務管理員中發生的垃圾回收操作總數。 應用程式
oldGenerationGCTime 毫秒 執行垃圾回收操作所花費的總時間。 應用程式 您可以使用此指標來監控總計、平均和最大垃圾回收時間。
threadCount 計數 應用程式使用的即時執行緒總數。 應用程式 此指標衡量應用程式的程式碼使用的執行緒數目。這與應用程式平行處理層級不同。
uptime 毫秒 作業在不中斷的情況下執行的時間。 應用程式 您可以使用此指標來判斷作業是否在成功執行。此指標針對已完成的作業傳回 -1。
KPUs* 計數 應用程式使用的 KPU 總數。 應用程式

* 此指標會在每個計費週期 (一小時) 接收一個樣本。若要視覺化一段時間內的 KPU 數目,請在至少一 (1) 小時的期間內使用 MAX 或 AVG。

KPU 計數包括 orchestration KPU。如需詳細資訊,請參閱 Apache Flink 定價的受管理服務

Kinesis Data Streams 連接器測量結果

AWS 除了下列項目之外,還會發出 Kinesis Data Streams 的所有記錄:

指標 單位 描述 Level 使用須知
millisbehindLatest 毫秒 取用者位於串流開頭之後的毫秒數,指出取用者落後目前時間多久。 應用程式 (串流)、平行處理 (用於 ShardId)
  • 值為 0 表示記錄處理已跟上進度,此時沒有任何新記錄可供處理。可以使用串流名稱和碎片 ID 指定特定碎片的指標。

  • 值 -1 表示服務尚未報告指標的值。

bytesRequestedPerFetch 位元組 getRecords 的單一呼叫請求的位元組。 應用程式 (串流)、平行處理 (用於 ShardId)

Amazon MSK 連接器指標

AWS 除了以下內容之外,還會發出 Amazon MSK 的所有記錄:

指標 單位 描述 Level 使用須知
currentoffsets N/A 每個分割區的取用者目前的讀取位移。您可以依據主題名稱和分割區 ID 來指定特定分割區的指標。 應用程式 (針對主題)、平行處理 (用於 PartitionId)
commitsFailed N/A 向 Kafka 遞交位移失敗的總數,如果啟用了位移遞交和檢查點。 應用程式、運算子、任務、平行處理層級 將位移遞交回 Kafka 只是公開取用者進度的一種手段,因此遞交失敗不會影響 Flink 的檢查點分割區位移完整性。
commitsSucceeded N/A 向 Kafka 成功遞交位移的總數,如果啟用了位移遞交和檢查點。 應用程式、運算子、任務、平行處理層級
committedoffsets N/A 每個分割區最後一次成功提交到 Kafka 的位移。您可以依據主題名稱和分割區 ID 來指定特定分割區的指標。 應用程式 (針對主題)、平行處理 (用於 PartitionId)
records_lag_max 計數 此視窗中任何分割區以記錄數目而言的最大延遲 應用程式、運算子、任務、平行處理層級
bytes_consumed_rate 位元組 每秒使用的主題位元組平均數目 應用程式、運算子、任務、平行處理層級

阿帕奇齐柏林飞艇指标

對於 Studio 筆記本, AWS 會在應用程式層級發出下列指標:KPUscpuUtilizationheapMemoryUtilizationoldGenerationGCTimeoldGenerationGCCount、和threadCount。此外,它還會在應用程式層級發出下表中顯示的指標。

指標 單位 描述 Prometheus 名稱
zeppelinCpuUtilization 百分比 Apache Zeppelin 伺服器中 CPU 使用率的整體百分比。 process_cpu_usage
zeppelinHeapMemoryUtilization 百分比 Apache Zeppelin 伺服器的堆積記憶體使用率整體百分比。 jvm_memory_used_bytes
zeppelinThreadCount 計數 Apache Zeppelin 伺服器使用的即時執行緒總數。 jvm_threads_live_threads
zeppelinWaitingJobs 計數 等待執行緒的已排入佇列的 Apache Zeppelin 作業數目。 jetty_threads_jobs
zeppelinServerUptime 秒鐘 伺服器啟動並執行的總時間。 process_uptime_seconds

檢視 CloudWatch 量度

您可以使用 CloudWatch Amazon 主 CloudWatch 控台或 AWS CLI.

使用 CloudWatch 主控台檢視指標
  1. 請在以下位置開啟 CloudWatch 主控台。 https://console.aws.amazon.com/cloudwatch/

  2. 在導覽窗格中,選擇 指標

  3. 在 Apache Flink 的受管理服務的「按類別分類的CloudWatch 測量結果」窗格中,選擇測量結果類別。

  4. 在上方窗格中,向下捲動以檢視完整指標清單。

若要使用檢視量度 AWS CLI
  • 在命令提示中,使用下列命令。

    aws cloudwatch list-metrics --namespace "AWS/KinesisAnalytics" --region region

設定 CloudWatch 量度報告層級

您可以控制應用程式建立的應用程式指標層級。Managed Service for Apache Flink 支援下列指標層級:

  • 應用程式:應用程式只報告每個應用程式的最高層級指標。依預設,Managed Service for Apache Flink 指標在 Application 層級發佈。

  • 任務:應用程式針對使用「任務」指標報告層級定義的指標來報告任務特定的指標維度,例如每秒進出應用程式的記錄數。

  • 運算子:應用程式針對以「運算子」指標報告層級定義的指標來報告運算子特定的指標維度,例如每個篩選或對應操作的指標。

  • 平行處理層級:應用程式為每個執行緒報告 TaskOperator 層級指標。由於成本過高,平行處理設定超過 64 的應用程式不建議使用此報告層級。

    注意

    鑒於服務所產生的指標資料量,您只能使用此指標層級進行疑難排解。您只能使用 CLI 來設定此指標層級。此指標層級在主控台中無法使用。

預設層級為應用程式。應用程式會報告目前層級和所有更高層級的指標。例如,如果報告層級設定為運算子,則應用程式會報告應用程式任務運算子指標。

您可以使用動作的MonitoringConfiguration參數或CreateApplication動作的參數來設定 CloudWatch MonitoringConfigurationUpdate量度報告層級。UpdateApplication下列UpdateApplication動作要求範例會將 CloudWatch 量度報告層級設定為 Task

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "MonitoringConfigurationUpdate": { "ConfigurationTypeUpdate": "CUSTOM", "MetricsLevelUpdate": "TASK" } } } }

您也可以使用 CreateApplication 動作的 LogLevel 參數或 UpdateApplication 動作的 LogLevelUpdate 參數來設定記錄層級。您可以使用下列日誌層級:

  • ERROR:記錄可能復原的錯誤事件。

  • WARN:記錄可能導致錯誤的警告事件。

  • INFO:記錄資訊事件。

  • DEBUG:記錄一般偵錯事件。

如需 Log4j 記錄層級的詳細資訊,請參閱 Apache Log4j 文件中的自訂日誌層級