Zabbix7.0教程:新增Browser监控项

news/2024/12/31 4:17:23/文章来源:https://www.cnblogs.com/lwops/p/18529399

前言    

Zabbix 7.0.0版本之后,增加了“Browser”监控项类型,即浏览器监控,能够使用浏览器监控复杂的网站和web应用。 浏览器监控项允许执行用户定义的JavaScript代码来模拟与浏览器相关的操作,例如点击、输入文本、网页导航等。该监控项通过HTTP/HTTPS收集数据,并部分实现了使用Selenium Server或普通的WebDriver(例如ChromeDriver)作为测试终端的W3C WebDriver标准。

本文主要介绍一个使用“Browser”监控项的例子。

本次实验环境如下:

操作系统版本:Anolis OS 8.8

操作系统内核信息:Linux localhost 4.18.0-477.36.1.0.1.an8.x86_64 #1 SMP Thu Dec 28 06:29:01 CST 2023 x86_64 x86_64 x86_64 GNU/Linux

Zabbix版本:7.0.3

本次实验需要配置yum源,最好是互联网的yum源,并且能连接互联网。

安装chrome浏览器和chromedriver驱动

Zabbix服务器上安装chrome浏览器:

curl -k https://intoli.com/install-google-chrome.sh | bash

 

查看浏览器的版本:

rpm -qa | grep chrome

从上图可知,本机安装的chrome浏览器版本为130.0.6723.91

 

下载同大版本的浏览器驱动(即130版本),驱动查找方式参考:https://blog.csdn.net/m0_54958293/article/details/134663146

本次测试,我下载是https://storage.googleapis.com/chrome-for-testing-public/130.0.6723.91/linux64/chromedriver-linux64.zip

 将该zip文件上传到linux服务器上并解压。

 

 

安装运行驱动需要的依赖环境:

yum install nss

附:可通过执行ldd chromedriver命令查看驱动是否缺少其他lib,如有缺少,需要继续安装其他lib。

 

运行该驱动程序:

nohup /root/chromedriver-linux64/chromedriver --port=4444 --allowed-ips=127.0.0.1,192.168.80.144  > chromedriver.log &

说明:--port表示需要监听的端口,--allowed-ips表示允许哪些IP地址使用该驱动

确认驱动是否正常运行:

ps -ef | grep chromedriver

ss -tnl | grep 4444

 

修改zabbix_server配置文件

修改zabbix_server的配置文件,在配置文件的最下方加上:

WebDriverURL=http://192.168.80.144:4444

 

执行zabbix_server -T命令确定配置文件修改后无问题

 

重启zabbix_server服务:(不同环境的重启命令可能不同)

systemctl restart zabbix-server

systemctl status zabbix-server

 

添加一个Browser监控项

创建监控主机:

 

创建监控项:

 

名称:自定义

类型:Browser

键值:自定义

信息类型:文本

更新间隔5m (按需修改)

需要注意的是,默认的超时时间是60秒,如果网页访问较慢,需要适当延长时间。

脚本:(按需修改)

var opts = Browser.chromeOptions();
opts.capabilities.alwaysMatch['goog:chromeOptions'].args = ["--no-sandbox","--disable-dev-shm-usage","--headless","--disable-gpu","--no-first-run"];
//opts.capabilities.alwaysMatch['goog:chromeOptions'].binary= '/usr/bin/google-chrome-stable';var browser = new Browser(opts);try {browser.navigate("http://192.168.80.144:8080/index.php");   //需要修改为zabbix的登录页面地址var el = browser.findElement("xpath", "//input[@id='name']");if (el === null) {result = "找不到用户名输入框";}el.sendKeys("Admin");   //需要修改为登录用的用户名el = browser.findElement("xpath", "//input[@id='password']");if (el === null) {result = "找不到密码输入框";}el.sendKeys("zabbix");   //需要修改为登录用的密码el = browser.findElement("xpath", "//button[@id='enter']");if (el === null) {result = "找不到登录按钮";}el.click();el = browser.findElement("xpath", "//li[@id='config']");if (el === null) {result = "无法找到数据采集菜单";}el.click();el = browser.findElement("xpath", "//a[@href='zabbix.php?action=host.list']");if (el === null) {result = "无法找到主机链接";}el.click();el = browser.findElements("xpath", "//a[@data-hostid]");result = [];for(var i=0,count=el.length;i<count;i++){result.push(el[i].getText());}result = "当前页面的主机名称列表为:" + result ;//result = browser.getPageSource();  //返回当前页面的整个HTML源代码
el = browser.findElement("xpath", "//a[@class='zi-sign-out']");if (el === null) {result = "无法找到退出按钮";}el.click();}
catch (err) {result = err.message;
}
finally {return result;
}

查看并对比监控结果:

 

 

附上面脚本的部分解析

browser.navigate("http://192.168.80.144:8080/index.php");

网页为Zabbix的登录页面,如下图:

 

var el = browser.findElement("xpath", "//input[@id='name']");

