Skip to content

Commit 80a104f

Browse files
committed
新增Qmsg酱报警
1 parent b527900 commit 80a104f

4 files changed

Lines changed: 74 additions & 0 deletions

File tree

docs/source_code/报警及监控.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,20 @@ EMAIL_RECEIVER = "" # 收件人 支持列表,可指定多个
8686

8787
4. 将本邮箱账号添加到白名单中
8888

89+
## Qmsg酱报警
90+
91+
Qmsg酱是一个QQ消息推送机器人,用来通知自己消息的免费服务。
92+
93+
可以参考文档:https://qmsg.zendee.cn/docs/api/
94+
95+
```python
96+
# QMSG报警
97+
QMSG_WARNING_URL = "" # qmsg机器人api
98+
QMSG_WARNING_QQ = "" # 指定要接收消息的QQ号或者QQ群。多个以英文逗号分割,例如:12345,12346,支持列表,可指定多人
99+
QMSG_WARNING_BOT = "" # 机器人的QQ号
100+
```
101+
102+
89103
## 报警间隔及报警级别
90104

91105
框架会对相同的报警进行过滤,防止刷屏,默认的报警时间间隔为1小时,可通过以下配置修改:

feapder/setting.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,10 @@
182182
WECHAT_WARNING_URL = "" # 企业微信机器人api
183183
WECHAT_WARNING_PHONE = "" # 报警人 将会在群内@此人, 支持列表,可指定多人
184184
WECHAT_WARNING_ALL = False # 是否提示所有人, 默认为False
185+
# QMSG报警
186+
QMSG_WARNING_URL = "" # qmsg机器人api
187+
QMSG_WARNING_QQ = "" # 指定要接收消息的QQ号或者QQ群。多个以英文逗号分割,例如:12345,12346,支持列表,可指定多人
188+
QMSG_WARNING_BOT = "" # 机器人的QQ号
185189
# 时间间隔
186190
WARNING_INTERVAL = 3600 # 相同报警的报警时间间隔,防止刷屏; 0表示不去重
187191
WARNING_LEVEL = "DEBUG" # 报警级别, DEBUG / INFO / ERROR

feapder/templates/project_template/setting.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,10 @@
164164
# WECHAT_WARNING_URL = "" # 企业微信机器人api
165165
# WECHAT_WARNING_PHONE = "" # 报警人 将会在群内@此人, 支持列表,可指定多人
166166
# WECHAT_WARNING_ALL = False # 是否提示所有人, 默认为False
167+
# # QMSG报警
168+
# QMSG_WARNING_URL = "" # qmsg机器人api
169+
# QMSG_WARNING_QQ = "" # 指定要接收消息的QQ号或者QQ群。多个以英文逗号分割,例如:12345,12346,支持列表,可指定多人
170+
# QMSG_WARNING_BOT = "" # 机器人的QQ号
167171
# # 时间间隔
168172
# WARNING_INTERVAL = 3600 # 相同报警的报警时间间隔,防止刷屏; 0表示不去重
169173
# WARNING_LEVEL = "DEBUG" # 报警级别, DEBUG / INFO / ERROR

feapder/utils/tools.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2684,6 +2684,55 @@ def feishu_warning(message, message_prefix=None, rate_limit=None, url=None, user
26842684
return False
26852685

26862686

2687+
def qmsg_warning(
2688+
message,
2689+
message_prefix=None,
2690+
rate_limit=None,
2691+
url=None,
2692+
user_qq=None,
2693+
bot_qq=None
2694+
):
2695+
"""qmsg报警"""
2696+
2697+
# 为了加载最新的配置
2698+
rate_limit = rate_limit if rate_limit is not None else setting.WARNING_INTERVAL
2699+
url = url or setting.QMSG_WARNING_URL
2700+
user_qq = user_qq or setting.QMSG_WARNING_QQ
2701+
bot_qq = bot_qq or setting.QMSG_WARNING_BOT
2702+
2703+
if isinstance(user_qq, list):
2704+
user_qq = ','.join(map(str, user_qq))
2705+
2706+
if not all([url, message]):
2707+
return
2708+
2709+
if reach_freq_limit(rate_limit, url, user_qq, message_prefix or message):
2710+
log.info("报警时间间隔过短,此次报警忽略。 内容 {}".format(message))
2711+
return
2712+
2713+
data = {
2714+
"msg": message,
2715+
"qq": user_qq,
2716+
"bot": bot_qq,
2717+
}
2718+
2719+
headers = {"Content-Type": "application/json"}
2720+
2721+
try:
2722+
response = requests.post(
2723+
url, headers=headers, data=json.dumps(data).encode("utf8")
2724+
)
2725+
result = response.json()
2726+
response.close()
2727+
if result.get("code") == 0:
2728+
return True
2729+
else:
2730+
raise Exception(result.get("reason"))
2731+
except Exception as e:
2732+
log.error("报警发送失败。 报警内容 {}, error: {}".format(message, e))
2733+
return False
2734+
2735+
26872736
def send_msg(msg, level="DEBUG", message_prefix="", keyword="feapder报警系统\n"):
26882737
if setting.WARNING_LEVEL == "ERROR":
26892738
if level.upper() != "ERROR":
@@ -2704,6 +2753,9 @@ def send_msg(msg, level="DEBUG", message_prefix="", keyword="feapder报警系统
27042753
if setting.FEISHU_WARNING_URL:
27052754
feishu_warning(keyword + msg, message_prefix=message_prefix)
27062755

2756+
if setting.QMSG_WARNING_URL:
2757+
qmsg_warning(keyword + msg, message_prefix=message_prefix)
2758+
27072759

27082760
###################
27092761

0 commit comments

Comments
 (0)