在多数的运维工作中,我们除了要关注系统资源的使用率也要关注应用服务的健康状况,从而确保系统可以持续的对外提供服务。那么我们如何使用Azure Monitor来监控服务的健康状况呢。监视Windows和Linux服务的最佳选择之一是利用Azure自动化中的变更跟踪解决方案。
使用变更跟踪解决方案,可以跟踪Windows/Linux系统上的更改。在Windows它支持跟踪文件、注册表、服务和已安装软件的更改;在linux中它支持跟踪文件,软件和守护进程的更改。
默认情况下,变更跟踪解决方案会每隔30分钟收集一次服务的更改,蛋可以将其配置为每10秒收集一次。但是有一点需要注意,此中方式指跟踪更改,而不跟踪当前状态。也就是说,如果没有更改,则没有数据会发送到log analytics中。
在接下来的文章中,我们会重点关注Windows服务的监视,但是该概念对于Linux守护程序的工作原理相同。
启用变更跟踪
若使用GUI的话,我们有两种方式可以启用变更跟踪:
- 从Log Analytics工作区启用
在log analytics中点击“workspace summary”--“+Add”--“Change Tracking”:
点击“Change Tracking”后会打开其描述选项卡,然后点击创建,根据提示输入自动化账户信息即可: - 从Automation Account启用
在“Automation Account”中点击“Change Tracking“,然后选择对应的log analytics工作区后点击启用即可:
ps:个人觉得在自动化账户中启用变更跟踪更方便写
查询收集到的数据
我们可以通过如下查询语句来列出最新收集到的数据。但是请大家注意,如我们之前所说,我们只能收集到变更的数据,对于其他没有变更的状态我们是收集不到的。而且如果虚拟机突然崩溃,我们也可能不会收集到相应的变更实践。但是大家无需担心,我们可以使用其他的查询语句来监控vm的存活性。
let utcoffset = 8h;
ConfigurationData
| where ConfigDataType == "WindowsServices"
| where SvcName == "W3SVC"
| extend localTimestamp = TimeGenerated + utcoffset
| project localTimestamp, Computer, SvcDisplayName, SvcState
| order by localTimestamp desc
| summarize arg_max(localTimestamp, *) by SvcDisplayName
配置服务变更警报:
在一般的运维场景中,我们肯定是希望当检测到服务出现问题以后可以通过邮件等方式通知相应的运维人员进行处理。所以在此我们可以根据服务变更来配置相应的警报规则。在此示例中我们用来查询、警告IIS(W3SVC)服务是否停止:
ConfigurationChange
| where ConfigChangeType == "WindowsServices" and SvcName == "W3SVC" and SvcState == "Stopped"
设置完警报后,我们可以手动的将测试环境的iis服务停止,服务停止后,我们的邮箱会收到如下警报:
原文地址:https://blog.51cto.com/wuyvzhang/2472388