全部產品
Search
文件中心

Realtime Compute for Apache Flink:監控指標說明

更新時間:Sep 13, 2024

本文為您介紹Flink全託管支援的監控指標詳情。

注意事項

  • Source端的指標表現並不是判斷問題根源的充分條件,只反映了Source當前的工作狀況,您仍然需要其他輔助指標或工具來判斷問題的根源。常見問題的指標表現如下。

    情境

    詳情

    作業中某些運算元存在反壓

    判斷反壓最直接的方式是使用Flink UI提供的反壓檢查功能,而不是通過指標判斷。反壓的存在會導致Source端資料發送至下遊運算元的速率下降,您可能會觀察到sourceIdleTime周期性上升,currentFetchEventTimeLag和currentEmitEventTimeLag不斷增長。極限情況下(某些運算元卡死)sourceIdleTime會持續上升。

    Source是效能瓶頸點

    如果僅是Source的輸送量不足,那麼您的作業中不應該檢測到反壓,sourceIdleTime會維持在較低的值(Source一直在工作),currentFetchEventTimeLag和currentEmitEventTimeLag接近,但是兩個指標均較高。

    上遊資料扭曲或某個分區為空白

    資料扭曲或空分區會導致某一個或者幾個Source並行度處於閑置狀態,您會觀察到這些Source的sourceIdleTime指標較大。

  • 如果您發現作業的延遲較高,則可以使用以下指標幫您分析Flink當前的處理能力,以及資料在外部系統中的滯留情況。

    指標

    詳情

    sourceIdleTime

    該指標反映Source是否有閑置,如果該指標較大,說明您的資料在外部系統中的產生速率較低。

    currentFetchEventTimeLag和currentEmitEventTimeLag

    均反映了Flink當前處理的延遲,您可以通過兩個指標的差值(即資料在 Source中停留的時間)分析Source當前的處理能力。

    • 如果兩個延遲非常接近,說明Source從外部系統中拉取資料的能力(網路 I/O、並發數)不足。

    • 如果兩個延遲差值較大,說明Source的資料處理能力(資料解析、並發、反壓)不足。

    pendingRecords

    如果您使用的連接器彙報了pendingRecords指標,那麼您可以通過該指標分析資料在外部系統的滯留量。

概覽

指標

含義

詳情

單位

支援的連接器

Num of Restarts

作業錯誤恢複次數。

作業出錯重啟次數,不包含JM Failover次數。查看作業可用性,協助您查看作業狀態。

次數

不涉及

current Emit Event Time Lag

業務延時。

該延時較大時,說明作業可能在拉取資料或者處理資料上存在延時。

毫秒(ms)

  • Kafka

  • RocketMQ

  • SLS

  • DataHub

  • Postgres CDC

  • Hologres(Binlog Source)

current Fetch Event Time Lag

傳輸延時。

該延時較大時,說明作業可能在拉取資料上存在延時。您需要查看網路I/O或上遊系統情況。結合currentEmitEventTimeLag,您可以通過兩個指標的差值(即資料在Source中停留的時間)分析Source當前的處理能力。詳情如下:

  • 如果兩個延遲非常接近,說明Source從外部系統中拉取資料的能力(網路 I/O、並發數)不足。

  • 如果兩個延遲差值較大,說明作業的處理能力不足,導致資料在Source中有滯留。您可以在目標作業的作業部署詳情頁面,單擊狀態總覽頁簽,在BackPressure頁面先定位有問題的Vertex拓撲,再到Thread Dump頁面分析堆棧定位真正的瓶頸點。

毫秒(ms)

  • Kafka

  • RocketMQ

  • SLS

  • DataHub

  • Postgres CDC

  • Hologres(Binlog Source)

numRecordsIn

所有Operator的輸入的記錄總數。

如果某個運算元的numRecordsIn值長時間未增漲,可能存在上遊把資料都吞掉的情況,需要查看上遊資料。

所有內建連接器均支援。

numRecordsOut

輸出記錄總數。

如果某個運算元的numRecordsOut的值長時間未增漲,說明可能是作業代碼邏輯錯誤,導致資料都被吞掉了,需要查看作業代碼邏輯。

所有內建連接器均支援。

numRecordsInofSource

每個Operator中僅source operator的輸入記錄。

