设为首页 收藏本站
查看: 875|回复: 0

[经验分享] zabbix优化之LLD Filter Multi

[复制链接]

尚未签到

发表于 2019-1-19 09:30:40 | 显示全部楼层 |阅读模式
  提出问题:
  zabbix对文件系统的监控是通过LLD实现的,zabbix首先通过Discovery rule发现所有的文件系统名称和类型,如下:
shell# zabbix_get -s 127.0.0.1 -k vfs.fs.discovery
{
       "data":[
              {
                     "{#FSNAME}":"/",
                     "{#FSTYPE}":"rootfs"
              },
              {
                     "{#FSNAME}":"/proc",
                     "{#FSTYPE}":"proc"
              },
              {
                     "{#FSNAME}":"/sys",
                     "{#FSTYPE}":"sysfs"
              },
              {
                     "{#FSNAME}":"/dev",
                     "{#FSTYPE}":"devtmpfs"
              },
              {
                     "{#FSNAME}":"/dev/pts",
                     "{#FSTYPE}":"devpts"
              },
              {
                     "{#FSNAME}":"/dev/shm",
                     "{#FSTYPE}":"tmpfs"
              },
              {
                     "{#FSNAME}":"/",
                     "{#FSTYPE}":"ext4"
              },
              {
                     "{#FSNAME}":"/proc/bus/usb",
                     "{#FSTYPE}":"usbfs"
              },
              {
                     "{#FSNAME}":"/boot",
                     "{#FSTYPE}":"ext4"
              },
              {
                     "{#FSNAME}":"/data",
                     "{#FSTYPE}":"ext4"
              },
              {
                     "{#FSNAME}":"/proc/sys/fs/binfmt_misc",
                     "{#FSTYPE}":"binfmt_misc"
              }
       ]
}  然后通过在Discovery rule中配置的宏过滤规则(Filter Macro),把不需要监控的文件系统类型过滤掉,见下图。

  上图是zabbix默认的配置,通过宏{#FSTYPE}和正则表达式“File systems for discovery”过滤文件系统类型。

  现在问题来了,如果我想同时根据{#FSNAME}这个宏过滤掉一些我不关心的文件系统,该怎么办?
  分析问题:
  zabbix在Discovery rule中只能过滤单个宏,不支持多宏过滤的写法,因此上述需求就无法实现了。
  但是通过修改zabbix底层C代码,可以支持多宏过滤的。
  规定参数写法:
  Macro 多个宏变量之间用逗号分隔;
  Regexp 正则表达式名前面加'@',多个表达式之间也用逗号分隔;

  相同位置的宏变量和正则表达式是对应的,即第一个宏对应第一个正则表达式,第二个宏对应第二个正则表达式...
  填写方式如下:


  解决方法:
  建议先在自己的测试环境中修改,测试成功后再应用到生产环境。   

  第一步,下载附件,改名为lld.c。如果你的zabbix版本是2.2.5,下载源码安装包,解压:
shell# tar xvzf zabbix-2.2.5.tar.gz  第二步,把上面下载的lld.c文件覆盖掉zabbix原始lld.c文件,zabbix2.2.2及以上版本可直接覆盖:
shell# \cp lld.c zabbix-2.2.5/src/libs/zbxdbhigh/lld.c  第三步,编译zabbix server:
shell# cd zabbix-2.2.5
shell# ./configure --prefix=/etc/zabbix --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-ssh2 --enable-server
shell# make  没有报错的话,编译成功~见下图

  第四步,停掉zabbix server服务,备份zabbix_server主程序

shell# /etc/init.d/zabbix-server stop
shell# cp /usr/sbin/zabbix_server /usr/sbin/zabbix_server.bak  第五步,将编译好的zabbix_server覆盖原zabbix_server主程序,启动zabbix server服务
shell# cp src/zabbix_server/zabbix_server /usr/sbin/zabbix_server
shell# /etc/init.d/zabbix-server start  测试结果:
  第一步:只过滤{#FSTYPE},配置Discovery rule如下:

  监控间隔设置120秒,"Keep lost resources period"设置为0,方便观察结果。
  "Filter Macro"填写"{#FSTYPE}";"Regexp"填写"@File systems for discovery"。
  查看监控项组Filesystems下的监控项:

  第二步:同时过滤{#FSTYPE}和{#FSNAME},使{#FSNAME}过滤掉boot目录
  先创建正则表达式"Filter file system name":

  配置Discovery rule:

  "Filter Macro"填写"{#FSTYPE},{#FSNAME}";
  "Regexp"填写"@File systems for discovery,@Filter file system name"。
  注意:这里是英文的逗号','。

  大约120秒后,查看监控项组Filesystems下的监控项:

  发现boot目录已经被过滤掉了。测试完成。
  =====================================================================================================

  附:lld.c主要修改部分截图,右侧是优化后的,左侧是原版



附件:http://down.运维网.com/data/2364720


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-665041-1-1.html 上篇帖子: zabbix2.4域用户配置 下篇帖子: Zabbix监控之JMX协议
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表