微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Log Analytics (KQL) 通过心跳跟踪 VM 可用性集或可用区的 SLA

如何解决如何使用 Log Analytics (KQL) 通过心跳跟踪 VM 可用性集或可用区的 SLA

我想使用 Log Analytics 查询在 Monitor Workbook 中跟踪我们的 VM 的 SLA。 为此,我使用了“Heartbeat”表,它提供了每个 VM 的心跳。 但是,我们的一些 VM 位于可用性集/区域中,因此,SLA 仅被破坏, 如果在 1 分钟的间隔内,两个心跳都丢失了。 因此,我需要能够通过查询中的可用性集/区域对心跳进行分组,但心跳上似乎没有这样的属性

我可以使用单独的 Azure Resource Graph 查询搜索哪些 VM 位于可用性集/区域中,但是当我将此查询与我的 Log Analytics 查询合并时,我无法在查询(我只能合并表)。

有关信息,这些是我的 Log Analytics Heartbeat 查询和我的资源图 SLA 查询

cd ./java_files
let timeRangeStart = {TimeRange:start};
let timeRangeEnd = {TimeRange:end};
Heartbeat
| where ResourceType == "virtualMachines"
| extend ResourceGroup = case(ResourceGroup <> "",ResourceGroup,"On-Prem")
| where TimeGenerated > timeRangeStart and TimeGenerated < timeRangeEnd and Computer in ({Servers})
| extend Resource=tolower(iff(isempty(_ResourceId),Resource,_ResourceId))
| summarize heartbeat_tot = count() by Resource,SubscriptionId
| extend total_number_of_buckets=round((timeRangeEnd-timeRangeStart)/1m)
| extend round(availability_rate=heartbeat_tot*100/total_number_of_buckets,2)
| extend availability_rate = min_of(availability_rate,100)
| order by availability_rate asc

解决方法

有多少资源?

如果不是大量资源,解决方法是:

  1. 在文本参数中运行您的 ARG 查询,并格式化查询结果以有效生成一个 json 对象数组,其中包含您需要的 id、位置等。然后将此参数标记为隐藏

  2. 在您的日志查询中,在查询之前引用该参数 json 文本,并使用 KQL 运算符将该 JSON 结构转换为表格。然后您可以在查询中加入/过滤该表

它不是最佳的,如果有大量资源,它也不会很好地工作,因为每次运行查询时,您实际上都是在“上传”一个 json blob,然后立即进行解析又分开了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。