查看上遊資料輸入情況。

  • Kafka

  • MaxCompute

  • 增量MaxCompute

  • RocketMQ

  • SLS

  • DataHub

  • Elasticsearch

  • Hologres

numRecordsOutOfSink

Sink端輸出記錄總數。

查看上遊資料輸出情況。

  • Kafka

  • SLS

  • DataHub

  • Hologres

  • HBase

  • Tablestore

  • Redis

numRecordsInPerSecond

整個資料流每秒鐘輸入的記錄數。

用於需要監控整個資料流的處理速度的情境。例如,您可以使用numRecordsInPerSecond來觀察整個資料流的處理速度是否達到了預期的水平,以及在不同的輸入資料負載下效能的變化情況。

條/秒

所有內建連接器均支援。

numRecordsOutPerSecond

整個資料流每秒鐘輸出的記錄數。

用於測量整個資料流每秒鐘輸出的記錄數,適用於需要監控整個資料流的輸出速度的情境。

例如,您可以使用numRecordsOutPerSecond來觀察整個資料流的輸出速度是否達到了預期的水平,以及在不同的輸出資料負載下效能的變化情況。

條/秒

所有連接器均支援。

numRecordsInOfSourcePerSecond (IN RPS)

資料來源Source端每秒輸入記錄數。

用於測量每個資料來源每秒鐘產生的記錄數,適用於需要瞭解每個資料來源的產生速度的情境。例如,在一個資料流中,不同的資料來源可能會產生不同數量的記錄,使用numRecordsInOfSourcePerSecond可以協助您瞭解每個資料來源的產生速度,並對資料流進行調整以達到更好的效能,同時該資料用於監控警示。

如果該值為0,說明可能存在上遊把資料都吞掉的情況,需要查看上遊資料是否一直未被消費,導致輸出阻塞。

條/秒

  • Kafka

  • MaxCompute

  • 增量MaxCompute

  • RocketMQ

  • SLS

  • DataHub

  • Elasticsearch

  • Hologres

numRecordsOutOfSinkPerSecond (OUT RPS)

資料目的Sink端每秒輸出記錄數。

用於測量每個Sink端每秒鐘輸出的記錄數,適用於需要瞭解每個Sink的輸出速度的情境。例如,在一個資料流中,不同的Sink可能會輸出不同數量的記錄。

使用numRecordsOutOfSinkPerSecond可以協助您瞭解每個Sink的輸出速度,並對資料流進行調整以達到更好的效能。該資料用於監控警示,如果該值為0,說明可能是作業代碼邏輯錯誤,導致全部資料被過濾了,需要查看作業代碼邏輯。

條/秒

  • Kafka

  • MaxCompute

  • 增量MaxCompute

  • SLS

  • DataHub

  • Hologres

  • HBase

  • Tablestore

  • Redis

pendingRecords

源端未讀取資料的條數。

外部系統中尚未被Source拉取的資料條數。

  • Kafka

  • Elasticsearch

sourceIdleTime

源端未處理資料的時間。

該指標反映Source是否有閑置。如果該指標的值較大時,說明您的資料在外部系統中的產生速率較低。

毫秒(ms)

  • Kafka

  • RocketMQ

  • Postgres CDC

  • Hologres(Binlog Source)

系統檢查點

指標

含義

詳情

單位

Num of Checkpoints

Checkpoint數量。

總覽Checkpoint狀態,協助您設定Checkpoint警示。

lastCheckpointDuration

最近一個Checkpoint的期間。

如果Checkpoint耗時過長或者逾時,可能由於狀態過大、臨機操作網路原因、Barrier未對齊或者資料存在反壓等原因造成。

毫秒(ms)

lastCheckpointSize

最近一個Checkpoint的大小。

最近一次實際上傳的Checkpoint大小,可以在Checkpoint有瓶頸時協助分析Checkpoint效能。

Bytes

狀態

說明

latency狀態指標需要設定後才可以使用,因此您需要在更多Flink配置中設定state.backend.latency-track.keyed-state-enabled: true,啟用latency狀態指標後,可能會對作業運行時的效能造成一定影響。

指標

含義

詳情

單位

版本限制

State Clear Latency

單次狀態清理延遲最大值。

查看State清理的效能。

納秒(ns)

Realtime Compute引擎VVR 4.0.0及以上版本。

Value State Latency

單次Value State訪問延遲的最大值。

查看Value State訪問的效能。

納秒(ns)

Aggregating State Latency

單次Aggregating State訪問延遲的最大值。

查看Aggregating State訪問的效能。

納秒(ns)

Reducing State Latency

單次Reducing State訪問延遲的最大值。

查看Reducing State訪問的效能。

納秒(ns)

Map State Latency

單次Map State訪問延遲的最大值。

查看Map State訪問的效能。

納秒(ns)

List State Latency

單次List State訪問延遲的最大值。

查看List State訪問的效能。

納秒(ns)

Sorted Map State Latency

單次Sorted Map State訪問延遲的最大值。

查看Sorted Map State訪問的效能。

納秒(ns)

State Size

狀態資料的大小。

通過觀測該指標,您可以:

  • 直接或提前定位可能出現的State瓶頸的節點。

  • 判斷TTL是否生效。

Bytes

Realtime Compute引擎VVR 4.0.12及以上版本。

State File Size

狀態資料檔案的大小。

通過觀測該指標,您可以:

  • 查看本地磁碟中State部分佔用的大小,在佔用大時提前採取措施。

  • 遇到本地磁碟空間不足的情況時,判斷是否因狀態資料過大導致。

Bytes

Realtime Compute引擎VVR 4.0.13及以上版本。

IO

指標

含義

詳情

單位

支援的連接器

numBytesIn

輸入位元組總數。

查看上遊吞吐的輸入情況,協助您觀察作業流量表現。

Bytes

  • Kafka

  • MaxCompute

  • 增量MaxCompute

  • RocketMQ

numBytesInPerSecond

每秒輸入位元組總數。

查看上遊流速的輸入情況,協助您觀察作業流量表現。

Bytes/秒

  • Kafka

  • MaxCompute

  • 增量MaxCompute

  • RocketMQ

numBytesOut

輸出位元組總數。

查看上遊吞吐的輸出情況,協助您觀察作業流量表現。

Bytes

  • Kafka

  • RocketMQ

  • DataHub

  • HBase

numBytesOutPerSecond

每秒輸出位元組總數。

查看上遊吞吐輸出情況,協助您觀察作業流量表現。

Bytes/秒

  • Kafka

  • RocketMQ

  • DataHub

  • HBase

Task numRecords I/O

每個Subtask收到和輸出的總資料量。

根據該指標判斷作業是否存在I/O瓶頸。

  • Kafka

  • MaxCompute

  • 增量MaxCompute

  • SLS

  • DataHub

  • Elasticsearch

  • Hologres

  • HBase

  • Tablestore

  • Redis

Task numRecords I/O PerSecond

每個Subtask每秒收到和輸出的總資料量。

判斷作業是否存在I/O瓶頸並且通過速率判斷嚴重程度。

條/秒

  • Kafka

  • MaxCompute

  • 增量MaxCompute

  • SLS

  • DataHub

  • Elasticsearch

  • Hologres

  • HBase

  • Tablestore

  • Redis

currentSendTime

輸出到下遊系統的每個Subtask發送最近一條資料的用時。

該指標值較小時,說明Subtask輸出過慢。

毫秒(ms)

  • Kafka

  • MaxCompute

  • 增量MaxCompute

  • RocketMQ

  • SLS

  • DataHub

  • Hologres

    說明

    JDBC模式和RPC模式支援,BHClient模式不支援。

  • HBase

  • Tablestore

  • Redis

浮水印

指標

含義

詳情

單位

支援的連接器

Task InputWatermark

每個Task收到最近一條浮水印的時間。

說明TM收到資料的延時情況。

不涉及連接器

watermarkLag

Watermark延遲。

判斷Subtask層級的作業延遲情況。

毫秒(ms)

  • Kafka

  • RocketMQ

  • SLS

  • DataHub

  • Hologres(Binlog Source)

CPU

指標

含義

詳情

單位

JM CPU Usage

單個JM CPU的CPU使用率。

該值反映Flink對CPU時間片的佔用情況,1個Core的CPU用滿了就是100%,4個Core用滿了就是400%。如果該值長期大於100%則說明CPU很繁忙。如果負載很高,但CPU使用率卻比較低,可能因為頻繁的讀寫操作導致不可中斷睡眠狀態的進程過多。

說明

僅Realtime Compute引擎VVR 6.0.6及以上版本支援該指標。

TM CPU Usage

單個TM CPU的CPU使用率。

該值反映Flink對CPU時間片的佔用情況,1個Core的CPU用滿了就是100%,4個Core用滿了就是400%。如果該值長期大於100%則說明CPU很繁忙。如果負載很高,但CPU使用率卻比較低,可能是因為頻繁的讀寫操作導致不可中斷睡眠狀態的進程過多。

記憶體

指標

含義

詳情

單位

JM Heap Memory

JM的堆記憶體。

查看JM堆記憶體的變化。

Bytes

JM NonHeap Memory

JM的非堆記憶體。

查看JM非堆記憶體的變化。

Bytes

TM Heap Memory

TM的堆記憶體。

查看TM堆記憶體的變化。

Bytes

TM nonHeap Memory

TM的非堆記憶體。

查看TM非堆記憶體的變化。

Bytes

TM Mem (RSS)

通過Linux擷取整個進程的記憶體。

查看進程記憶體的變化。

Bytes

JVM

指標

含義

詳情

單位

JM Threads

JM線程數。

JM線程數過多會導致佔用過大的記憶體空間,從而降低作業穩定性。

TM Threads

TM線程數。

TM線程數過多會導致佔用過多記憶體,從而降低作業穩定性。

JM GC Count

JM GC次數。

GC次數過多會導致佔用過大記憶體空間,從而影響作業效能。該指標協助您進行作業診斷,排查作業層級的故障原因。

Times

JM GC Time

每次JM GC時間。

長時間GC會導致佔用過大記憶體空間,從而影響作業效能。該指標協助您進行作業診斷,排查作業層級的故障原因。

毫秒(ms)

TM GC Count

TM GC次數。

GC次數過多會導致佔用過大記憶體空間,從而影響作業效能。該指標協助您進行作業診斷,排查作業Task層級的故障原因。

次數

TM GC Time

每次TM GC時間。

長時間GC會導致佔用過大記憶體空間,從而影響作業效能。該指標協助您進行作業診斷,排查作業層級的故障原因。

毫秒(ms)

JM ClassLoader

JM所在的JVM在建立後,載入或卸載的類總數。

JM所在的JVM建立後,載入類的總數或卸載類的總數過大,會導致佔用過大的記憶體空間,從而影響作業效能。

TM ClassLoader

TM所在的JVM建立後,載入或卸載的類總數。

JM所在的JVM建立後載入類的總數或卸載類的總數過大,會導致佔用過大記憶體空間,從而影響作業效能。

連接器 - Mysql

指標

含義

單位

應用情境

版本限制

isSnapshotting

作業是否在處理全量資料階段(1表示處於該階段)

確定作業處理階段

Realtime Compute引擎VVR 8.0.9及以上版本。

isBinlogReading

作業是否在處理增量資料階段(1表示處於該階段)

確定作業處理階段

Num of remaining tables

全量階段等待處理的表的個數

查看剩餘未處理的表數量

Num of snapshotted tables

全量階段已經處理的表的個數

查看已經處理的表數量

Num of remaining SnapshotSplits

全量階段等待處理的分區的個數

查看已經處理的分區數

Num of processed SnapshotSplits

全量階段已經處理的分區的個數

查看未處理的分區數

currentFetchEventTimeLag

資料從產生到從資料庫讀取出來之間的延遲

ms

查看從資料庫讀取binlog的延遲

currentReadTimestampMs

當前讀取到的最新資料的時間戳記

ms

查看讀取到最新資料時間

numRecordsIn

已經讀取的資料條數

查看已經處理的全部資料量

numSnapshotRecords

全量階段已經處理的資料條數

查看全量階段已處理的資料量

numRecordsInPerTable

每個表已經讀取的資料條數

查看每個表已經處理的全部資料量

numSnapshotRecordsPerTable

每個表全量階段已經處理的資料條數

查看每個表全量階段已處理的資料量

連接器 - Kafka

指標

含義

單位

應用情境

版本限制

commitsSucceeded

位點提交成功的次數

判斷位點提交是否成功

Realtime Compute引擎VVR 8.0.9及以上版本。

commitsFailed

位點提交失敗的次數

判斷位點提交是否成功

Fetch Rate

拉取資料的頻率

次/秒

判斷資料拉取的延遲和速度

Fetch Latency Avg

拉取資料操作的延遲

毫秒

判斷資料拉取的延遲和速度

