分布式监控系统之Zabbix主动、被动及web监控

开发 前端 分布式
今天我们来了解下zabbix的主动监控、被动监控以及web监控相关话题;

 前文我们了解了zabbix的网络发现功能,以及结合action实现自动发现主机并将主机添加到zabbix hosts中,链接指定模板进行监控;回顾请参考 https://www.cnblogs.com/qiuhom-1874/p/14020847.html ;今天我们来了解下zabbix的主动监控、被动监控以及web监控相关话题。

1、什么是主动监控?什么是被动监控?

我们知道获取数据的方式有两种,一种是get,一种是push;在zabbix中描述主动监控和被动监控都是站在agent的一方来描述的;我们把agent主动将数据发送给zabbix server这种方式采集数据,叫做主动监控;把zabbix server 向zabbix agent获取数据的方式叫做被动监控,这种方式只有zabbix server周期性的请求zabbix agent,zabbix agent才会响应对应的数据给zabbix server ,如果zabbix server 不请求,则zabbix agent不会发送数据给zabbix server ;而主动监控不管zabbix server请不请求agent,agent它都会以指定时间频率向server推送数据;默认zabbix 是使用的被动监控,这也意味着zabbix server 要不停的去请求各zabbix agent去采集数据,否则就没有数据;

2、主动监控的工作过程

要实现主动监控,首先agent要知道自己采集那些数据,然后发送给server端,其次zabbix server 怎么区分不同的agent 发来的数据;在zabbix 监控系统中,主动监控的工作过程是,在zabbix web上配置好监控配置后,首先保存到zabbix database中,然后由zabbix server到database中把对应的配置进行应用;在主动模式中,zabbix server 第一次会主动链接zabbix agent 把监控配置推送给zabbix agent,zabbix agent 拿到监控配置以后,它就按照指定的时间频率采集指定的数据发送给server端;而zabbix agent为了标识自己的身份,它在向server端发送数据时,它会把配置文件中指定的hostname带上,以hostname来标识自己是那个agent;

3、zabbix trap模式

trap模式也是主动监控中的一种,它的工作过程不依赖zabbix server配置的时间间隔,也不依赖zabbix agent;它的工作过程是,在被监控主机上使用zabbix sender工具,不定时的发送数据,而zabbix server端会运行一个traper的进程一直等待各个被监控端发来的数据;然后记录数据到数据库,从而完成一次数据收集的过程;这种模式主要用在收集当被监控端遇到紧急事件,临时发出的信息;

配置zabbix agent工作为被动模式

提示:默认情况zabbix agent采用被动模式监控,但是我们要配置允许那个zabbix server来向zabbix agent发送指令采集数据;上面红框中的Server指令就是来配置允许那个zabbix server向本agent发送指令采集数据,它可以配置多个zabbix server的ip地址;配置好以上Server以后保存配置,启动zabbix agent,在zabbix web界面配置使用zabbix agent 选择zabbix agent即可完成对应item的配置;如下图

配置zabbix agent工作为主动模式

提示:配置zabbix agent工作为主动模式,除了要配置Server还要配置ServerActive和对应主机名,ServerActive指令用于指定将数据发送给谁;而配置主机名的方式可以使用Hostname直接指定一个固定的主机名,或者使用HostnameItem来使用内建的zabbix key system.hostname获取主机名;这两种方式选择一种即可;

