ZABBIX全栈级监控实践——(九)面向业务行为的监控

2021-02-03 11:41:25 浏览数 (1)

Zabbix全栈级监控之面向业务行为的监控

蔡翔华(Shawn沙恩),高效运维社区金牌讲师,国内首批ZCP,Zabbix中文手册及EXIN DevOps手册官方译者。积极投入Zabbix社区建设,在多个技术大会上进行技术分享,有丰富的Zabbix开源监控平台的全栈式监控经验。拥有DevOps Master,Zabbix认证专家,ITIL,MCSE,RHCE,VCP等认证。

概述

在之前的分享中,和大家聊过监控的广度。

一个完整的监控链路应该至少由一下几部分构成:

  1. 底层的硬件(服务器、网络设备、UPS电源、环境温度等)
  2. 存储(磁盘阵列、集中式存储、分布式存储等)
  3. 操作系统(包括虚拟化操作系统,以及在虚拟化层之上的操作系统,如windows,linux,aix等)
  4. 中间件(Tomcat,Nginx,Apache等)
  5. 数据库(MySQL,SQLServer,Redis等)
  6. 应用(B端、C端应用,也包括移动端等)

对于IT专业人员而言,更关注的是操作系统这一层上下的监控(主要是操作系统,中间件和数据库)。那么有一个问题,如果这些组建能够正常运作,对应的应用和业务真的没有问题吗?

在软件测试领域,常常会使用Selenium来模拟用户的行为(鼠标操作、键盘操作、截图等),进行UI测试,确认相应的功能能否正常运作。

Zabbix虽然没有Selenium的UI测试功能,但本身也提供了一个模拟Web场景的操作功能——Web Scenario。

需求分析

先想一个问题:如何确保Zabbix平台正常运行?

如果监控CPU、内存等系统指标,只能确保Zabbix所在的服务器系统面正常;

如果监控端口和进程,只能确保Zabbix在指定端口上提供了服务;

但这些仍然无法确保用户可以正常使用这些平台。

事实上,此时需要以结果为导向,模拟用户的正常操作,并确保这些操作能够达到我们的预期。

以用户访问Zabbix平台为例,用户需要实现一下几个步骤:

  1. 需要打开Zabbix的URL,确保能够正常访问
  2. 需要使用正确的用户名和密码登陆Zabbix,确保能够正常登陆
  3. 需要登陆后访问某个内部页面(如Configuration下面的Hosts页面),确认能够正常打开
  4. 需要做一些查询操作(如查询127.0.0.1这台zabbix server本机),确保能够正确查询
  5. 需要登出Zabbix,确保能够正常登出

在上述过程中,也可以添加一些自定义的步骤(用户使用Zabbix的行为,如添加hosts等),确保Zabbix相应的功能可以被使用正常。

通过Zabbix Web Scenario实现面向业务行为的监控

那么在Zabbix平台中,我们该如何通过Web Scenario来实现?

1. 首先在一台可以访问Zabbix Web页面的服务器上创建一个Web Scenario,本例中这个Web Scenario创建在了Zabbix Server本机

在这里,我们使用了Variables变量,由于登陆的用户名密码在后续的步骤中会用到,可以在这里指定(也可以在后面步骤中书写,可以理解为全局变量和局部变量的区别)。

其他选项保持默认。接下来我们需要模拟需求分析部分的各个业务场景。

2. 第一步:需要打开Zabbix的URL,确保能够正常访问。

在Steps中添加Open Zabbix Website的步骤,如下图:

简单来说,就是让监控所在的服务器去访问这个url,如果在15s内能够访问到这个页面,且状态码为200(正常),同时返回的信息包含Zabbix这个关键词(用于确认Zabbix页面能被正常打开,而不是空白页),那么这一步就是成功的。需要注意的是,当你访问http://localhost/zabbix的时候,实际是通过跳转访问到了index.php页面,所以需要勾选Follow redirects。

3. 第二步:需要使用正确的用户名和密码登陆Zabbix,确保能够正常登陆。

在Steps中添加Sign in的步骤,如下图:

这里之所以添加了Post Field,是因为当我们登陆Zabbix的时候,其实是对于这个URL进行了Post,具体post了那些字段,可以通过浏览器的抓包看到。

同样的,我们要求状态码为200,返回页面包含zabbix关键词。

4. 第三步:需要登陆后访问某个内部页面(如Configuration下面的Hosts页面),确认能够正常打开。

同样,创建一个Visit “HOSTS” menu的step,返回值config,状态码200

5. 第四步:需要做一些查询操作(如查询127.0.0.1这台zabbix server本机),确保能够正确查询

创建Search “127.0.0.1”的step,查询search这个字段,value为127.0.0.1,由于能找到这台服务器,所以返回字段中也要求包含127.0.0.1,状态码200.

6. 第五步:需要登出Zabbix,确保能够正常登出

创建一个Sign Out的Step,确保能登出,具体的URL和field均可以通过抓包或者浏览器debug模式获得。

总结

通过Zabbix Web Scenario的监控,可以实现面向业务的监控,并通过post和get请求模拟了一些常用的操作,验证了相应的功能。具体的解决思路如下:

  1. URL处,填写用户实际访问的地址
  2. Query Field处,填写Get方法对应的参数
  3. Post Filed处,填写Post方法对应的参数
  4. 按需配置返回页面包含的关键词(Required string)以及状态码(Required status codes,一般为200)

最终的监控效果如下,可以返回失败在哪一个步骤,以及对应页面的访问速度和响应时间。

0 人点赞