使用Windows批处理脚本监测RabbitMQ队列消息堆积
本文最后更新于 2024-08-20,文章内容可能已经过时。
@echo off
setlocal enabledelayedexpansion
:loop
:: 设置 RabbitMQ API URL 和认证信息
set "RABBITMQ_API_URL=http://192.168.110.161:15672/api/queues/%%2f/test_queue"
set "USERNAME=user"
set "PASSWORD=password"
:: 设置企业微信机器人 webhook URL
set "WECHAT_WEBHOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=81df5018-c175-4f94-a805-xxxxxxxxxxxx"
:: 设置消息数量阈值和通知用户
set "THRESHOLD=10"
set "MENTIONED_LIST=[\"@all\"]" :: 提及所有人
set "MENTIONED_MOBILE_LIST=[\"18326923280\"]" :: 使用 JSON 格式的手机号列表
:: 查询队列信息并保存到文件
curl -s -u %USERNAME%:%PASSWORD% %RABBITMQ_API_URL% > queue_info.json
:: 从 JSON 文件中提取消息数量
for /f "tokens=*" %%a in ('powershell -Command "$json = Get-Content -Path queue_info.json -Raw | ConvertFrom-Json; $json.messages"') do set "messages=%%a"
:: 检查消息数量是否超过阈值
if !messages! gtr %THRESHOLD% (
:: 构造企业微信机器人消息内容
set "MESSAGE_CONTENT={\"msgtype\":\"text\",\"text\":{\"content\":\"Queue has exceeded the threshold. Current messages: !messages!.\" ,\"mentioned_mobile_list\":%MENTIONED_MOBILE_LIST%}}"
:: 发送企业微信机器人通知
curl -s -H "Content-Type: application/json" -d "!MESSAGE_CONTENT!" %WECHAT_WEBHOOK_URL%
:: 输出通知已发送的消息(可选)
echo Notification sent to WeChat workbench. %date% %time%
) else (
:: 输出消息数量未超过阈值的消息(可选)
echo Queue has !messages! messages. Below threshold. %date% %time%
)
:: 清理临时文件(如果需要的话)
del queue_info.json
timeout /t 300
goto loop
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Linux运维笔记
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果