求Kusto Query实现Azure仪表板VM状态统计条形图展示
KQL 查询解决方案
核心步骤
- 筛选Application Insights中符合目标格式的日志
- 解析提取总VM数、运行中VM数、高计算VM数
- 计算停止VM数(总VM数-运行中VM数)和非高计算VM数(总VM数-高计算VM数)
- 重塑数据结构以适配Azure仪表板图表展示
完整查询代码
traces | where message startswith "#TotalVM:" | parse message with "#TotalVM:" TotalVM:long ",Running:" RunningVM:long ",highcompute:" HighComputeVM:long | extend StoppedVM = TotalVM - RunningVM | extend NonHighComputeVM = TotalVM - HighComputeVM | project MetricName = dynamic(["总VM数", "运行中VM数", "停止VM数", "高计算VM数", "非高计算VM数"]), MetricValue = dynamic([TotalVM, RunningVM, StoppedVM, HighComputeVM, NonHighComputeVM]) | mv-expand MetricName to typeof(string), MetricValue to typeof(long) | order by timestamp desc
关键部分解释
- 日志筛选:
where message startswith "#TotalVM:"精准定位目标格式的日志条目,避免无关数据干扰 - 字段解析:
parse运算符按固定字符串格式提取数值,并指定long类型保证后续计算的合法性 - 衍生指标计算:通过简单算术运算直接得到停止VM数和非高计算VM数,无需复杂逻辑
- 数据重塑:
mv-expand将数组展开为多行键值对,这种结构完美适配Azure仪表板的饼图、柱状图等图表的数据要求
图表配置提示
- 若使用饼图:将
MetricName设为类别字段,MetricValue设为数值字段即可展示各VM状态的占比 - 若使用时序柱状图:保留
timestamp字段,按时间维度分组,可展示各指标随时间的变化趋势
内容的提问来源于stack exchange,提问作者Gurudas
相关产品推荐
相关产品推荐

