情况是这样的,用zabbix检测磁盘数目,如果数目不等于预设值则报警。安装好raid检测软件,写好脚本,手工执行脚本非常OK(正常返回1,异常返回0)
1 | [root@xxxxxx bin]# ./raid.sh lsiutil |
该键的键名是raid.lsiutil,在server端测用zabbix_get测试该值发现,返回的是0和agent端执行的脚本的结果不一样。
出现这个问题,开始还是摸不到头绪的,走了很多弯路,后来经过老大的协助解决问题了,zabbix agent使用的是普通用户zabbix运行的,某些操作权限不够导致脚本执行失败,整理的排错步骤如下:
1、将zabbix agent的日志级别跳到最高4,重启zabbix agent
1 | DebugLevel=4 |
zabbix的所有日志级别如下:
1 | 0 - no debug 无日志 |
2、查看日志如下(果然有报错):
1 | sh: /xxx/xxx/zabbix/bin/raid.sh: Permission denied |
3、没有权限?用visudo给zabbix用户添加sudo权限,不需要密码就可以执行lsiutil或megacli命令
1 | zabbix xx-xx-xx-WEBxx= NOPASSWD:/usr/bin/lsiutil |
4、再次到zabbix server端用zabbix_get取值,发现还是不对,查看agent的日志发现还是有报错:
1 | sudo: sorry, you must have a tty to run sudo |
5、提示运行sudo 需要一个终端,再次visudo,让zabbix用户无需登录tty就可以执行sudo命令
1 | Defaults:zabbix !requiretty |
然后zabbix server端取值就正常,将agent端的日志级别调到默认级别、重启。
附上脚本,脚本内容如下(检测raid的磁盘数目,sudo命令是之后加上的):
1 |
|