zabbix5监控RabbitMQ集群(二)

文章详细介绍了如何在RabbitMQ服务器上配置ZabbixAgent,使用GitHub上的脚本来实现对RabbitMQ的监控。步骤包括添加监控用户,放置和配置脚本,修改ZabbixAgent配置,以及在ZabbixWeb界面导入模板并启用主动监控。
摘要由CSDN通过智能技术生成

使用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界面配置主动监控

 

 

 

 

为了保证 RabbitMQ 集群的高可用性,可以采取以下措施: 1. 集群节点的数量:建议至少使用 3 个 RabbitMQ 节点组成集群,这样即使一个节点崩溃,其他节点仍然可以继续工作,并且可以通过选举机制选举新的主节点。 2. 消息持久化:启用消息持久化机制,确保消息在写入磁盘或其他持久化存储介质时不会丢失。可以使用 RabbitMQ 的内置的消息持久化机制或者使用外部存储(如分布式文件系统)来实现消息的持久化。 3. 负载均衡:使用负载均衡器(如 HAProxy、Nginx 等)将请求均衡分发到不同的 RabbitMQ 节点上,以确保所有节点的负载均衡,并且在某个节点故障时自动切换到其他节点。 4. 数据备份和恢复:定期备份 RabbitMQ 的数据,以便在节点故障或数据丢失时能够快速恢复数据。可以使用 RabbitMQ 的内置备份和恢复机制或者使用外部工具(如 rsync、scp 等)来实现数据备份和恢复。 5. 监控和告警:使用监控工具(如 Nagios、Zabbix 等)来监控 RabbitMQ 集群的状态和性能指标,并设置告警规则,及时发现和解决问题。 6. 隔离和限流:对于不同的应用程序或用户,可以使用不同的虚拟主机(vhost)进行隔离,并设置合理的队列限制和消费者限制,以防止其中一个应用程序或用户的异常行为影响整个 RabbitMQ 集群的性能和可用性。 通过以上措施,可以提高 RabbitMQ 集群的可用性和稳定性,确保消息系统的正常运行和数据安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值