如何监控Azure Databricks集群资源使用率
©著作权归作者所有:来自51CTO博客作者臭臭粑粑的原创作品,如需转载,请注明出处,否则将追究法律责任
客户:Azure Databricks可以监控的吧?
我:可以的。
客户:那我想监控Databricks Cluster的资源使用率。
我(思考片刻):好的。
为什么答应客户那么爽快,是因为以我对Azure的了解,只要是Azure上面的服务,基本上都有Monitor功能,而且还自带该服务的Mestrics数据,想要监控,直接到该服务下,找到Metrics,选择你感兴趣的metric,分分钟创建个折线图什么的。但当我去Azure Databricks Workspace服务下去找的时候,发现:
尼玛,没有Metrics,此刻,我才意识到,这次,
随后立马查官网确认,原来是真的:
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保持一致)
第二步:Log Analytics workspace Agents configuration配置
- Azure Databricks Cluster的master和worker节点都是Linux VM,所以我们这里选Linux performance counters这个tab
- 然后点击:+ Add performance counter,选择想要监控的counter即可。
第三步:获取onboard agent for Linux信息
这里最重要的两个信息,下面的脚本里的参数
- Workspace ID: 就是下面脚本里的 -w 参数值
- Primary/Secondary key:就是下面脚本里的 -s 参数值
第四步:Azure Databricks Cluster Init scripts配置
- 创建一个Notebook,名字:monitor,语言选择:Python,Cluster选择你要监控的那个cluster
- 复制下面的脚本到新建的Notebook中,保存脚本到dbfs
script = """sed -i "s/^exit 101$/exit 0/" /usr/sbin/policy-rc.dwget https://raw.githubusercontent.com/Microsoft/OMS-Agent-for-Linux/master/installer/scripts/onboard_agent.sh && sh onboard_agent.sh -w YourLogAnalyticsWorkspaceID -s YourLogAnalyticsWorkspacePrimarykeysudo su omsagent -c 'python /opt/microsoft/omsconfig/Scripts/PerformRequiredConfigurationChecks.py'/opt/microsoft/omsagent/bin/service_control restart"""dbutils.fs.put("/databricks/my_init_scripts/configure-omsagent.sh", script, True)
- 按Shift + Enter运行脚本
注意:如果Cluster是shutdown状态,会跳出下面的对话框,点击Start and Run,稍等片刻。(其实你可以去倒杯咖啡,慢慢等,是需要个几分钟开cluster)
- 上面的命令执行完之后,我们可以检查一下脚本是否已经保存到指定位置,运行下面的脚本:
%fs ls /databricks/my_init_scripts/
- 编辑Cluster
- 找到Advanced Options,展开,然后切到Init Scripts这个tab,复制上面的脚本路径,点击Add,添加好之后,重启cluster。
第五步:等。等个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,又是另外一个话题,有时间再给大家详细介绍一下,这里就不再做详细介绍了。
下面是我做的一个CPU使用率的折线图,供大家参考:
KQL代码如下:
Perf| where CounterName == "% Processor Time"| where ObjectName == "Processor"| summarize Cluster_CPU_Usage = avg(CounterValue) by bin(TimeGenerated, 1min), Cluster_Name = Computer, _ResourceId // bin is used to set the time grain to 15 minutes| render timechart
至于其它performance counter的展示,只要熟悉KQL语法,也很容易创建出来,这里就不一一列举了。
关于如何监控Azure Databricks Cluster资源使用情况,你学会了么?有任何问题,请关注下面公众号并留言。















