本文介绍:
通过Azure monitor监控虚拟机内存,并通过内存占用率触发某些操作。
视频介绍:
图文介绍:
Azure vm 监控页面默认没有虚拟机的内存占用情况 ,因为虚拟机的cpu/硬盘/网络属于主机级别的监控,而内存属于os级别监控,需要额外的配置才能采集到。
创建log analytics workspace:
设定区域等配置后,创建:
开启vm性能计数器:
针对windows 系统的采集:
针对linux 系统:
开启vm insights输出到log analytics workspace:
点击enable,等待验证通过
在下拉列表中选择刚才创建的log analytics workspace
在azure monitor创建报警:
注意,报警需要在log analytics workspace 层级创建,不能是vm层级:
选择scope,此处应该为log analytics workspace,如果选择vm是无法正常工作的
创建一个报警条件,本文中通过 custom log search 查询 agent 从 操作系统性能计数器发送过来的数据里查询内存占用情况:
本文查询出自官网:https://docs.microsoft.com/zh-cn/azure/azure-monitor/insights/vminsights-alerts
打开custom log search:
查询语句如下:
InsightsMetrics
| where Origin == "vm.azm.ms"
| where Namespace == "Memory" and Name == "AvailableMB"
| extend TotalMemory = toreal(todynamic(Tags)["vm.azm.ms/memorySizeMB"])
| extend AvailableMemoryPercentage = (toreal(Val) / TotalMemory) * 100.0
| summarize AggregatedValue = avg(AvailableMemoryPercentage) by bin(TimeGenerated, 15m), Computer, _ResourceId
注意将based on 条件修改为下图所示方案:
创建报警组,报警组是用来设置满足条件后如何报警的,通常报警组可以供多个报警条件使用的
本例中增加了一个email
添加一个webhook,
webhook 采用了https://webhook.site/ 这个测试工具进行测试,实际使用时,应替换为自己的webhook。
触发报警,观察结果:
进入vm中,运行几个程序,使内存利用率不足30%以触发报警,本例中我们打开了多个浏览器程序进行测试,也可以使用第三方测试工具。
稍等一会可以收到报警邮件:
webhook收到报警信息:
查阅报警记录,可根据报警严重程度进行过滤:
可查看内存报警记录: