被监控客户端的操作系统 cat /etc/issue,ubuntu 14.04.3 server
zabbix-agent --version v2.2.2
zabbix-server --version v4.0.7
本篇文章主要讲的是自定义监控项
使用有sudo权限的用户执行下列操作
第一步: cat /etc/zabbix/scripts/rabbitmq.sh
#! /bin/bash
passwd=" * " # 此处为sudo密码 ,如果是root用户执行请忽略
echo "$passwd" | sudo -S rabbitmqctl list_queues -p / | sed 1d | sed -n '/'$1'/p' | awk -F ' ' '{print $2}'
这个脚本的作用就是输出rabbitmq指定虚拟主机的下面的队列数
后面考虑安全问题,服务器密码不应该暴露在服务器上.决定使用sudo 解决这个问题
让普通用户执行rabbitmqctl 这个命令的时候免密,其他命令需要密码.经过测试
在sudo visudo 也就是 /etc/sudoers添加下面两句.(我是把 原来的%sudo ALL=(ALL:ALL) ALL 删除后再后面添加这两句的)
wang ALL=(ALL) ALL
wang ALL=(ALL) NOPASSWD:/usr/sbin/rabbitmqctl
建议root用户禁用的服务器先解锁再给root用户设置一个密码
以免配置文件写错导致普通用户没有sudo权限,又登录不了root用户.那么只有重启服务器进入单用户模式修改
/etc/sudoers 文件了. 所以最终的脚本内容是
cat scripts/rabbitmq.sh
#!/bin/bash
sudo rabbitmqctl list_queues -p /test | sed 1d | sed -n '/'$1'/p' | awk -F ' ' '{print $2}'
第二步:配置客户端配置文件
UnsafeUserParameters=1 这个由原来的0改为1 表示允许自定义监控项
AllowRoot=1 允许agent以root用户执行
自定义监控项可以在/etc/zabbix/zabbix_agented.conf 添加也可以在/etc/zabbix/zabbix_agentd.conf.d/下面新建 conf文件 (前提是配置文件有Include=/etc/zabbix/zabbix_agentd.conf.d/),我在配置文件直接加的 每个消息队列一个key值,(如果key值过多不适合这个方法,请自己动脑子写脚本。我监控的虚拟主机下14个消息队列。下面是一个例子)
UserParameter=$key值,sh /etc/zabbix/scripts/rabbitmq.sh $1
$1为sudo rabbitmqctl list_queues -p /* | sed 1d | sed -n '/'$1'/p' | awk -F ' ' '{print $1}' 输出的消息队列名称
重启下zabbix_agent服务 sudo service zabbix_agent restart
可以使用zabbix_get 测试下(我的系统没有这个命令就没测试了)
第三步:登录zabbix网页端 可以先创建一个rabbitmq 主机组,然后将服务器加入该主机组中.
创建模板 然后创建监控项目,然后创建触发器(分为告警,一般严重,严重)
参考文档:
https://blog.csdn.net/baidu_38432732/article/details/90756509 参考文档
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。