Zabbix监控bes数据与bes控制台不一致的情况

 

问题场景: 一个中医服务器上部署多个bes并同时启动,配置多个监控后但是监控数据为0,而bes控制台有数据

排查结果: zabbix取值间隔设置1分钟,bes控制台取值是5秒,当服务本身活跃线程不多时,因为时间差导致结果不一样

 

// 定义一个名为(value)的函数,该函数接收一个参数value function (value) {

// 定义一个正则表达式变量reg,用于匹配以#JMXOBJ:开头且后面跟着任意字符.*?直到结尾的模式 var reg = /#JMXOBJ:.*?/g;

// 使用match方法获取到value中符合reg正则表达式的部分,并将其赋值给replace_text var replace_text = value.match(reg);

// 遍历replace_text数组 for(let i in replace_text) { // 将replace_text[i]分割成两部分,根据":"符号进行切割,将结果赋值给arr var arr = replace_text[i].split(':');

// 将arr[0]替换为"",并将结果重新赋值给arr arr = replace_text[i].replace(arr[0]+':','');

// 判断arr是否等于"com.kes.appserv:type=Executor,name=httpWorkerThread-19201(http-thread-pool)" if(arr == "com.kes.appserv:type=Executor,name=httpWorkerThread-19201(http-thread-pool)") { // 如果条件成立,则对name进行处理,使其长度减去1,将结果赋值给last_length name = arr.split('=')[1]; last_length = name.length - 1;

// 对tmp_value进行处理,去除首尾空格,并将结果重新赋值给tmp_value tmp_value =[last_length]; } else {

// 否则,对name进行处理,使其长度减去1,将结果赋值给last_length name = arr.split('='); last_length = name.length - 1;

// 对tmp_value进行处理,去除首尾空格,并将结果重新赋值给

tmp_value tmp_value = name[last_length]; }

// 对replace_text[i]进行处理,添加"#JMX_STB:"前缀,使用replace方法去除空格,并在末尾添加双引号,将结果赋值给replace_texti var replace_texti = replace_text[i]+"(#JMX_STB):"+tmp_value.replace(" ","").replace(" ","")+"";

// 将replace_texti替换掉replace_text中的第i个元素 replace_text[i] = replace_texti;

// 将处理后的replace_texti替换掉原始value中的对应部分

value =value.replace(replace_text[i],replace_text); }

// 返回修改后的value return value; }

以上是预处理脚本,这个自动发现预处理是注册监控项用的,意思是匹配到19201,执行特定替换逻辑,否则执行默认替换逻辑

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值