2653885 发表于 2019-1-19 08:42:45

zabbix之Web网络监控

  一、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

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

http://s3.运维网.com/wyfs02/M01/73/05/wKiom1XyQn_wZQ7KAAIYRbFm57U559.jpg
  参数讲解:
  ◆ Name:唯一的场景名次,在zabbix2.2以后可以使用宏,
  ◆ Application:场景属于哪个应用,
  ◆ New application:如果没有适合的应用可以填写在这里新建,
  ◆ Update interval (in sec):执行的时间间隔,

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

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

  ◆ HTTP proxy:你可以指定一个HTTP代理,书写格式是:http://@]proxy.mycompany.com[:port],默认使用1080端口,比如可以使用广东机房的代理去访问某个URL,那么获取到的QOS数据就是广东的了,
  ◆ Variables:定义Web scenarios中的变量宏,可以在URL、Post等参数中使用,使用格式如下:

  针对宏:{macrol}=value1
  针对变量:{username}=zbxuser
  {password}=kj3h5kJ34bd
  {hostid}=regex:hostid is (+)
  ◆ Headers:在请求的时候添加的头部信息,

  ◆ Enabled:是否启用此监控,

  4、下面我们查看Step选项
http://s3.运维网.com/wyfs02/M00/72/FF/wKiom1XxVvGQL-qbAAJC5NcoHFM767.jpg
  配置步骤:
http://s3.运维网.com/wyfs02/M02/72/FF/wKiom1XxVvLx-H5zAAFfYjcsPD8858.jpg
  ◆ 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里面看到如下监测信息,应该都不难懂,
http://s3.运维网.com/wyfs02/M01/73/06/wKiom1XyQ1WxIWRqAAKDHiyHj_E068.jpg
  在Dashboard中的web里面可以看到图标结构的监测数据
http://s3.运维网.com/wyfs02/M00/73/06/wKiom1XyQ9CzWHYHAAZqdeh5blo105.jpg
  上面是下载速度,下面是响应时间
  我们还可以针对监测的数据设定报警,并发送邮件,这里不再介绍。
  三、Web认证监控
  上面的监控是比较简单的监控,也是用的比较多的监控,但是有的时候我们访问的页面是需要登录认真的,就比如我们的监控nagios,他是有apache或者nginx提供的web服务,本身nagios没有登录验证功能,这就需要web服务设置验证功能,如果有认证需求,我们还是按照上面的配置两步就会出现问题,比如我做一个nagios认证页面的监控,平时访问网页的时候会跳出如下的认真框。
http://s3.运维网.com/wyfs02/M01/73/19/wKiom1X022_QEyh_AACZ0Wqip2U823.jpg
  如果我们还是按照上面的两步来做的话就会出现如下的问题
http://s3.运维网.com/wyfs02/M01/73/16/wKioL1X03qDhubXIAAKYbejkYVI949.jpg
  如果我们特意把返回的Required Status codes改为401那也行,但是就没有什么意义了,其实添加认证也很简单,如下
http://s3.运维网.com/wyfs02/M02/73/16/wKioL1X03zjz27R_AAJM40vREU0178.jpg
  我们只需在前两步的基础上面在这里添加认证登录的账号密码即可。
  ◆ 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
http://s3.运维网.com/wyfs02/M01/73/1A/wKiom1X06fjCBJ6_AALkupwe21s449.jpg
  在这里我们填写好登录zabbix的用户名密码,设定为变量。

  2、打开首页
http://s3.运维网.com/wyfs02/M00/73/17/wKioL1X07H7R98myAAFRxjrfg5E351.jpg
  3、登录
http://s3.运维网.com/wyfs02/M00/73/1A/wKiom1X06qGRgLE1AAHMOdXF9CI503.jpg
  4、登录验证
http://s3.运维网.com/wyfs02/M01/73/17/wKioL1X07PHBSPXSAAF2HhhwcBI083.jpg
  5、退出登录
http://s3.运维网.com/wyfs02/M01/73/1A/wKiom1X06uPRgGdQAAF3JPYtCMI998.jpg
  6、全部填写完成之后记得保存
http://s3.运维网.com/wyfs02/M02/73/1A/wKiom1X06yqD0eM7AASKjsLrHz8818.jpg
  7、查看结果
monitorning->web->筛选出你的主机->查看“zabbix性能监控”,结果如下图
各个阶段的响应时间、速度、返回状态码以及总的响应时间
http://s3.运维网.com/wyfs02/M00/73/1A/wKiom1X1AWygaiTnAA-2sZl4RL4211.jpg
  以上是没问题的信息,那么出现故障是什么样子呢?我把密码改掉,演示给大家看看下图,在LOGIN IN这个step就出错了,拿不到SID
http://s3.运维网.com/wyfs02/M01/73/1A/wKiom1X1Afai-yO9AALnHr6qWJM096.jpg
  那么Required String不匹配又是什么样子呢?我们把阶段3Login CHECK的required string的Profile改成Profile1试试。看看结果
http://s3.运维网.com/wyfs02/M02/73/1A/wKiom1X1A4Hi67-XAALUk2CI5dU366.jpg
  好了,web监控的实例就完成了。
  参考文档:https://www.zabbix.com/documentation/2.4/manual/web_monitoring?s[]=web



页: [1]
查看完整版本: zabbix之Web网络监控