概述
zabbix server 運行腳本或者二進制文件來執行外部檢測,外部檢測不須要在被監控端運行任何 agentd
item key 語法以下:
mysql
參數 | 定義 |
script | shell 腳本或者二進制文件名. |
parameter(s) | Optional command line parameters. |
若是不想傳遞任何參數,以下:
script[] 或者 script
zabbix server 會再定義好的目錄裏面執行外部腳本(zabbix server 中的配置 extenalScripts),這個腳本將使用 zabbix
的運行用戶身份運行。請注意權限以及只有指定目錄中的命令纔可以被執行。
zabbix 腳本使用標準方式輸出(完整輸出可是會刪除末尾的空白) ,標準錯誤和退出代碼將會被丟棄
sql
PS:請不要過分使用那個外部檢測,這會嚴重下降 zabbix 系統性能shell
下面寫個簡單腳本測試下:數據庫
[root@localhost zabbix]# ls alertscripts externalscripts [root@localhost zabbix]# cat externalscripts/mysql.sh #!/bin/bash export MYSQL_PWD=123456 mysql -uroot -h 192.168.1.107 -e "select account_locked from mysql.user where user='zabbix';" [root@localhost zabbix]# chmod a+x externalscripts/mysql.sh [root@localhost zabbix]# chown zabbix:zabbix externalscripts/mysql.sh [root@localhost zabbix]# ll externalscripts/mysql.sh -rwxr-xr-x 1 zabbix zabbix 131 Jun 22 16:13 externalscripts/mysql.sh [root@localhost zabbix]# pwd /usr/lib/zabbix [root@localhost zabbix]#
而後建立itemapi
檢查能不能獲取到數據:bash
上面例子能夠繼續優化 實際上腳本可能會給多個主機使用,不一樣主機的數據庫鏈接信息也不同,須要改爲傳參的方式:性能
加入位置參數:測試
[root@localhost zabbix]# ./externalscripts/mysql.sh 192.168.1.107 zabbix 123456 N [root@localhost zabbix]# cat ./externalscripts/mysql.sh #!/bin/bash host=$1 user=$2 mysql_pwd=$3 export MYSQL_PWD=$3 mysql -uroot -h $1 -e "select account_locked from mysql.user where user=\"$2\";" | sed -n "2p" [root@localhost zabbix]#
修改下item:優化
再配置下value mapingspa
lastest data看下效果: