zabbix--External checks 外部命令检测
概述
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看下效果: