# luck-prometheus-exporter-mq-dingtalk-alert **Repository Path**: lwhou/luck-prometheus-exporter-mq-dingtalk-alert ## Basic Information - **Project Name**: luck-prometheus-exporter-mq-dingtalk-alert - **Description**: MQ异常消息自动预警助手 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-09-19 - **Last Updated**: 2024-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: 钉钉, Python, mq, RabbitMQ ## README # luck-prometheus-exporter-mq-dingtalk-alert # 介绍 使用爬虫技术来收集RabbitMQ相关数据,发现无法消费的队列消息推送给钉钉群。 # 软件架构 ## 软件架构说明 - 项目名 - app - imgs 图片文件夹 - works - logs 日志文件夹 - LuckMq.log 日志文件 - LuckMq.db 数据库文件 - LuckMqConfig.json 配置文件 - LuckDbMysqlHelperUtils.py MySQL数据库辅助类 - LuckDbSqliteHelperUtils.py Sqlite数据库辅助类 - LuckDingtalkService.py 钉钉逻辑服务层 - LuckDingtalkUserService.py # 钉钉用户逻辑服务层 - LuckMqConstant.py 常量类 - LuckMqMain.py 启动入口 - LuckMqService.py 逻辑服务层 - LuckMqQueueService.py 队列存储服务层 - LuckMqMsgService.py 消息存储服务层 - requirements.txt 引用库管理文件 - LuckMqMain.service Linux服务制作文件 - Dockerfile # 构建镜像文件 - README.md # 说明文件 # 安装教程 ## 1 准备工作 ### 1.1 调整配置文件内容 打开LuckServerConfig.json文件,调整下面的内容 ``` { "server_port": 5001, # 服务启动端口号 "scheduler_seconds": 60, # 采集数据周期(秒) "basic_auth1": "admin", # 鉴权账号 "basic_auth2": "luckserver", # 鉴权密码 "agent_id": 804578772, # 钉钉AgentID "app_key": "dingkwmfrbsv0cencgb9", # 钉钉AppKey "app_secret": "_OVByoifueYAH0X6mAQjleWfgFhB0cfZ3v4MNgAHrfjYG-a_u4ULXbN9ujdpoVOe", # 钉钉App密钥 "dingtalk_app_key": "aee45ec2-9105-409a-ac44-2a2abc827541", # 钉钉消息推送服务AppKey "dingtalk_app_secret": "17297cae-cf7e-43d6-97bc-0487ad22c68a", # 钉钉消息推送服务App密钥 "dingtalk_url": "http://10.10.10.166:32535", # 钉钉消息推送服务地址 "dingtalk_url_basic_auth1": "admin", # 钉钉消息推送服务鉴权账号 "dingtalk_url_basic_auth2": "luckserver", # 钉钉消息推送服务鉴权密码 "dingtalk_robot_msg_type": "text", # 钉钉消息推送类型 "dingtalk_robot_secret_1": "SEC108c2176b230090e8bede00717d04e8455aabb0fe5a747eddb42b17a1d385416", # 钉钉群机器人密钥 "dingtalk_robot_access_token_1": "7144ea46a2a09b877935eda8171c1e872e7ee0990fbf45b2e18d9927a3442ade", # 钉钉群机器人Token "dingtalk_robot_secret_2": "", "dingtalk_robot_access_token_2": "", "dingtalk_robot_secret_3": "", "dingtalk_robot_access_token_3": "", "mq_rpc_api_basic_auth1": "admin", # MQ采集地址账号 "mq_rpc_api_basic_auth2": "luckserver", # MQ采集地址密码 "mq_rpc_api_1": "http://127.0.0.1:31902", # MQ采集地址 "mq_rpc_api_2": "", "mq_rpc_api_3": "", "mq_rpc_api_4": "", "mq_rpc_api_5": "", "mq_rpc_api_6": "", "mq_rpc_api_7": "", "mq_rpc_api_8": "", "mq_rpc_api_9": "", "mq_rpc_api_10": "", "mq_application_inclusions": "com.luckyun.ams/com.luckyun.bpm/com.luckyun.dydoc/com.luckyun.wms", # 包含服务前缀集合 "mq_application_exclusions": "com.luckyun.ams/com.luckyun.wms/023405250820658815,053868124024016394", # 不包含服务前缀集合 "mq_application_1": "物资子系统/com.luckyun.wmssub/023405250820658815,053868124024016394", # MQ应用翻译(服务名称/服务前缀/推送人员或所有人) "mq_application_2": "生产调度子系统/com.luckyun.tpsms/023405250820658815,053868124024016394", "mq_application_3": "乘客事物子系统/com.luckyun.pss/023405250820658815,053868124024016394", "mq_application_4": "项目管理子系统/com.luckyun.pjms/023405250820658815,053868124024016394", "mq_application_5": "成本管理子系统/com.luckyun.coms/023405250820658815,053868124024016394", "mq_application_6": "固资管理子系统/com.luckyun.ams/023405250820658815,053868124024016394", "mq_application_7": "站务子系统/com.luckyun.stms/023405250820658815,053868124024016394", "mq_application_8": "乘务子系统/com.luckyun.cdms/023405250820658815,053868124024016394", "mq_application_9": "门户子系统/com.luckyun.bls/023405250820658815,053868124024016394", "mq_application_10": "排班子系统/com.luckyun.skd/023405250820658815,053868124024016394", "mq_application_11": "348系统/com.luckyun.basic/023405250820658815,053868124024016394", "mq_application_12": "348系统/com.luckyun.craft/023405250820658815,053868124024016394", "mq_application_13": "348系统/com.luckyun.manage/023405250820658815,053868124024016394", "mq_application_14": "348系统/com.luckyun.outsourcing/023405250820658815,053868124024016394", "mq_application_15": "348系统/com.luckyun.pdplan/023405250820658815,053868124024016394", "mq_application_16": "348系统/com.luckyun.quality/023405250820658815,053868124024016394", "mq_application_17": "348系统/com.luckyun.rotables/023405250820658815,053868124024016394", "mq_application_18": "348系统/com.luckyun.taskpool/023405250820658815,053868124024016394", "mq_application_19": "综报子系统/com.luckyun.ocras/023405250820658815,053868124024016394", "mq_application_20": "待办服务/com.luckyun.todo/023405250820658815,053868124024016394", "mq_application_21": "安全子系统/com.luckyun.tsms/023405250820658815,053868124024016394", "mq_application_22": "新线子系统/com.luckyun.tnrms/023405250820658815,053868124024016394", "mq_application_23": "人员子系统/com.luckyun.pnms/023405250820658815,053868124024016394", "mq_application_24": "施工子系统/com.luckyun.cims/023405250820658815,053868124024016394", "mq_application_25": "数据中台/com.luckyun.dydoc.interfaceplat/all", "mq_application_26": "", "mq_application_27": "", "mq_application_28": "", "mq_application_29": "", "mq_application_30": "", "mq_application_31": "", "mq_application_32": "", "mq_application_33": "", "mq_application_34": "", "mq_application_35": "", "mq_application_36": "", "mq_application_37": "", "mq_application_38": "", "mq_application_39": "", "mq_application_40": "", "mq_application_41": "", "mq_application_42": "", "mq_application_43": "", "mq_application_44": "", "mq_application_45": "", "mq_application_46": "", "mq_application_47": "", "mq_application_48": "", "mq_application_49": "", "mq_application_50": "" } ``` ### 1.2 复制代码到服务器 示例目录:```/home/luckyun/luck-prometheus-exporter-mq-dingtalk-alert``` ## 2 python3环境准备 ### 2.1 检测是否已安装python3 ```python3 --version``` python3安装成功,下面的步骤可忽略 ### 2.2 安装python3 - 安装Python的最新版本 ```sudo yum install python3``` - 安装完成之后,可以使用命令检测安装是否成功 ```python3 --version``` ### 2.3 设置python软链接 这里一般不需要设置,可以忽略。 >备注:如果需要设置python软链接,可按照下面的步骤操作 - 先删除默认的Python软链接: ```sudo rm -rf /usr/bin/python``` - 然后创建一个新的软链接指向需要的Python版本 ``` sudo ln -s /usr/bin/python3 /usr/bin/python sudo ln -s /usr/bin/pip3 /usr/bin/pip ``` - 如果想还原回原python2.7,不还原,下面的命令就不要执行 ``` sudo rm -rf /usr/bin/python sudo ln -s /usr/bin/ptyhon2.7 /usr/bin/python ``` ## 3 安装依赖 ### 3.1 使用命令安装依赖 ```pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple``` ### 3.2 安装不成功的,可以单独安装 psutil可能会安装不成功,这个时候不要着急,按照下面的步骤来操作 - 方案一 ``` 将psutil-5.9.6.tar.gz上传到对应的文件中 解压:tar zxvf psutil-5.9.6.tar.gz 进入目录:cd psutil-5.9.6 安装插件:yum -y install python-devel (如果提示缺少python.h头文件,执行此命令。) 安装psutil:python3 setup.py install ``` - 方案二(推荐此方案) - Ubuntu / Debian ``` sudo apt-get install gcc python3-dev pip install --no-binary :all: psutil ``` - RedHat / CentOS ``` sudo yum install gcc python3-devel pip install --no-binary :all: psutil ``` - Alpine ``` sudo apk add gcc python3-dev pip install --no-binary :all: psutil ``` ## 4 制作服务启动 ### 4.1 复制service文件至system目录下 将服务文件`LuckMqMain.service`存放到下面的目录 `/etc/systemd/system` ### 4.2 服务文件变动,需要重新加载systemd配置,没有就不执行 ```sudo systemctl daemon-reload``` ### 4.3 启动服务 ```sudo systemctl start LuckMqMain.service``` ### 4.4 检查服务的状态 ```sudo systemctl status LuckMqMain.service``` ### 4.5 设置自动启动服务 ```sudo systemctl enable LuckMqMain.service``` ### 4.6 停止服务 ```sudo systemctl stop LuckMqMain.service``` ### 4.7 重启服务 ```sudo systemctl restart LuckMqMain.service``` ## 5 开放端口号 按照下面的操作步骤执行命令: ``` firewall-cmd --permanent --add-port=5001/tcp firewall-cmd --reload ``` # 使用说明 1. 服务启动成功 2. 浏览器输入 http://10.10.10.167:5001/, 验证服务部署状态 >注意:10.10.10.167要根据实际情况而定。 ``` { "code": 1, "data": [ "/", "/check", "/queue/createTable", "/queue/deleteTable", "/queue/dropTable", "/queue/readTableData", "/msg/createTable", "/msg/deleteTable", "/msg/dropTable", "/msg/readTableData" ], "msg": "MQ监控服务部署成功" } ``` # 疑难杂症 ## 问题一 ## 问题二 # 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request # 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)