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看下效果:

原文地址:https://www.cnblogs.com/laonicc/p/11069115.html