主动模式zabbix agent配置文件

  1. [root@node05 ~]# grep -Ei ^[a-z] /etc/zabbix/zabbix_agentd.conf  
  2. PidFile=/var/run/zabbix/zabbix_agentd.pid 
  3. LogFile=/var/log/zabbix/zabbix_agentd.log 
  4. LogFileSize=0 
  5. Server=192.168.0.43 
  6. ServerActive=192.168.0.43 
  7. HostnameItem=system.hostname 
  8. Include=/etc/zabbix/zabbix_agentd.d/*.conf 
  9. [root@node05 ~]#  
  10.  
  11. View Code 

在zabbix web gui配置使用对应zabbix agent 的类型为zabbix agent (active)

查看我们刚才定义的item是否能够采集到数据呢?

提示:能够采集到数据说明我们配置zabbix agent 为主动模式是正常的;

在zabbix web上配置使用zabbix trapper类型的item

提示:以上配置表示允许node05.test.org这台主机使用zabbix sender向zabbix server发送数据,发送数据的key为test_trap,这个key没有实质上的意义,主要用来标识对应数据的;这样配置以后,在zabbix server 上就配置好一个trapper来接收node05.test.org使用zabbix_sender 发送test_trap这个key 的数据了;

在node05上安装zabbix-sender工具

  1. [root@node05 ~]# yum install -y zabbix-sender 

在node05上使用zabbix_sender向zabbix server发送test_trap这个key的数据

  1. [root@node05 ~]# zabbix_sender -z 192.168.0.43 -s node05.test.org -k test_trap -o "$(free|awk '/^Mem/{print $4}')" 
  2. info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000360" 
  3. sent: 1; skipped: 0; total: 1 
  4. [root@node05 ~]# 

提示:-z用户指定zabbix server的地址,-s用户指定本机主机名称;-k用于指定接收数据的key,-o表示发送对应key的数据,-o可以直接给定一个值或者使用命令替换的方式;

在zabbix web上才看对应key是否收到数据呢?

提示:可以看到对应key已经收到数据;这种trap通常可以在没有zabbix agent情况下,对应被监控主机又想以特定频率向zabbix server发送特定的数据时使用,我们可以把在被监控端执行的zabbix sender命令配置成一个定时任务,这样也可以完成周期性的数据采集;

以上就是zabbix中常用的两种主动监控的配置,接下来我们再来了解下zabbix 的web监控

什么是web监控啊?从字面意思理解就是监控web网页嘛,对就是监控web网页;我们知道一个web站点通常都不是一个页面,除了主页还有其他系统页面,比如支付系统,订单管理系统等等;如果我们监控一个web站点是否正常,如果只监控主页很显然不够;在zabbix上它提供了监控web页面的接口,我们只需要配置其对应被监控的页面的访问url即可;在zabbix 的web监控中,默认它会监控我们指定页面的3个指标数据,分别是监控指定页面的资源下载速度,页面响应时间和响应码;

配置node05上的web服务监控

在node05上安装web服务nginx做测试

  1. [root@node05 ~]# yum install -y nginx 

模拟提供多个访问页面,并启动nginx

  1. [root@node05 ~]# cp /var/log/messages /usr/share/nginx/html/message.html 
  2. [root@node05 ~]# cp /var/log/lastlog /usr/share/nginx/html/lastlog.html 
  3. [root@node05 ~]# systemctl start nginx.service  
  4. [root@node05 ~]# ss -tnl 
  5. State      Recv-Q Send-Q           Local Address:Port                          Peer Address:Port               
  6. LISTEN     0      128                          *:80                                       *:*                   
  7. LISTEN     0      128                          *:22                                       *:*                   
  8. LISTEN     0      100                  127.0.0.1:25                                       *:*                   
  9. LISTEN     0      128                          *:10050                                    *:*                   
  10. LISTEN     0      128                         :::80                                      :::*                   
  11. LISTEN     0      128                         :::22                                      :::*                   
  12. LISTEN     0      100                        ::1:25                                      :::*                   
  13. LISTEN     0      128                         :::10050                                   :::*                   
  14. [root@node05 ~]# 

在zabbix web页面上配置监控node05上的web服务

提示:在主机列表中找到对应主机,选择web;

提示:选择create web scenario进入创建web场景页面;

提示:填写名称和application,选择更新时间间隔,以及尝试次数和agent(客户端浏览器,这里选择模拟谷歌的浏览器),填写好web scenari 基础信息后,点击step,填写要监控的页面相关信息;

提示:点击add添加要监控的web url相关信息;

提示:如果有其他信息,在对应位置点击add添加即可;按照以上逻辑添加其他网页url;

提示:如果被监控的web页面需要验证登录用户名和密码,可以选择Authentication菜单填写对应的用户名和密码即可;如下

提示:如果没有验证需求,最后的authentication可以选择不填写;最后添加好web url后点击Add就把对应的web 页面添加到zabbix 监控中了;

查看添加到web 监控,它到底采集哪些数据项?是否有数据呢?

提示:从上面的页面信息可以看到我们添加到web监控,它在每个url上都监控了下载速率,状态码和响应时长;上述监控采集到数据中,我们可以看到对于work1指定的url 它监控响应码是403,原因是我们没有给message.html授权nginx用户可读,所以它响应403;修改权限即可;

  1. [root@node05 ~]# chmod a+r /usr/share/nginx/html/message.html 
  2. [root@node05 ~]# ll /usr/share/nginx/html/message.html 
  3. -rw-r--r-- 1 root root 264214 Nov 23 19:01 /usr/share/nginx/html/message.html 
  4. [root@node05 ~]# 

查看nginx的访问日志,看看它是否在周期性的访问对应的页面?

  1. [root@node05 ~]# tail /var/log/nginx/access.log          
  2. 192.168.0.43 - - [23/Nov/2020:19:51:23 +0800"GET /lastlog.html HTTP/1.1" 200 292000 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "-" 
  3. 192.168.0.43 - - [23/Nov/2020:19:52:23 +0800"GET /index.html HTTP/1.1" 200 4833 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "-" 
  4. 192.168.0.43 - - [23/Nov/2020:19:52:23 +0800"GET /message.html HTTP/1.1" 403 555 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "-" 
  5. 192.168.0.43 - - [23/Nov/2020:19:52:23 +0800"GET /lastlog.html HTTP/1.1" 200 292000 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "-" 
  6. 192.168.0.43 - - [23/Nov/2020:19:53:23 +0800"GET /index.html HTTP/1.1" 200 4833 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "-" 
  7. 192.168.0.43 - - [23/Nov/2020:19:53:23 +0800"GET /message.html HTTP/1.1" 403 555 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "-" 
  8. 192.168.0.43 - - [23/Nov/2020:19:53:23 +0800"GET /lastlog.html HTTP/1.1" 200 292000 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "-" 
  9. 192.168.0.43 - - [23/Nov/2020:19:54:23 +0800"GET /index.html HTTP/1.1" 200 4833 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "-" 
  10. 192.168.0.43 - - [23/Nov/2020:19:54:23 +0800"GET /message.html HTTP/1.1" 403 555 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "-" 
  11. 192.168.0.43 - - [23/Nov/2020:19:54:23 +0800"GET /lastlog.html HTTP/1.1" 200 292000 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36" "-" 
  12. [root@node05 ~]# 

提示:从上面的日志中我们可以看到,zabbix server 以每一分钟的频率模拟谷歌浏览器在访问对应监控的页面;

以上就是zabbix web监控相关的配置和演示;后续我们就可以针对web监控的采集到指标数据定义触发器,告警等等操作;

 

责任编辑:张燕妮 来源: 博客园
相关推荐

2011-04-01 10:18:12

zabbix

2011-04-01 14:54:23

zabbix汉化分布式监控

2014-03-03 09:23:43

Zabbix分布式系统监控

2023-01-09 11:23:03

系统

2014-03-10 17:21:00

IT技术周刊

2021-09-30 23:12:52

监控分布式跟踪

2015-07-28 15:51:45

EagleeBay分布式实时监控

2021-05-24 10:49:59

监控系统架构技术

2019-06-27 10:17:40

Centos7Pinpoint监控

2023-09-19 21:09:40

可视化监控Skywalking

2021-08-24 05:02:34

云原生容器分布式

2015-04-30 06:56:57

2018-01-12 16:51:48

华为

2015-01-21 16:08:52

ZabbixPuppet

2021-03-19 08:47:38

Zabbix 5.2VMware监控

2022-03-01 16:26:09

链路监控日志监控分布式系统

2019-12-26 08:59:20

Redis主从架构

2013-03-22 15:55:22

Web架构架构

2021-01-04 08:55:07

ZabbixProxy分布式部署

2023-05-29 14:07:00

Zuul网关系统
点赞
收藏

51CTO技术栈公众号