当前位置: 首页 > 科技观察

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

时间:2023-03-12 11:54:00 科技观察

在上一篇文章中,我们了解了zabbix的网络发现功能,并结合action实现了主机的自动发现并将主机添加到zabbixhosts,并链接指定模板进行监控;审核请参考https://www.cnblogs.com/qiuhom-1874/p/14020847.html;今天我们就来学习一下zabbix的主动监控、被动监控和web监控相关的话题。1、什么是主动监测?什么是被动监控?我们知道获取数据有两种方式,一种是get,一种是push;在zabbix中,在agent端描述了主动监控和被动监控;我们通过agent主动将数据发送到zabbixserver,这种采集数据的方式称为主动监控;从zabbixserver获取数据到zabbixagent的方式称为被动监控。这样,只有当zabbixserver周期性地请求zabbixagent时,zabbixagent才会响应相应的数据给zabbixserver,如果zabbixserver没有请求,zabbixagent就不会向zabbixserver发送数据;主动监控无论zabbixserver是否请求agent,都会按照指定的时间频率向server推送数据;默认的zabbix是被动监控,也就是zabbixserver必须不断的请求各个zabbixagent去采集数据,否则就没有数据;2、主动监控过程必须实现主动监控。首先agent要知道自己采集了哪些数据,然后发送给server,然后zabbixserver如何区分不同agent发送的数据呢?在zabbix监控系统中,主动监控的工作过程是在zabbixweb上配置好监控配置后,先保存到zabbix数据库中,然后zabbixserver将相应的数据传输到数据库中。在主动模式下,zabbixserver会在第一时间主动链接到zabbixagent,将监控配置推送给zabbixagent。zabbixagent获取到监控配置后,会按照指定的时间频率采集指定的数据,发送给server端;并且为了标识自己,zabbixagent在向server发送数据的时候会带上配置文件中指定的hostname主机名以识别它是哪个代理;3、zabbixtrap模式trap模式也是一种主动监控,其工作过程不依赖于zabbixserver配置的时间间隔,也不依赖于zabbixagent;它的工作过程是,当被监控时,在监控主机上使用zabbixsender工具定时发送数据,zabbixserver会运行一个traper进程,等待各个被监控端发送的数据;然后将数据记录到数据库中,完成一个数据采集过程;这种模式主要用于被监控端遇到紧急情况时收集临时信息;配置zabbixagent工作在被动模式提示:zabbixagent默认使用被动模式监控,但是我们需要配置允许哪个zabbixserver向zabbixagent发送命令来收集数据;上图红框中的Server命令是配置让zabbixserver向agent发送命令收集数据。可以配置多个zabbixserver的ip地址;配置完以上服务器后,保存配置,启动zabbixagent。在zabbixweb界面配置zabbixagent,选择zabbixagent完成对应项的配置;如下图配置zabbixagent工作在active模式,ServerActive命令用于指定将数据发送给谁;而配置主机名的方式可以使用Hostname直接指定一个固定的主机名,或者使用HostnameItem使用zabbix内置keysystem.hostname获取主机名;这两种方式任选其一即可;主动模式zabbixagent配置文件[root@node05~]#grep-Ei^[a-z]/etc/zabbix/zabbix_agentd.confPidFile=/var/run/zabbix/zabbix_agentd.pidLogFile=/var/log/zabbix/zabbix_agentd.logLogFileSize=0Server=192.168.0.43ServerActive=192.168.0.43HostnameItem=system.hostnameInclude=/etc/zabbix/zabbix_agentd.d/*.conf[root@node05~]#在zabbixwebgui中配置ViewCode使用对应的zabbixagent类型作为zabbixagent(active)来检查我们刚才定义的item是否可以收集数据呢?提示:能够采集到数据说明我们配置zabbixagent为active模式是正常的;zabbixweb上使用zabbixtrapper类型配置项提示:以上配置表示允许主机node05.test.org使用zabbixsender向zabbixserver发送数据,发送数据的key为test_trap。该键无实际意义,主要用于标识对应的数据;这样配置之后,在zabbixserver上配置一个trapper,接收node05.test.org,使用zabbix_sender发送test_trap关键数据;在node05上安装zabbix-sender工具[root@node05~]#yuminstall-yzabbix-sender在node05上使用zabbix_sender将keytest_trap的数据发送到zabbixserver[root@node05~]#zabbix_sender-z192。168.0.43-snode05.test.org-ktest_trap-o"$(free|awk'/^Mem/{print$4}')"infofromserver:"processed:1;failed:0;total:1;secondsspent:0.000360"sent:1;skipped:0;total:1[root@node05~]#提示:-zuser指定zabbixserver地址,-suser指定本机主机名;-k用于指定接收数据的key,-o表示发送key对应的数据,-o可以直接给值或者使用命令替换的方式;只有在zabbixweb上对应的key才能接收到数据吗?提示:可以看到对应的key已经接收到数据;这种陷阱通常可以在没有zabbixagent的情况下以特定频率发送给被监控主机的za当bbixserver发送特定数据时,我们可以将被监控端执行的zabbixsender命令配置为定时任务,这样也可以完成周期性的数据采集;以上就是zabbix常用的两种主动监控配置,接下来我们来了解一下zabbix的web监控。什么是网络监控?字面意思就是监控网页,没错,就是监控网页;我们知道,一个网站通常不是一个页面,除了首页,还有其他的系统页面,比如支付系统、订单管理系统等;如果我们监控一个网页站点是否正常,仅仅监控首页显然是不够的;在zabbix上提供了监控网页的接口,我们只需要配置被监控页面对应的访问url即可;在zabbixweb监控中,会默认监控我们指定页面的3个指标数据,分别是监控指定页面的资源下载速度、页面响应时间和响应码;在node05上配置web服务监控,在node05上安装web服务nginx进行测试[root@node05~]#yuminstall-ynginx模拟提供多个访问页面,并启动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~]#systemctlstartnginx.service[root@node05~]#ss-tnlStateRecv-QSend-QLocalAddress:PortPeerAddress:PortLISTEN0128*:80*:*LISTEN0128*:22*:*LISTEN0100127.0.0.1:25*:*LISTEN0128*:10050*:*LISTEN0128:::80:::*LISTEN0128:::22:::*LISTEN0100::1:25:::*LISTEN0128:::10050:::*[root@node05~]#在node05上配置并监控web服务zabbix网页提示:在主机列表中找到对应的主机,选择web;提示:选择createwebscenario进入创建web场景页面;尖端:填写名称和应用,选择更新间隔,以及尝试次数和代理(客户端浏览器,这里选择模拟谷歌的浏览器),填写完web场景的基本信息后,点击step,填写相关信息要监控的页面;提示:点击添加,添加需要监控的网址的相关信息;提示:如有其他信息,请在相应位置点击添加;按照以上逻辑添加其他网页URL;提示:如果被监控网页需要验证登录用户名和密码,可以选择Authentication菜单填写相应的用户名和密码;如下提示:如果没有认证要求,可以选择不填写最终认证;最后添加weburl点击添加,将对应的网页添加到zabbix监控中;View添加到web监控中,它收集哪些数据项?有资料吗?提示:从上面页面的信息可以看出我们添加了web监控,监控每个url上的下载速率、状态码和响应时间;上面的监控采集数据,我们可以看到对于work1指定的url,它的监控响应码是403,因为我们没有授权nginx用户读取message.html,所以响应403;只需修改权限;[root@node05~]#chmoda+r/usr/share/nginx/html/message.html[root@node05~]#ll/usr/share/nginx/html/message.html-rw-r--r--1rootroot264214Nov2319:01/usr/share/nginx/html/message.html[root@node05~]#查看nginx的访问日志,是否在周期性访问对应页面?[root@node05~]#tail/var/log/nginx/access.log192.168.0.43--[23/Nov/2020:19:51:23+0800]"GET/lastlog.htmlHTTP/1.1"200292000"-""Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.104Safari/537.36""-"192.168.0.43--[2020年11月23日:19:52:23+0800]"GET/index.htmlHTTP/1.1"2004833"-""Mozilla/5.0(X11;Linux86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.104Safari/537.36""-"192.168.0.43--[23/Nov/2020:19:52:23+0800]"GET/message.htmlHTTP/1.1"403555"-""Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.104Safari/537.36""-"192.168.0.43--[23/Nov/2020:19:52:23+0800]"GET/lastlog.htmlHTTP/1.1"200292000"-""Mozilla/5.0(X11;Linux86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.104Safari/537.36""-"192.168.0.43--[23/11/2020:19:53:23+0800]"GET/index.htmlHTTP/1.1"2004833"-""Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.104Safari/537.36""-"192.168.0.43--[2020年11月23日:19:53:23+0800]"GET/message.htmlHTTP/1.1"403555"-""Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.104Safari/537.36""-"192.168.0.43--[2020年11月23日:19:53:23+0800]"GET/lastlog.htmlHTTP/1.1"200292000"-""Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.104Safari/537.36""-"192.168.0.43--[23/Nov/2020:19:54:23+0800]"GET/index.htmlHTTP/1.1"2004833"-""Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.104Safari/537.36""-"192.168.0.43--[23/Nov/2020:19:54:23+0800]"GET/message.htmlHTTP/1.1"403555"-""Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/38.0.2125.104Safari/537.36""-"192.168.0.43--[23/Nov/2020:19:54:23+0800]"GET/lastlog.htmlHTTP/1.1"200292000"-""Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Cchrome/38.0.2125.104Safari/537.36""-"[root@node05~]#提示:从上面的日志可以看出,zabbixserver模拟谷歌浏览器每分钟访问相应的监控页面;上面是配置和zabbixweb监控相关的演示,后面可以对web监控采集到的指标数据定义触发器、告警等操作;