天天看點

如何監控Azure Databricks叢集資源使用率

©著作權歸作者所有:來自51CTO部落格作者臭臭粑粑的原創作品,如需轉載,請注明出處,否則将追究法律責任

客戶:Azure Databricks可以監控的吧?

我:可以的。

客戶:那我想監控Databricks Cluster的資源使用率。

我(思考片刻):好的。

為什麼答應客戶那麼爽快,是因為以我對Azure的了解,隻要是Azure上面的服務,基本上都有Monitor功能,而且還自帶該服務的Mestrics資料,想要監控,直接到該服務下,找到Metrics,選擇你感興趣的metric,分分鐘建立個折線圖什麼的。但當我去Azure Databricks Workspace服務下去找的時候,發現:

如何監控Azure Databricks叢集資源使用率

尼瑪,沒有Metrics,此刻,我才意識到,這次,

如何監控Azure Databricks叢集資源使用率

随後立馬查官網确認,原來是真的:

Monitoring is a critical part of any production-level solution, and Azure Databricks offers robust functionality for monitoring custom application metrics, streaming query events, and application log messages. Azure Databricks can send this monitoring data to different logging services.

The following articles show how to send monitoring data from Azure Databricks to Azure Monitor, the monitoring data platform for Azure.

Send Azure Databricks application logs to Azure Monitor

Use dashboards to visualize Azure Databricks metrics

Troubleshoot performance bottlenecks

附上官網連結:

https://docs.microsoft.com/en-us/azure/architecture/databricks-monitoring/

這個是監控application級别的,而客戶目前隻是想要監控Cluster資源使用情況,以便在需要的時候調整worker節點的數量。

Azure Databricks Cluster到底如何監控呢?随後咨詢了微軟技術支援,給出的答案是目前他們沒有提供現成的監控解決方案,想要監控cluster,需要自己根據自己的需求來做相應的配置:主要就是Azure Databricks的Diagnostic settings + Log Analytics服務。

下面我就詳細介紹一下如何實作Azure Databricks Cluster資源使用率的監控。

第一步:建立 Log Analytics workspace

- 具體如何建立就不贅述了,沒有什麼特殊的,起了名字,選擇一下Resource group和location(記得和Azure Databricks Workspace保持一緻)

如何監控Azure Databricks叢集資源使用率

第二步:Log Analytics workspace Agents configuration配置

- Azure Databricks Cluster的master和worker節點都是Linux VM,是以我們這裡選Linux performance counters這個tab

- 然後點選:+ Add performance counter,選擇想要監控的counter即可。

如何監控Azure Databricks叢集資源使用率

這裡我添加了下面三個counter

如何監控Azure Databricks叢集資源使用率

第三步:擷取onboard agent for Linux資訊

這裡最重要的兩個資訊,下面的腳本裡的參數

- Workspace ID: 就是下面腳本裡的 -w 參數值

- Primary/Secondary key:就是下面腳本裡的 -s 參數值

如何監控Azure Databricks叢集資源使用率

第四步:Azure Databricks Cluster Init scripts配置

- 建立一個Notebook,名字:monitor,語言選擇:Python,Cluster選擇你要監控的那個cluster

如何監控Azure Databricks叢集資源使用率
如何監控Azure Databricks叢集資源使用率

- 複制下面的腳本到建立的Notebook中,儲存腳本到dbfs

- 按Shift + Enter運作腳本

如何監控Azure Databricks叢集資源使用率

注意:如果Cluster是shutdown狀态,會跳出下面的對話框,點選Start and Run,稍等片刻。(其實你可以去倒杯咖啡,慢慢等,是需要個幾分鐘開cluster)

如何監控Azure Databricks叢集資源使用率

- 上面的指令執行完之後,我們可以檢查一下腳本是否已經儲存到指定位置,運作下面的腳本:

如何監控Azure Databricks叢集資源使用率

- 編輯Cluster

如何監控Azure Databricks叢集資源使用率

- 找到Advanced Options,展開,然後切到Init Scripts這個tab,複制上面的腳本路徑,點選Add,添加好之後,重新開機cluster。

如何監控Azure Databricks叢集資源使用率

第五步:等。等個20~30分鐘吧!

第六步:Cluster資源使用率報表展示

- 找到Log Analytics workspace下的Logs

- 經過第五步的等待,在Tables下,應該有一個名叫Perf的table

- 輕按兩下Perf表名,然後再點選Run按鈕,稍等片刻,查詢結果就出來了。

恭喜你,到目前為止,你已經成功的擷取Azure Databricks Cluster VM的performace counter資料,接下來就是如何更優雅的展現資料了。Log Analytics是使用的Kusto Query Language(KQL)來查詢資料的,關于如何使用Kusto Query Language,又是另外一個話題,有時間再給大家詳細介紹一下,這裡就不再做詳細介紹了。

如何監控Azure Databricks叢集資源使用率
如何監控Azure Databricks叢集資源使用率

下面是我做的一個CPU使用率的折線圖,供大家參考:

如何監控Azure Databricks叢集資源使用率

KQL代碼如下:

至于其它performance counter的展示,隻要熟悉KQL文法,也很容易建立出來,這裡就不一一列舉了。

關于如何監控Azure Databricks Cluster資源使用情況,你學會了麼?有任何問題,請關注下面公衆号并留言。

如何監控Azure Databricks叢集資源使用率

繼續閱讀