概述
zabbix server 運行腳本或者二進制文件來執行外部檢測,外部檢測不需要在被監控端運行任何 agentd
item key 語法如下:
參數 | 定義 |
script | shell 腳本或者二進制文件名. |
parameter(s) | Optional command line parameters. |
如果不想傳遞任何參數,如下:
script[] 或者 script
zabbix server 會再定義好的目錄里面執行外部腳本(zabbix server 中的配置 extenalScripts),這個腳本將使用 zabbix
的運行用戶身份運行。請注意權限以及只有指定目錄中的命令才能夠被執行。
zabbix 腳本使用標准方式輸出(完整輸出但是會刪除末尾的空白) ,標准錯誤和退出代碼將會被丟棄
PS:請不要過度使用那個外部檢測,這會嚴重降低 zabbix 系統性能
下面寫個簡單腳本測試下:
[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]#
然后創建item
檢查能不能獲取到數據:
上面例子可以繼續優化 實際上腳本可能會給多個主機使用,不同主機的數據庫連接信息也不一樣,需要改成傳參的方式:
加入位置參數:
[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 maping
lastest data看下效果: