前文我们了解了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配置文件

[root@node05 ~]# grep -Ei ^[a-z] /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.0.43
ServerActive=192.168.0.43
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@node05 ~]#

  在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工具

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

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

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

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

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

[root@node05 ~]# cp /var/log/messages /usr/share/nginx/html/message.html
[root@node05 ~]# cp /var/log/lastlog /usr/share/nginx/html/lastlog.html
[root@node05 ~]# systemctl start nginx.service
[root@node05 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::10050 :::*
[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;修改权限即可;

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

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

[root@node05 ~]# tail /var/log/nginx/access.log
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" "-"
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" "-"
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" "-"
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" "-"
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" "-"
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" "-"
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" "-"
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" "-"
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" "-"
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" "-"
[root@node05 ~]#

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

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

分布式监控系统之Zabbix主动、被动及web监控的更多相关文章

  1. 分布式系统监视zabbix讲解五之web监控--技术流ken

    Web 监控 概况 你可以使用 Zabbix 检查几个网站可用性方面. 如果要使用 Web 检测功能,必须在 编译Zabbix 的时候加入 cURL(libcurl) 的支持. 要使用 Web 监控, ...

  2. 分布式系统监视zabbix讲解五之web监控

    Web 监控 概况 你可以使用 Zabbix 检查几个网站可用性方面. 如果要使用 Web 检测功能,必须在 编译Zabbix 的时候加入 cURL(libcurl) 的支持. 要使用 Web 监控, ...

  3. 分布式监控系统之Zabbix 使用SNMP、JMX信道采集数据

    前文我们了解了zabbix的被动.主动以及web监控相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14024212.html:今天我们来了解下zabb ...

  4. 分布式监控系统之Zabbix基础

    1.为什么要使用监控系统? 我们知道一个系统不管怎么讲它都会出故障,我们为了保证线上业务的最大化的可用性,通常我们要给关键业务做高可用:做高可用的目的是为了让故障发生时,能够有一个备用的解决方案,将故 ...

  5. 分布式监控系统之Zabbix基础使用

    前文我们了解了分布式监控系统zabbix的相关组件的作用和zabbix的部署,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13997582.html:今天我们 ...

  6. 分布式监控系统之Zabbix proxy

    前文我们了解了zabbix 使用snmp和jmx信道采集数据的相关使用配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14029864.html:今天我们来 ...

  7. 分布式监控系统之Zabbix网络发现

    前文我们了解了zabbix的宏,自定义item和模板的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14013331.html:今天我们来了解下zab ...

  8. 分布式监控系统之Zabbix宏、模板和自定义item

    前文我们聊了下zabbix的基础使用,包括主机的添加.监控项.触发器.action以及告警通知的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/140073 ...

  9. 开源监控系统中 Zabbix 和 Nagios 哪个更好?

    监控平台的话,各有优劣,但基本都可以满足需求.等达到一定监控指标后,发现,最困难的是监控项目的管理. CMDB中小规模(服务器<=1k):Zabbix大规模(1k>=服务器<=10k ...

随机推荐

  1. maven中执行package, install, deploy的区别

    package命令完成了项目编译.单元测试.打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库 install命令完成了项目编译.单元测试 ...

  2. JSP标签语法、JSTL标签库、EL表达式辨析

    <一.JSP > JSP 语法语法格式: <% 代码片段 %>或者<jsp:scriptlet> 代码片段</jsp:scriptlet> JSP声明 ...

  3. JavaScript 正则表达式:字符串中查找数字

    以下代码是在一段字符串中,用正则表达式找到数字,使用 replace() 方法,用找到的数字的两倍值替换原数字.replace() 方法的第二个参数为一个函数,返回找到数字的两倍值. <scri ...

  4. B. Petya and Divisors 解析(思維)

    Codeforce 111 B. Petya and Divisors 解析(思維) 今天我們來看看CF111B 題目連結 題目 略,請看原題 前言 看了別人的解答就豁然開朗 @copyright p ...

  5. jvm内存查看方法----个人参考版

    查看设置JVM内存信息 1 Runtime.getRuntime().maxMemory(); //最大可用内存,对应-Xmx 2 3 Runtime.getRuntime().freeMemory( ...

  6. kong in kubernetes

    网关 这里提到的网关特指API网关.API网关是在微服务架构的演进过程中产生的,其核心功能是聚合后端服务,为客户端调用提供统一的门户.由于网关的集中式管理,在其上又衍生了限流.负载.路由管理.安全防护 ...

  7. 1.DRF初始化

    1.DRF框架的8个核心功能   1.认证(用户登录校验用户名密码或者token是否合法) 2.权限(根据不同的用户角色,可以操作不同的表) 3.限流(限制接口访问速度) 4.序列化(返回json) ...

  8. Python的Opencv库怎么装

    原文章写于时间2019.4 当时鼓捣Opencv库弄了好长时间,前前后后弄了五天,找了好多帖子不知道删除重装了多少次,现在把我试出来正确的方法给大家分享一下. 1.Pycharm 我用的是win10系 ...

  9. Cocos Creator 源码解读:引擎启动与主循环

    前言 预备 不知道你有没有想过,假如把游戏世界比作一辆汽车,那么这辆"汽车"是如何启动,又是如何持续运转的呢? 如题,本文的内容主要为 Cocos Creator 引擎的启动流程和 ...

  10. 3.1 spring5源码系列--循环依赖 之 手写代码模拟spring循环依赖

    本次博客的目标 1. 手写spring循环依赖的整个过程 2. spring怎么解决循环依赖 3. 为什么要二级缓存和三级缓存 4. spring有没有解决构造函数的循环依赖 5. spring有没有 ...