zabbix 3.4新功能值解析——Preprocessing预处理

Zabbix 3.4版本更新了许多新功能,其中一个监控项功能Preprocessing,根据官方说明文档,在监控项收集的数据存储到数据库前,预先对数据进行处理,使用效果超过预期。这个功能存放位置在建立item后多了一个Preprocessing选项卡,截图以下正则表达式

f484255df77647d70b3a98915c5649ab.png

简单解析下Preprocessing菜单:shell

转换数据库

描述express

Custom multiplier网络

将值乘以指定的整数或浮点值。使用此选项将以KB,MBps等接收的值转换为B,Bps,不然Zabbix没法正确设置前缀(K,M,G等)。从Zabbix 2.2开始,也支持使用科学符号。 例如。 1e + 70。ide

Right trim性能

从值的末尾删除指定的字符。ui

Left trimspa

从值的起始处删除指定的字符。3d

Trim

从值的起始和结尾删除指定的字符。

Regular expression

将值与<pattern>正则表达式匹配,并用<output>替换值。 正则表达式支持用\N序列提取最多10个捕获的组。\ 参数:
 pattern - 正则表达式
 output - 输出格式化模板。一个\N(其中N = 1 … 9)转义序列被替换为第N个匹配组。

Boolean to decimal

将值从布尔格式转换为十进制。文本表示被转换为0或1.所以,“TRUE”存储为1,“FALSE”存储为0.全部值都以不区分大小写的方式进行匹配。当前被认为的布尔值值以下:
 TRUE - true, t, yes, y, on, up, running, enabled, available
 FALSE - false, f, no, n, off, down, unused, disabled, unavailable
 此外,任何非零数值都被认为是TRUE,0被认为是FALSE。

Octal to decimal

将八进制格式的值转换为十进制。

Hexadecimal to decimal

将值从十六进制格式转换为十进制。

Delta

计算当前值和上一个值之间的差值。评估为value-prev_value,其中 value - current value; prev_value - 之前收到的值每一个项目只容许一个delta操做。

Delta per second

计算每秒速度的值变化(当前值和上一个值的差值)。
 计算为(value-prev_value)/(time-prev_time),其中 value - 当前值; prev_value - 当前收到的值; time - 当前时间戳,prev_time - 之前值的时间戳。
 这个设置是很是有用的,以得到每秒不断增加的速度值。 若是当前值小于上一个值,Zabbix将丢弃该差别(不存储)并等待另外一个值。这有助于正常工做,例如,32位SNMP计数器的包装(溢出)。
 注意: 因为此计算可能产生浮点数,建议将'Type  of information' 设置为 Numeric (float),即便传入的原始值是整数。  这对于小数部分尤为重要。 若是浮点值很大而且可能超过'float'字段长度,在这种状况下,整个值可能会丢失,实际上建议使用Numeric(无符号),所以只会修剪小数部分。
 每一个监控项只容许一个delta操做。


1.1        正则表达式

一、选择字符或文本监控项

选择了收集系统CPU信息的监控项做为实验操做对象。未作处理时原始值为字符串

9f421c2da9b90f2e9f733a12ff302436.png

dca71d0e179739f48effe9c294d49019.png

二、如今把这个监控项的Preprocessing名称下拉菜单选择为正则表达式

e1be2f2f59bb6a03b42b66a3271a8e97.png

三、根据官方说明信息,监控项收集字符串若是符合^processor正则表达式的就会被替换为test,等待一段时候后结果符合预期

d444a5b00d52bb01ab830d0570298bf7.png

四、正则表达式还可使用\N(N=1……9)序列方式,格式化输出替换的模版,大大丰富的正则替换的类型,并能够重组替换的输出值。下面修改正则表达式使用序列方式自定义输出值

160021ab46736b0f25055c23c88f6cf4.png

五、正则表达式为(GenuineIntel).*(working),替换值为 \1 test \2,第一个括号的正则表达式表明第一个序列,第二个括号的正则表达式表明第二个序列,替换值分别使用\1和\2表明,不过必需要注意去掉括号后,整个正则表达式必须匹配监控项值的一部分,不然得出的结果为空值。

73f20bf5d8e4773675ba41ce1b84e519.png

得出的结果符合预期。


六、Proprocessing还有一个特别棒的功能,被转换了一次的数值能够在被下一层继续处理,若是熟悉使用过shell命令的管道符的话,对于这个就不难理解。以下图,增长多一层转换

8b48924bccf69910dac8778129c49c6c.png

结果为

1deeac43f6b90b41084a3496ae0cd1f0.png

七、能够在添加一层转换,使用\d+匹配其中的数字

3542a0d282b91a80c6519e1aacce08c7.png

结果为

22a3556f87e4003388421ca08fddba14.png

1.2        自定义倍数

一、根据上面得出的数字,使用Custom multiplier自定义倍数转换,可得到预期值

8b4248c2b19f50af041e469ad7b78b04.png

结果为

0670a25ab3f3b6dbb59fe18adfbbbd78.png

1.3        过滤尾字符

一、从值的末尾删除指定的字符

358a405c4d980f931aa5e3edfeb6b1dc.png

结果为

0584a0945baf0b4c12fb12180954f454.png

1.4        过滤首字符

一、从值的起始处删除指定的字符

5c55063f4e2f8e606800770677545acd.png

结果为

a691bc1d5dc1364154c36d8a4b011caa.png

注:其它的转换处理根据表格说明自行验证

1.5        存储值转换

      有意思是这些处理是在数据储存到数据库前的操做,而触发器的触发操做依据是数据库中储存的值,因此这一串处理储存到数据库的值是整数值类型的8,能够为这个监控项配置一个判断大于8等类型的触发器。


26aceab7276903f9a7c50c2d274d67ed.png

1ff75b53ea77450be9186af48a7ccddd.png

1.6        总结语

    preprocessing功能很是实用,如某些品牌的网络设备,使用snmp方式监控并收集回来的数据,因为厂商预先进行了处理,致使网络流量的值为4.5MB或者56KB等形式,人性化的表现形式,而对于3.4之前的zabbix来讲,整数或浮点数后面多一两个字符,这整串数据就不能以整数值或者浮点数配置监控项的数据库收集类型,必须使用文本字符串类型,而文本和字符串类型监控项触发器不能使用数值监控类型的判断并触发流量报警。要变成数字类型,惟一的方式是使用外部检查预先编写字符串处理脚本,但增长的配置监控项的繁琐程度,且外部检查下降了zabbix的性能,3.4的preprocessing功能使得问题解决,并更加灵活的处理监控数据。



         加入咱们,一块儿玩转zabbix。j_0061.gif

相关文章
相关标签/搜索