Skip to content

Commit 11e0302

Browse files
authored
Merge pull request Boris-code#261 from CMJNB/develop
新增Qmsg酱报警
2 parents d9dc294 + 80a104f commit 11e0302

4 files changed

Lines changed: 75 additions & 4 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: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2684,13 +2684,61 @@ def feishu_warning(message, message_prefix=None, rate_limit=None, url=None, user
26842684
return False
26852685

26862686

2687-
def send_msg(msg, level="DEBUG", message_prefix=""):
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+
2736+
def send_msg(msg, level="DEBUG", message_prefix="", keyword="feapder报警系统\n"):
26882737
if setting.WARNING_LEVEL == "ERROR":
26892738
if level.upper() != "ERROR":
26902739
return
26912740

26922741
if setting.DINGDING_WARNING_URL:
2693-
keyword = "feapder报警系统\n"
26942742
dingding_warning(keyword + msg, message_prefix=message_prefix)
26952743

26962744
if setting.EMAIL_RECEIVER:
@@ -2700,13 +2748,14 @@ def send_msg(msg, level="DEBUG", message_prefix=""):
27002748
email_warning(msg, message_prefix=message_prefix, title=title)
27012749

27022750
if setting.WECHAT_WARNING_URL:
2703-
keyword = "feapder报警系统\n"
27042751
wechat_warning(keyword + msg, message_prefix=message_prefix)
27052752

27062753
if setting.FEISHU_WARNING_URL:
2707-
keyword = "feapder报警系统\n"
27082754
feishu_warning(keyword + msg, message_prefix=message_prefix)
27092755

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

27112760
###################
27122761

0 commit comments

Comments
 (0)