zabbix自定義監控


  • 有的時候zabbix提供的監控項目,不能滿足我們生產環境下的監控需求,此時我們就要按照zabbix的規范自定義監控項目,達到監控的目的
  • zabbix_get:模擬zabbix_server和agent獲取數據
  • 相關概念
  • item: Items是從agnet主機里面獲取的所有數據。通常情況下我叫itme為監控項,item由key+參數組成
  • Key:我們可以理解為key是item的唯一標識,在agent端有很多監控項,zabbix-server根據key區分不同的監控項
  • trigger:觸發器是建立在item數據上的,具有閾值觸發事件的功能
    基本格式: :.()}
    server:agent名稱,加入主機時配置的
    key:就是上面說的key
    function:對閾值進行操作的函數,以下函數
    operate:表達式
    constant:常量

例如:{docker02:proc.mysql.last()}<>1

  • 不用擔心trigger表達式不好寫,在定義好item后,在zabbix點點就自動生成了
 zabbix_get -s 192.168.56.131 -p 10050 -k "proc.item[/usr/sbin/mysqld,mysql]" 
【option】
# -s:指定agent地址
# -p:agent端口
# -k:指定item的key
# [/usr/sbin/mysqld,mysql]:向腳本傳遞了兩個參數,用逗號分隔

 


* 下面以監控mysql進程為例,做了自定義監控


1. zabbix_server與zabbix_agent

  • zabbix_server通過發送key給zabbix_agent,然后agent端口根據key,把所要監控的item的最新數據返回給server端

2. 自定義監控項

  • 自定義腳本格式
key[*],[command|sh]
# <key[參數]>,<命令或者腳本>
# [*]:固定格式,表示server端是否傳過來參數,在命令或者腳本中用$1,23...引用,shell腳本中的引用$$1,2,3..引用,
# 如果server端不傳參數,[*]可以不寫

 

2.1 修改agent端配置文件,自定義key

sudo vim /etc/zabbix/zabbix_agentd.conf

 

  • 做以下修改
UnsafeUserParameters=1 # 默認為0,表示不允許自定義key
# 監控mysql進程是否存在,[*]因為不需要server端傳遞參數,所以沒寫
UserParameter=proc.mysql,ps -ef|grep /usr/sbin/mysqld|grep -v grep|wc -l

  

2.2 web頁面配置,加入自定義監控項

  1. 【配置】->【主機】,點擊所要監控的主機

  1. 點擊【監控項】

  1. 點擊右上角【創建監控項】

  1. 創建監控項
  • 這里的key值對應我們在agent端自定義的key

  • 重啟agent服務
sudo service zabbix-agent restart

 

  1. 查看item返回的數據:【檢測中】->【最新數據】

從圖中可以看到,mysql監控項返回的數值是1,說明mysql的進程數為1,代表mysql運行正常,如果想要可以郵件報警,可以給這個自定義的item添加觸發器,參考“監控進程和端口號”一章


3. 執行腳本練習

  • 執行自定義腳本監控,agent通過server端發來的參數,執行腳本返回一個結果給server
  1. 修改zabbix_agent配置文件,添加自定義key
sudo vim /etc/zabbix/zabbix_agentd.conf

 

  • 做以下修改
UserParameter=proc.item[*],/home/tuna/shelles/zabbix/user_defined.sh $1 $2 # server端要向agent端發送兩個參數

 

  1. 寫腳本
vim user_defined.sh
#!/bin/bash
PROC=$1 # 接收用於匹配進程的字段
USER=$2 # 接收進程的開啟者
ps -ef|grep "$PROC"|grep -v grep|awk '{if($1=="'$USER'"){print $2}}'|wc -l

 

  • 測試一下
zabbix_get -s 192.168.56.131 -p 10050 -k "proc.item[/usr/sbin/mysqld,mysql]"
# [/usr/sbin/mysqld,mysql]:模擬server端向agent端發送了兩個參數,分別是/usr/sbin/mysqld用於匹配進程,mysql:進程的所有者

 

  • 接着就一樣的配置監控項就可以了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM