使用github仓库内脚本文件监控rabbitmq
一、准备工作
环境:
主机名:
zabbix IP:192.168.1.2 安装zabbix_server
rabbitmq01 IP:192.168.1.13 安装zabbix_agent,zabbix_get
1、zabbix_server,zabbix_agent软件已安装,且能正常访问zabbix web界面
zabbix_agent先配置被动监控
[root@rabbitmq01 ~]# grep -v '^$' /etc/zabbix/zabbix_agentd.conf |grep -v '#'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1,192.168.1.2
ServerActive=127.0.0.1,192.168.1.2
Hostname=rabbitmq02
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameter=1
zabbix版本5.0
2、rabbitmq已搭建且能正常访问web界面
版本无所谓
3、先下载脚本ZIP至windows
下载地址:GitHub - jasonmcintosh/rabbitmq-zabbix: Zabbix RabbitMQ Configuration
二、rabbitmq添加监控用户
1、rabbitmq添加监控专用账号
添加用户zabbix,密码zabbix (记住账户密码后边会用)
[root@rabbitmq01 ~]#rabbitmqctl add_user zabbix zabbix
[root@rabbitmq01 ~]#rabbitmqctl set_user_tags zabbix monitoring
配置权限
[root@rabbitmq01 ~]#rabbitmqctl set_permissions -p / zabbix ".*" ".*" ".*"
[root@rabbitmq01 ~]# rabbitmqctl list_user_permissions zabbix
Listing permissions for user "zabbix" ...
/ .* .* .*
...done.
2、把scripts文件放在目录/etc/zabbix/scripts/rabbitmq
如果agent安装目为/usr/local/etc/请后续更换所有的/etc为/usr/local/etc
[root@rabbitmq01 ~]# unzip rabbitmq-zabbix-master
不能解压请安装unzip
[root@rabbitmq01 ~]# cp -r rabbitmq-zabbix-master/scripts/ /etc/zabbix/
[root@rabbitmq01 ~]# cd /etc/zabbix/scripts/rabbitmq/
[root@rabbitmq01 rabbitmq]# ll
总用量 32
-rwxr-xr-x 1 zabbix zabbix 13739 2月 19 18:31 api.py
-rwxr-xr-x 1 zabbix zabbix 424 2月 18 16:54 list_rabbit_nodes.sh
-rwxr-xr-x 1 zabbix zabbix 426 2月 18 16:54 list_rabbit_queues.sh
-rwxr-xr-x 1 zabbix zabbix 430 2月 18 16:54 list_rabbit_shovels.sh
-rwxr-xr-x 1 zabbix zabbix 782 2月 18 16:54 rabbitmq-status.sh
3、上传项目中 zabbix_agentd.d 目录下面的 zabbix-rabbitmq.conf 至rabbitmq服务器的zabbix_agentd 扩展配置文件目录
[root@rabbitmq01 rabbitmq-zabbix-master]# cp zabbix_agentd.d/zabbix-rabbitmq.conf /etc/zabbix/zabbix_agentd.d/
[root@rabbitmq01 rabbitmq-zabbix-master]# cd /etc/zabbix/zabbix_agentd.d/
[root@rabbitmq01 zabbix_agentd.d]# ls
zabbix-rabbitmq.conf
4、修改/etc/zabbix/scripts/rabbitmq属组属主设为zabbix,权限755
[root@rabbitmq01 rabbitmq]# pwd
/etc/zabbix/scripts/rabbitmq
[root@rabbitmq01 rabbitmq]# chown zabbix:zabbix ./*
[root@rabbitmq01 rabbitmq]# chmod 755 ./*
5、创建隐藏文件.rab.auth (rab前有个点)
[root@rabbitmq01 rabbitmq]# vim .rab.auth
USERNAME=guest
PASSWORD=guest
CONF=/etc/zabbix/zabbix_agent.conf
LOGLEVEL=INFO
LOGFILE=/var/log/zabbix/rabbitmq_zabbix.log
PORT=15672
USERNAME:rabbitmq管理界面登录用户名
PASSWORD:rabbitmq管理界面登录密码
也就是这个界面登录名,密码
CONF:指定 zabbix_agentd 配置文件路径
LOGLEVEL:指定日志级别,如果监控调试OK,可将此值改为INFO
LOGFILE:指定日志文件路径
PORT:指定rabbitmq管理访问端口
6、修改.rab.auth权限755,属组属主zabbix
[root@rabbitmq01 rabbitmq]# chown zabbix:zabbix .rab.auth
[root@rabbitmq01 rabbitmq]# chown 755 .rab.auth
7、修改api.py中的中的参数
查看/etczabbix/zabbix_agentd.conf是否一致(若前面路径都是/etc,一致不需要该,若是/usr/local/etc请修改)
查看/var/log/zabbix/rabbitmq_zabbix.log是否一致 (若前面路径都是/etc,一致不需要该,若是/usr/local/etc请修改)
修改 RabbitMQAPI 类中的 __init__ 方法中
user_name:rabbitmq管理界面登录用户名
password:rabbitmq管理界面登录密码
host_name:rabbitmq管理界面地址,也就是现在这台主机地址
修改zabbix_sender地址:
使用porxy方式的话,修改为porxy的ip;直连zabbix server的话,修改为zabbix server的ip
8、重启zabbix_agent
[root@rabbitmq01 zabbix]# systemctl restart zabbix-agent.service
[root@rabbitmq01 ~]# netstat -ntulp |grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3351/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 3351/zabbix_agentd
若未重启成功
查看有没有rabbitmq_zabbix.log,且属主属组为zabbix
[root@rabbitmq01 rabbitmq]# ls /var/log/zabbix/
rabbitmq_zabbix.log zabbix_agentd.log zabbix_agentd.log-20230219
[root@rabbitmq01 rabbitmq]# ll /var/log/zabbix/rabbitmq_zabbix.log
-rw-rw-r-- 1 zabbix zabbix 122237 2月 19 21:45 /var/log/zabbix/rabbitmq_zabbix.log
若没有rabbitmq_zabbix.log:创建一个并修改属组属主
若权限不一致,修改权限
[root@rabbitmq01 rabbitmq]# touch /var/log/zabbix/rabbitmq_zabbix.log
[root@rabbitmq01 rabbitmq]chmod 755 /var/log/zabbix/rabbitmq_zabbix.log
再次重启
验证:
[root@rabbitmq01 rabbitmq]# ./list_rabbit_nodes.sh
{"data": [{"{#NODETYPE}": "disc", "{#NODENAME}": "rabbitmq01"}, {"{#NODETYPE}": "ram", "{#NODENAME}": "rabbitmq02"}, {"{#NODETYPE}": "ram", "{#NODENAME}": "rabbitmq03"}]}
[root@rabbitmq01 rabbitmq]# ./list_rabbit_queues.sh
{"data": [{"{#VHOSTNAME}": "/", "{#QUEUENAME}": "aliveness-test", "{#NODENAME}": "rabbit@rabbitmq01"}, {"{#VHOSTNAME}": "/", "{#QUEUENAME}": "jumper", "{#NODENAME}": "rabbit@rabbitmq01"}, {"{#VHOSTNAME}": "/", "{#QUEUENAME}": "test", "{#NODENAME}": "rabbit@rabbitmq03"}]}
[root@rabbitmq01 rabbitmq]# zabbix_get -s 127.0.0.1 -p 10050 -k rabbitmq[server,disk_free]
13051510784
[root@rabbitmq01 rabbitmq]# zabbix_get -s 127.0.0.1 -p 10050 -k rabbitmq[queues]
0
9、然后在zabbix 的webr管理页面导入模板rabbitmq.template.xml
因为这些模板是基于主动监控模式的,所以下面要配置主动监控
10、配置主动监控
[root@rabbitmq01 rabbitmq]# cd /etc/zabbix/
[root@rabbitmq01 zabbix]# vim zabbix_agentd.conf
Server= 一栏注释掉
ServerActive= 填写zabbix_server地址
StartAgents=0 不接受被动检查,也不开启任何端口
RefreshActiveChecks=120
最终结果为
[root@rabbitmq01 zabbix]# grep -v '^$' /etc/zabbix/zabbix_agentd.conf |grep -v '#'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=0
ServerActive=192.168.1.2
Hostname=rabbitmq01
RefreshActiveChecks=120
Timeout=10
AllowRoot=1
Include=/etc/zabbix/zabb
重启服务
[root@rabbitmq01 zabbix]# systemctl restart zabbix-agent.service
[root@rabbitmq01 ~]# netstat -ntulp |grep 10050
看不到10050端口,看不到才属于正常,因为 StartAgents=0# 不接受被动检查,也不开启任何端口
11、zabbix web界面配置主动监控