一、web监控概述   

    在这一节,我们会介绍如何使用zabbix进行URL监控,即专门针对URL监控,比如php应用,只要我们能curl到这个ok.php,就认为这个服务是正常的,zabbix的Web monitoring也具有类似的功能。

    如果需要使用这个功能,需要编译的时候加入libcurl的支持。

    在开始之前,先介绍zabbix的一个概念——“Web scenarios”,即网络场景,就是用户为了完成某个目标,在网络上进行的一系列操作的过程。比方说,要登录微博,就是一个“网络场景”,在其中的每一个步骤操作——打开页面、发起登录请求、登录成功或者失败,在zabbix中统称为“步骤”。定义一个Web scenarios,我们需要定义其中什么步骤,以及按照什么顺序执行,然后zabbix会定期按照设置的顺序来执行这些“步骤”。

    在zabbix2.2中,Web scenarios和Items、Triggers,是依附在主机或者模版上面的,这意味着Web等场景也可以在模板上创建并且可以应用在多个主机上。

    在任何网络场景中收集下列信息:

      1、所有步骤的平均下载速度

      2、失败的步骤数

      3、最后一次出错信息

    在所有步骤中收集以下信息:

      1、平均下载速度

      2、响应时间

      3、响应代码

    Zabbix可以检查包含一个预先定义的字符串的HTML页面,看看其中是否存在某个字符串。它可以执行一个模拟的登录,并遵循一个模拟鼠标点击的路径。

    Zabbix还支持HTTP和HTTPS的Web监控。在一个Web scenarios中,还会报错cookie,做到真实地模拟一次完整的访问。


二、普通web监控创建 


1、点击: Configuration → Hosts (or Templates)

2、在host/template列中点击Web

3、在右上角点击创建scenario

你可以在其中配置以下参数

zabbix之Web网络监控_第1张图片


参数讲解:

◆ Name:唯一的场景名次,在zabbix2.2以后可以使用宏,

◆ Application:场景属于哪个应用,

◆ New application:如果没有适合的应用可以填写在这里新建,

◆ Update interval (in sec):执行的时间间隔,

◆ Retries:每个步骤在有问题的时候重试几次才认为有问题,

◆ Agent:模拟浏览器客户端,就是nginx日志中的agent,

◆ HTTP proxy:你可以指定一个HTTP代理,书写格式是:http://[username[:password]@]proxy.mycompany.com[:port],默认使用1080端口,比如可以使用广东机房的代理去访问某个URL,那么获取到的QOS数据就是广东的了,

◆ Variables:定义Web scenarios中的变量宏,可以在URL、Post等参数中使用,使用格式如下:

   针对宏:{macrol}=value1

   针对变量:{username}=zbxuser

             {password}=kj3h5kJ34bd

             {hostid}=regex:hostid is ([0-9]+)

◆ Headers:在请求的时候添加的头部信息,

◆ Enabled:是否启用此监控,


4、下面我们查看Step选项


zabbix之Web网络监控_第2张图片


配置步骤:

zabbix之Web网络监控_第3张图片


◆ Name:唯一的步骤名次,从zabbix2.2以后支持宏,

◆ URL:需要检查的URL,支持http和https,GET参数可以直接写在URL中,比如:http://www.a.com?time=10,

◆ Post:Post请求中的post变量,例如id=2345&userid={user},

◆ Variables:和Web scenarios的类似,不同的是这里设置的变量,只在这个步骤生效,并且只在GET、POST参数中使用有效,

◆ Headers:和Web scenarios类似,这里添加会覆盖Web scenarios中的Headers,

◆ Follow redirects:标记复选框遵循HTTP重定向,

◆ Retrieve only headers:标记复选框只检索从HTTP响应头,

◆ Timeout:URL的超时时间,

◆ Required string:这里需要配置一个正则表达式,当获取到这个URL的返回内容时,zabbix会根据这个正则表达式在返回的HTML中寻找,