el = browser.findElement("xpath", "//input[@id='password']");

el = browser.findElement("xpath", "//button[@id='enter']");

均为查找元素,findElement只会查一个元素,findElements会查所有符合要求的元素。

 

el.sendKeys("Admin");

表示往查找到的元素中输入字符。

el.click();

表示执行左键点击操作。

 el[i].getText()

表示获取该元素的内容。

 result = browser.getPageSource();

可以返回当前页面的整个HTML源代码

脚本中的可变参数,还可与主机宏联动,实现从外部传入到脚本里,具体可参考Zabbix 7版本自带的监控模板:Website by Browser

zabbix在线答疑,可以关注乐维社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/827523.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ABB机器人维修示教器线缆常见的故障现象

在工业自动化领域,ABB机械手是一款广泛应用的设备,其示教器线缆的正常运行对于机械手的稳定工作至关重要。然而,在实际使用过程中,示教器线缆可能会出现各种故障,影响机械手的正常操作。本文将介绍ABB机器人示教器线缆常见的故障现象及相应的ABB机器人维修解决方案。 一、…

[GXYCTF2019]Ping Ping Ping 1 - Xxiaoma解题

打开后,发现显示一个 /?ip= 我们直接在url里添加/?ip=127.0.0.1,发现有回显,这时候就可以用分号;来进行命令链接执行了。 输入url/?ip=127.0.0.1;ls 回显出来两个php文件!直接构造payload:/?ip=127.0.0.1;cat /flag.php才发现没那么简单,回显过滤了空格,可以使用$IFS…

manim边学边做--三维的点和线

Manim 提供了一系列专为三维空间设计的对象,让创建三维数学动画变得更加轻松。 本篇开始介绍其中最简单的点和线相关对象,也就是Dot3D(三维的点),Line3D(三维的线)和Arrow3D(三维的箭头)。Dot3D用于表示三维空间中的点,是构建其他复杂三维图形的基础,它适用于标记关…

洛谷题单指南-二叉堆与树状数组-P2168 [NOI2015] 荷马史诗

原题链接:https://www.luogu.com.cn/problem/P2168 题意解读:把单次替换成k进制字符串,使得替换后文本内容最短,典型的哈夫曼编码应用。 解题思路: 要把单词转成k进制字符串,根据哈夫曼编码的原理,可以依次将k个出现次数最少的单词进行合并,最后得到一棵树,每个非叶节…

.Net Core NPOI 导出多级表头

想要导出这样的表格 数据准备格式附上源码1 using NPOI.HSSF.UserModel;2 using NPOI.SS.UserModel;3 using NPOI.SS.Util;4 using System.Data;5 using System.Text.RegularExpressions;6 7 namespace TestConsoleApp8 {9 /// <summary>10 /// 导出Excel11 …

Nacos原理汇总

今天就应某位小伙伴的要求,来讲一讲Nacos作为服务注册中心底层的实现原理不知你是否跟我一样,在使用Nacos时有以下几点疑问:临时实例和永久实例是什么?有什么区别? 服务实例是如何注册到服务端的? 服务实例和服务端之间是如何保活的? 服务订阅是如何实现的? 集群间数据…

人工智能模型训练中的数据之美——探索TFRecord

上一篇:《构建人工智能模型基础:TFDS和Keras的完美搭配》 序言:在人工智能模型的训练过程中,如何高效管理和处理大量数据是一个重要的课题。TensorFlow 的 TFRecord 格式为大规模数据存储和处理提供了一种灵活且高效的解决方案。在本节知识中,我们将介绍如何利用 TFRecord…

教师提前批试讲-注意事项

教师提前批试讲-注意事项

大白菜装系统

在平时工作中,作为程序员,最苦逼的是公司的电脑坏了,都找你。我想说我是程序员,不是修电脑的,但是架不住小姐姐的热情,还是做了。 装系统流程: 第一步:前期准备 1、使用【大白菜】制作U盘启动盘。 2、查询机型的U盘启动快捷键。 3、准备一个ISO/GHO镜像。 第二步:插入…

实验11:装饰模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解装饰模式的动机,掌握该模式的结构; 2、能够利用装饰模式解决实际问题。[实验任务一]:手机功能的升级用装饰模式模拟手机功能的升级过程:简单的手机(SimplePhone)在接收来电时,会发出声音提醒主人;而Ja…

Pbootcms网站,从Apache切换为Nginx后网站打不开

打开网站设置登录宝塔面板。 选择需要配置的网站,点击“设置”。进入伪静态设置在网站设置页面中,找到并点击“伪静态”选项卡。添加Nginx伪静态规则在伪静态设置中,清空原有规则或选择自定义规则。 输入以下Nginx伪静态规则:location / {if (!-e $request_filename){rewri…

2024/11/06

软件设计 实验10:组合模式 用透明组合模式实现教材中的“文件夹浏览”这个例子。 类图 public abstract class AbstractFile {public abstract void add(AbstractFile element);public abstract void remove(AbstractFile element);public abstract void display(int depth); …