本期项目主要围绕着“以应用系统为中心,以用户为视角,监控应用系统可用性”这个理念展开。前期调研了Zabbix自带的Web检测工具,发现存在的与预期效果不符合的地方。
1、对于打开首页来说,Web场景可以很好的做出来,但是对于需要登录、点击、刷新等这样的模拟人行为的操作,是Web场景监控项所不能做到的。
2、发起访问端不同。Zabbix的Web场景是利用zabbix server/proxy 发起的访问请求,跟本期用户视角即从多个办公地和各地工厂发起模拟用户打开网页不相符合。
3、维护成本降低,如果每个场地办公地都要放置一台服务器,对于成本来说非常大的。本期项目设计使用dell的windows独立盒子,运行windows操作系统。Windows操作系统对于大多数人员维护起来较为容易。
项目初期,制定系统监控架构,给出监控方案。
1、对于操作系统、硬件、存储设备架构上采用传统的server-agent/server-snmp等模式。(这块架构就不再细说)
2、对于web应用前端,采用出Agent采样点,方式从不同区域访问并操作。
3、对于web应用后端,采用点对点的检测连通方式。与传统的从server/proxy监控机器发起的检测有很大区别。通过map图形方式展示应用之间联系。
4、web服务可用性需要达到99.75% ,利用Grafana进行数据展现。
监控系统整体架构图(应用系统角度出发):
架构采用 Server--Proxy 高可用架构,保证监控系统稳定运行。
建设初期也说了对于web应用这块分为几个部分。
1、是web应用前端,用户体验端这一块模拟监控。这块使用Agent+脚本形式。
2、web应用的后端(不能顾前不顾后)我们要知道发生了一个应用或者DB问题,会影响哪些应用组件和其它的应用,也就是影响面多大问题。实现这块内容则使用zabbix的服务端口响应监控项,并配合MAP图形根据web应用后端的逻辑进行画图连线展示。
3、是目前基于现状一些web应用是SAAS商业软件包。那对于软件供应商在服务中承若的SLA将如何衡量,也是我们需要考虑并且监控实现的。实现对SLA的监控可以使用Zabbix SLA服务这样一个功能,然后利用Grafana的展现出来。
1、模拟用户访问/登录习惯
2、实时采集监控状态
3、从不同的地点发起访问
第一步,部署代理,Agent 代理部署在各个厂房办公室等取样点机器上。这些取样点机器,由一个个Dell小主机,运行windows10系统,分散在各个工厂、办公场所等。
第二步,将检测脚本等相关文件放在各个取样点的机器上。采集流程逻辑如下:
在前端配置自定义的监控项,类型为Zabbix Agent。后端脚本使用python2.7。模块使用selenuim(一款WEB自动化工具。参考官网https://www.selenium.dev/)。
第三步,各个WEB需要检查的操作步骤(包括自动登录步骤、自动点击步骤、自动查找步骤)信息单独写在各自的YAML标准配置文件中(方便对特殊的web应用监控)。
YAML文件。
下面是标准的代码,(完整代码可对订阅包客户开放)
取样点每次采集到web的页面信息会先保存到本地log文件中。Zabbix前端异步读取结果集(考虑到部分的步骤操作时间总和会超过zabbix的30s最大超时时间,所以采用异步结果集)。
第四步,我们在后台测试运行,使用cmd命令框或者powershell框都可以。运行结果如下:
返回的json将会进入到log文件中。再由Zabbix监控项将log日志数据读取,并监控起来。
1、监控逻辑拓扑图以OA应用举例
对于web应用后端逻辑监控:
第一步,先在被监控web应用的系统上部署代理Agent
第二步,创建监控项,选择类型是Zabbix Agent/Zabbix 客户端 ,key选择net.tcp.service[service,,] 。
参考地址(https://www.zabbix.com/documentation/5.0/manual/config/items/itemtypes/zabbix_agent)
注意:这里对于rds的实例地址目前不支持的。
然后根据应用Owner提供的关系对应表,画出对应的应用的map端口逻辑调用图:
在Zabbix 配置的菜单栏,配置Servers。这里要注意,我们要体现“用户为视角”用户可能在不同的办公地点。
以OA举例子 ,所以这里Servers需要将所以取样点关于OA应用WEB检测结果汇总。WEB应用可用性评判标准为:当所有的取样点访问OA应用的WEB都出现问题时,判定此时OA 应用WEB可用性当前状态不可用。其它情况均视为WEB应用可用性状态正常。
然后我们想办法将汇总WEB可用性在Grafana上展现出来。这里就需要用到Grafana的IT Service功能。具体如下:
这里的IT Service : 是我们在Zabbix平台服务那里配置的名称。
创建好了之后保存:就可以直观看到当前的各个应用的可用性,可追溯历史到近一年的数据。(历史数据根据自行配置而定,可以更长)
监控过程是个持续过程,全生命周期中会有不断地交付,把可交付成果,交付给运维团队运维才能算作真正的完成。最终这套监控系统将会交付运维。交付给一线运维团队,日常运维变得非常简单。
第一,是Zabbix 的Dashboard。实时关注有无告警需要处理。
第二,是看影响面,各个应用系统的端口逻辑调用map图。一旦服务挂了或者端口不通,map图将清晰展现影响面,影响系统等。
第三,长期看SLA(WEB应用系统的可用性多高),以季度为例,本季度PDM可用性为99.626%,可用性低于预定99.75%。将通知应用Owner进行整改。