◆ Required status codes:设置期望的HTTP状态码,这里可以写多个。



5、下面让我们看看监测的结果,可以在Latest Data里面看到如下监测信息,应该都不难懂,

wKiom1XyQ1WxIWRqAAKDHiyHj_E068.jpg


在Dashboard中的web里面可以看到图标结构的监测数据

zabbix之Web网络监控_第4张图片

上面是下载速度,下面是响应时间

我们还可以针对监测的数据设定报警,并发送邮件,这里不再介绍。


三、Web认证监控

    上面的监控是比较简单的监控,也是用的比较多的监控,但是有的时候我们访问的页面是需要登录认真的,就比如我们的监控nagios,他是有apache或者nginx提供的web服务,本身nagios没有登录验证功能,这就需要web服务设置验证功能,如果有认证需求,我们还是按照上面的配置两步就会出现问题,比如我做一个nagios认证页面的监控,平时访问网页的时候会跳出如下的认真框。

zabbix之Web网络监控_第5张图片


如果我们还是按照上面的两步来做的话就会出现如下的问题

zabbix之Web网络监控_第6张图片

    如果我们特意把返回的Required Status codes改为401那也行,但是就没有什么意义了,其实添加认证也很简单,如下  

zabbix之Web网络监控_第7张图片

   我们只需在前两步的基础上面在这里添加认证登录的账号密码即可。

◆ HTTP authentication:支持三种认证模式,默认是None,还有Basic,就是我们上图,还有NTLM(Windows NT LAN Manager)。

   下面关于几个加密认证的不多介绍,大家可以查看官方文档。


四、WEB场景监控

    默认我们人登录网站的过程大约有这么几步,打开页面-->登录-->登录验证-->退出。就如我们有些业务页面不是单单只监控一个首页是否正常,还有监控是否可以登录,登录认证等等比较复杂的信息,这些是上面简单配置无法实现的,我们需要通过下面的例子来模拟出来,我监控的是我的zabbix网站,因为zabbix本身是有用户认证功能的。

检测流程

    1.打开网站:如果http code为200,并且响应的html中包含Zabbix SIA表示打开成功(zabbix页面有这个标示)

    2.登陆后台:post用户名和密码到index.php,如果响应200,那表示post成功。并且通过正则表达式从响应的html中匹配sid,这个sid也就是一个宏变量,退出可以使用到

    3.验证登陆:打开首页,检索html中是否包含Profile(只有登陆成功,才会有Profile出现,它在成功页面的右上角,一个按钮)

    4.退出账号:传递参数sid给index.php即可退出,响应200即表示退出成功。

我们可以使用item key来获取每个step的速度以及响应时间或者说最新的一个错误消息,大家自己去研究吧,不难。


1、创建Web scenarios

zabbix之Web网络监控_第8张图片

  在这里我们填写好登录zabbix的用户名密码,设定为变量。


2、打开首页

zabbix之Web网络监控_第9张图片


3、登录

zabbix之Web网络监控_第10张图片


4、登录验证

zabbix之Web网络监控_第11张图片


5、退出登录

zabbix之Web网络监控_第12张图片


6、全部填写完成之后记得保存

zabbix之Web网络监控_第13张图片


7、查看结果

monitorning->web->筛选出你的主机->查看“zabbix性能监控”,结果如下图

各个阶段的响应时间、速度、返回状态码以及总的响应时间

zabbix之Web网络监控_第14张图片

    以上是没问题的信息,那么出现故障是什么样子呢?我把密码改掉,演示给大家看看下图,在LOGIN IN这个step就出错了,拿不到SID

zabbix之Web网络监控_第15张图片


那么Required String不匹配又是什么样子呢?我们把阶段3Login CHECK的required string的Profile改成Profile1试试。看看结果

zabbix之Web网络监控_第16张图片

好了,web监控的实例就完成了。




参考文档:https://www.zabbix.com/documentation/2.4/manual/web_monitoring?s[]=web