本文介绍:

通过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收到报警信息:

 

查阅报警记录,可根据报警严重程度进行过滤:

可查看内存报警记录: