zabbix在模板中預定義了一些key,但通常情況,並不能滿足我們的需求。幸運的是zabbix提供了自定義key的方法,因此我們可以靈活的監控各種我們想要監控的數據。
定義配置文件
通過yum安裝的zabbix-agent配置文件路徑為/etc/zabbix/zabbix_agentd.conf。
大約在這個文件的255行左右,我們可以發現下面的代碼:
1
|
Include=/etc/zabbix/zabbix_agentd.d/
|
我們自定義的配置,可以放到這個目錄。
我們可以創建一個自定義的文件來定義我們需要的key:
1
|
vim /etc/zabbix/zabbix_agent.d/userparameter_script.conf
|
文件里面添加這樣的內容:
1
2
3
4
|
# 這個文件監控自定義腳本輸出值
# 格式為UserParameter=<key>,<command>
UserParameter=script.date,date
|
保存之后重啟zabbix-agent。
測試獲取自定義key的值
在zabbix-server上使用zabbix_get工具獲取自定義值。
1
2
|
shell> zabbix_get -s 100.10.1.2 -k script.date
Fri Apr 24 14:41:18 CST 2015
|
獲取到了上面例子中執行date的結果,說明配置是成功的。
創建一個腳本
首先新建一個script目錄來存放我們的腳本,並將這個腳本命名為kucun.sh,我將使用zabbix來監控數據庫中的庫存表,使用庫存數據畫圖。
1
2
|
mkdir -p /etc/zabbix/script/
vim /etc/zabbix/script/kucun.sh
|
我們定義腳本,輸入一個店鋪號來查詢這個店鋪中商品數量小於n的條數。
若手動執行查詢,查詢方式是這樣的:
1
2
|
shell> /etc/zabbix/script/kucun.sh bj001 30
2
|
輸出2即表示有2個商品數量小於30。
下面是腳本的內容:
1
2
3
4
5
6
7
8
|
#!/bin/bash
shop_id=$1
number=$2
dbhost="100.10.1.2"
dbuser="monitor"
dbpasswd="21"
sql="SELECT count(*) FROM lsp_cus.menu WHERE shop_no = \"$shop_id\" AND date = UNIX_TIMESTAMP(DATE_FORMAT(NOW(),'%Y-%m-%d')) AND num - sale < \"$number\""
mysql -h$dbhost -u$dbuser -p$dbpasswd -Ne "$sql"
|
使用腳本查詢的結果創建key
重新編輯
1
|
vim /etc/zabbix/zabbix_agent.d/userparameter_script.conf
|
文件修改為:
1
2
3
|
# 這個文件監控自定義腳本輸出值
# 格式為UserParameter=<key>,<command>
UserParameter=script.kucun[*],/etc/zabbix/script/kucun.sh $1 $2
|
通過zabbix-server查詢
在zabbix服務器上使用zabbix_get工具查詢店鋪號001,庫存小於30的商品數量。
1
2
|
shell> zabbix_get -s 100.10.1.2 -k script.kucun[001,30]
18
|
可以看到成功了。
上面用到方法的一些解釋
UserParameter=key[*],command
key為唯一值,[*]表示參數。
command為要執行的命令或腳本,key的[*]里面的參數一一對應$1到$9,一共9個參數。$0表示腳本命令。返回結果數據最大為512KB。
參數禁止使用下列字符:\ ‘ ” ` * ? [ ] { } ~ $ ! & ; ( ) <> | # @
腳本的命令行參數可以通過搜索引擎搜索相關文章。
轉自 http://www.qiansw.com/zabbix-user-parameters-key-script.html
一些坑------
有問題首先查看 /var/log/zabbix 看看怎么說
權限問題 配置
$vi /etc/zabbix/zabbix_agentd.conf AllowRoot屬性
修改后啟動失敗 $setenforce 0 關閉 selinux
$/etc/selinux/config SELINUX=disabled