Fetch Size Avg

每次拉取的平均位元組數

位元組

判斷資料拉取的延遲和速度

Avg Records In Per-Request

每次拉取的平均訊息數

判斷資料拉取的延遲和速度

currentSendTime

發送上一條記錄的時間

判斷消費進度

batchSizeAvg

每個批次的平均位元組數

Bytes

判斷資料寫入延遲和速度

requestLatencyAvg

請求的平均延遲

ms

判斷資料寫入延遲和速度

requestsInFlight

進行中的請求數

判斷資料寫入延遲和速度

recordsPerRequestAvg

每次請求的平均訊息數

判斷資料寫入延遲和速度

recordSizeAvg

訊息的平均位元組數

Bytes

判斷資料寫入延遲和速度

連接器 - Paimon

指標

含義

單位

應用情境

版本限制

Number of Writers

Writer執行個體數量

當前有幾個分桶正在寫入。若數量過大,可能會影響寫入效率,增加記憶體消耗。分析分桶數或分區鍵設定是否合理。

Realtime Compute引擎VVR 8.0.9及以上版本。

Max Compaction Thread Busy

小檔案合并線程的最大繁忙程度

比例

當前正在寫入的各個分桶中,最近一分鐘內,小檔案合并線程最多有多少時間在活動。可以反映小檔案合并的壓力

Average Compaction Thread Busy

小檔案合并線程平均繁忙程度

比例

當前正在寫入的各個分桶中,最近一分鐘內,小檔案合并線程最多有多少時間在活動。可以反映小檔案合并的壓力

Max Number of Level 0 Files

最大Level 0 檔案數量

當前正在寫入的各個分桶中,level 0檔案(小檔案)最多有幾個。僅對主鍵表有意義,可以反映小檔案合并的效率能否跟上寫入效率

Average Number of Level 0 Files

平均Level 0 檔案數量

當前正在寫入的各個分桶中,level 0檔案(小檔案)平均有幾個。僅對主鍵表有意義,可以反映小檔案合并的效率能否跟上寫入效率

Last Commit Duration

上次Commit耗時

毫秒

若時間太長,應檢查是否有過多的分桶正在同時寫入。

Number of Partitions Last Committed

上次Commit中寫入的分區數量

若數量過大,可能會影響寫入效率,增加記憶體消耗。分析分桶數或分區鍵設定是否合理。

Number of Buckets Last Committed

上次Commit中寫入的分桶數量

若數量過大,可能會影響寫入效率,增加記憶體消耗。分析分桶數或分區鍵設定是否合理。

Used Write Buffer

已使用的Write Buffer的記憶體大小

位元組

所有task manager的writer節點已使用的buffer大小。該buffer將佔用Java堆記憶體,若設定過大可能會導致OOM。

Total Write Buffer

分配給Write Buffer的總記憶體大小

位元組

所有task manager的writer節點設定的uffer大小。該buffer將佔用Java堆記憶體,若設定過大可能會導致OOM,。

資料攝入

指標

含義

單位

應用情境

版本限制

isSnapshotting

作業是否在處理全量資料階段(1表示處於該階段)

確定作業處理階段

Realtime Compute引擎VVR 8.0.9及以上版本。

isBinlogReading

作業是否在處理增量資料階段(1表示處於該階段)

確定作業處理階段

Num of remaining tables

全量階段等待處理的表的個數

查看剩餘未處理的表數量

Num of snapshotted tables

全量階段已經處理的表的個數

查看已經處理的表數量

Num of remaining SnapshotSplits

全量階段等待處理的分區的個數

查看已經處理的分區數

Num of processed SnapshotSplits

全量階段已經處理的分區的個數

查看未處理的分區數

currentFetchEventTimeLag

資料從產生到從資料庫讀取出來之間的延遲

ms

查看從資料庫讀取binlog的延遲

currentReadTimestampMs

當前讀取到的最新資料的時間戳記

ms

查看讀取到最新資料的時間

numRecordsIn

已經讀取的資料條數

查看已經處理的全部資料量

numRecordsInPerTable

每個表已經讀取的資料條數

查看每個表已經處理的全部資料量

numSnapshotRecords

全量階段已經處理的資料條數

查看全量階段已處理的資料量

numSnapshotRecordsPerTable

每個表全量階段已經處理的資料條數

查看每個表全量階段已處理的資料量