本文介紹監控警示與日誌中的常見問題。
如何確認工作空間使用的監控服務類型?
監控服務類型是您在開通工作空間時進行選擇。開通後,在頁面,單擊目標作業名稱,如果存在警示配置頁簽,則工作空間使用的是隨用隨付 Prometheus 監控服務(ARMS)監控服務類型,不存在則使用的是免費監控服務(CloudMonitor)類型。不同類型的監控警示配置操作詳情請參見作業監控警示。

CloudMonitor警示相對ARMS有哪些不足?
不支援查詢分析文法。
無法查看subtask粒度的曲線,多Source、多subtask的情境下,無法直觀快速定位聚類後的延遲問題。
目前無法查看使用者代碼內部埋點上報的指標,這可能會對問題排查造成不便。
如何配置或添加警示連絡人?
使用CloudMonitor服務或在ARMS控制台配置警示時,請在對應控制台進行配置或新增連絡人...。警示配置詳情請參見配置監控警示。
工作空間使用ARMS監控服務時,且直接在Realtime Compute開發控制台對單個作業配置指標或作業失敗警示時,配置或添加警示連絡人具體方法如下。
進入警示配置入口。
登入Realtime Compute管理主控台,單擊目標工作空間操作列下的控制台。
在頁面,單擊目標作業名稱。
單擊警示配置頁簽。
在警示規則頁簽,選擇,進入建立規則面板。
配置或添加警示連絡人。
添加
單擊通知對象參數後面的通知對象管理,新增連絡人...、DingTalk機器人等。DingTalk機器人警示、建立Webhook以及飛書機器人警示具體配置方法詳情請參見常見問題。
添加後,如果您使用電話方式警示,還需確保接收人電話已完成驗證,否則無法生效。若連絡人頁簽中目標連絡人電話列存在未驗證標識,需單擊完成驗證。

配置
在通知對象參數位置,選擇您需要通知的警示連絡人。如沒有您想要配置的對象,您可以按照上面步驟先進行添加。
如何關閉系統開通的Prometheus監控服務?
如果您開通工作空間時監控服務選擇了隨用隨付 Prometheus 監控服務(ARMS),則會為您自動開通ARMS服務。如果您不再需要對Realtime ComputeFlink版進行監控,您可以按照如下步驟卸載Prometheus監控服務:
卸載工作空間對應的監控警示Prometheus執行個體,會停止採集對應工作空間的監控資料,並導致作業的監控資料曲線丟失。如果作業出現異常現象,將無法定位初始異常時間,並且無法上報監控警示,請謹慎操作。
在左側導覽列單擊執行個體列表,進入可觀測監控Prometheus版的執行個體列表頁面。
在標籤篩選下拉式清單中,選擇目標工作空間的ID或名稱。
單擊執行個體類型為Prometheus for Flink Serverless的執行個體對應操作列的卸載。
在彈出的對話方塊中,單擊確認。
如何尋找引發警示的作業?
警示事件中包含JobID和Deployment ID資訊,但是由於作業Failover後導致JobID發生變化,因此您需要通過Deployment ID尋找具體報錯作業。您可以通過以下任何一種方式查看Deployment ID。
在Realtime Compute開發控制台的部署詳情頁簽,基礎配置地區查看Deployment ID資訊。

在作業的URL中查看Deployment ID資訊。

如何針對Flink作業重啟情況配置監控警示?
Realtime Compute開發控制台目前基於Flink指標配置警示規則,因此,在作業Failover後,無法看到metric指標曲線,也無法進行警示。為了應對作業重啟這種對業務側有重大影響的事件,您可以在ARMS控制台上配置基於flink_jobmanager_job_numRestarts監控指標瞬時增長率的自訂規則,以便對作業JM Failover情況進行警示。以下是具體的步驟和樣本:
單擊目標工作空間操作列下的,進入應用即時監控服務ARMS控制台。
在警示規則頁面,單擊建立Prometheus警示規則。
檢測類型選擇為自訂PromQL,選擇警示的執行個體。
編寫自訂PromQL語句。
例如
irate(flink_jobmanager_job_numRestarts{jobId=~"$jobId",deploymentId=~"$deploymentId"}[1m])>0表示查詢過去1分鐘內flink_jobmanager_job_numRestarts的資料,並在瞬時變動率大於0時觸發警示。單擊完成。
如何針對單個Class設定記錄層級參數?
例如,設定Kafka連接器相關的log4j.logger.org.apache.kafka.clients.consumer=trace(源表)和log4j.logger.org.apache.kafka.clients.producer=trace(結果表)參數時,需要在Log Levels中配置,不能在其他配置中配置。
如何開啟GC日誌參數?
在頁面,單擊目標作業名稱後,在部署詳情頁簽的運行參數配置地區的其他配置中,添加代碼後儲存生效,程式碼範例如下。
env.java.opts: >-
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/flink/log/gc.log
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=2 -XX:GCLogFileSize=50M
配置日誌到SLS後,作業啟動報錯
問題詳情
修改作業日誌輸出到SLS後,作業啟動時顯示作業啟動失敗,請重試,並報錯如下:
Unknown ApiException {exceptionType=com.ververica.platform.appmanager.controller.domain.TemplatesRenderException, exceptionMessage=Failed to render {userConfiguredLoggers={}, jobId=3fd090ea-81fc-4983-ace1-0e0e7b******, rootLoggerLogLevel=INFO, clusterName=f7dba7ec27****, deploymentId=41529785-ab12-405b-82a8-1b1d73******, namespace=flinktest-default, priorityClassName=flink-p5, deploymentName=test}} 029999 202312121531-8SHEUBJUJU問題原因
配置作業日誌時,請確認是否將部分Twig變數(例如namespace、deploymentId等)進行了修改。

解決方案
參考配置作業日誌輸出重新進行配置,根據實際情況對錶格中說明的參數進行修改。
如何查看、搜尋和分析Flink歷史作業記錄?
目前Realtime ComputeFlink版支援在Realtime Compute開發控制台或外部儲存中查看與分析歷史作業記錄。詳情如下:
在Realtime Compute開發控制台作業日誌介面查看與分析。
您可以在部署詳情頁簽,開啟日誌歸檔功能(預設開啟)並設定日誌歸檔有效期間(預設7天,保留最近5 MB大小的作業記錄)。

在外部儲存查看與分析:
將作業日誌配置輸出至外部儲存(OSS、SLS或Kafka)後進行查看,並支援配置輸出的記錄層級。詳情請參見配置作業日誌輸出。
如何解決非Static方法輸出不到SLS中的問題?
問題詳情
由於SLS Logger Appender實現邏輯,非Static方法輸出不到SLS中。
解決方案
您需要使用標準的定義方式
private static final Logger LOG = LoggerFactory.getLogger(xxx.class);。
資料正常寫入(如Kafka能收到Flink寫入的資料),但Flink任務狀態總覽顯示資料為0?
問題詳情
如果作業中只有一個節點,source沒有input只有output,sink只有input沒有output,在作業拓撲圖中將無法看到讀取和寫入的資料量。
解決方案
為了能夠在拓撲圖中看到具體的資料流量,需要對運算元進行分割。將source運算元和sink運算元拆分成獨立的運算元,分別與其他的運算元進行串連,形成新的拓撲結構,在拓撲圖中即可看到資料的流向和流量。
您需要在頁面,單擊目標作業名稱,在部署詳情頁簽運行參數配置地區的其他配置中添加分割運算元的參數配置
pipeline.operator-chaining: 'false'。
Datastream作業無延遲、輸出曲線,應該如何處理?
問題詳情
源表有源源不斷的資料進入Flink,Kafka物理表每個Partition也是在有源源不斷的資料的情況下,Datastream作業Kafka Source CurrentEmitEventTimeLag和CurrentFetchEventTimeLag顯示作業延遲為52年。
問題原因
Datastream中Kafka依賴是社區的連接器,不是Flink內建的連接器。社區連接器是沒有實現曲線彙報邏輯的,所以輸入輸出延遲等曲線顯示異常。
解決方案
使用Flink內建連接器的依賴,詳情請參見Maven倉庫。
Datastream作業TM日誌中拋NullPointerException如果沒有詳細錯誤棧怎麼辦?
在頁面,單擊目標作業名稱後,在部署詳情頁簽的運行參數配置地區的其他配置中,添加如下代碼。
env.java.opts: "-XX:-OmitStackTraceInFastThrow"