zabbix最佳化之LLD Filter Multi-macro

來源:互聯網
上載者:User

標籤:zabbix   zabbix lld   zabbix filter multi-macro   

提出問題:

    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),把不需要監控的檔案系統類型過濾掉,見。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/44/52/wKiom1PgmASiAQ60AAG6zTObBA8466.jpg" title="1.png" alt="wKiom1PgmASiAQ60AAG6zTObBA8466.jpg" />

    是zabbix預設的配置,通過宏{#FSTYPE}和Regex“File systems for discovery”過濾檔案系統類型。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/53/wKioL1Pgmv7Q6SIrAACShme3-RY046.jpg" title="2.png" alt="wKioL1Pgmv7Q6SIrAACShme3-RY046.jpg" />

    現在問題來了,如果我想同時根據{#FSNAME}這個宏過濾掉一些我不關心的檔案系統,該怎麼辦?

分析問題:

    zabbix在Discovery rule中只能過濾單個宏,不支援多宏過濾的寫法,因此上述需求就無法實現了。

    但是通過修改zabbix底層C代碼,可以支援多宏過濾的。

規定參數寫法:

    Macro 多個宏變數之間用逗號分隔;

    Regexp Regex名前面加‘@‘,多個運算式之間也用逗號分隔;

    相同位置的宏變數和Regex是對應的,即第一個宏對應第一個Regex,第二個宏對應第二個Regex...

    填寫方式如下:

    650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/54/wKioL1PgnaKQZtlBAAEzwYakods346.jpg" title="3.png" alt="wKioL1PgnaKQZtlBAAEzwYakods346.jpg" />

解決方案:

    建議先在自己的測試環境中修改,測試成功後再應用到生產環境。   

    第一步,下載附件,改名為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.5shell# ./configure --prefix=/etc/zabbix --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-ssh2 --enable-servershell# make

    沒有報錯的話,編譯成功~見

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/54/wKiom1Pgon-gQXg4AAKvS5VwzxY657.jpg" title="QQ20140805172132.png" alt="wKiom1Pgon-gQXg4AAKvS5VwzxY657.jpg" />

    第四步,停掉zabbix server服務,備份zabbix_server主程式

shell# /etc/init.d/zabbix-server stopshell# 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_servershell# /etc/init.d/zabbix-server start

測試結果:

    第一步:只過濾{#FSTYPE},配置Discovery rule如下:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/55/wKiom1PgsfvAURxHAAHxRs__tAI739.jpg" title="1.png" alt="wKiom1PgsfvAURxHAAHxRs__tAI739.jpg" />

監控間隔設定120秒,"Keep lost resources period"設定為0,方便觀察結果。

"Filter Macro"填寫"{#FSTYPE}";"Regexp"填寫"@File systems for discovery"。

查看監控項組Filesystems下的監控項:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/55/wKiom1PgswjgY9_gAAJo7WR_WtI038.jpg" title="QQ20140805182059.png" alt="wKiom1PgswjgY9_gAAJo7WR_WtI038.jpg" />

    第二步:同時過濾{#FSTYPE}和{#FSNAME},使{#FSNAME}過濾掉boot目錄

    先建立Regex"Filter file system name":

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/56/wKioL1PgtOuD4GeNAAKKX2EsB24463.jpg" title="2.png" alt="wKioL1PgtOuD4GeNAAKKX2EsB24463.jpg" />

    配置Discovery rule:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/44/55/wKiom1PgtO3wik67AAES2Rrw0t4439.jpg" title="QQ20140805184005.png" alt="wKiom1PgtO3wik67AAES2Rrw0t4439.jpg" />

"Filter Macro"填寫"{#FSTYPE},{#FSNAME}";

"Regexp"填寫"@File systems for discovery,@Filter file system name"。

注意:這裡是英文的逗號‘,‘。

大約120秒後,查看監控項組Filesystems下的監控項:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/44/56/wKioL1PgtlLzAQSYAAHqmFwDMUk213.jpg" title="QQ20140805181742.png" alt="wKioL1PgtlLzAQSYAAHqmFwDMUk213.jpg" />

發現boot目錄已經被過濾掉了。測試完成。

=====================================================================================================

附:lld.c主要修改部分,右側是最佳化後的

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/44/55/wKiom1PguvzD1fdaAA7DtHubbpE997.jpg" title="QQ20140805190323.png" alt="wKiom1PguvzD1fdaAA7DtHubbpE997.jpg" />

本文出自 “啟程-Linux技術部落格” 部落格,請務必保留此出處http://qicheng0211.blog.51cto.com/3958621/1536072

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.