From 3f5e8c0dd925c6cbdf0ffb24680cc3f5d75ec09e Mon Sep 17 00:00:00 2001 From: vapao Date: Thu, 16 Jan 2020 17:24:52 +0800 Subject: [PATCH] =?UTF-8?q?A=20=E6=B7=BB=E5=8A=A0=E9=92=89=E9=92=89?= =?UTF-8?q?=E5=91=8A=E8=AD=A6=E9=80=9A=E7=9F=A5=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spug_api/apps/monitor/scheduler.py | 2 ++ spug_api/libs/spug.py | 33 ++++++++++++++++++++++++------ spug_web/src/pages/monitor/Form.js | 2 +- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/spug_api/apps/monitor/scheduler.py b/spug_api/apps/monitor/scheduler.py index 6f0f470..e09b416 100644 --- a/spug_api/apps/monitor/scheduler.py +++ b/spug_api/apps/monitor/scheduler.py @@ -42,6 +42,8 @@ class Scheduler: for mode in json.loads(obj.notify_mode): if mode == '1': spug.notify_by_wx(event, obj.name, grp) + elif mode == '3': + spug.notify_by_dd(event, obj.name, grp) elif mode == '4': spug.notify_by_email(event, obj.name, grp) diff --git a/spug_api/libs/spug.py b/spug_api/libs/spug.py index db985eb..148a2c9 100644 --- a/spug_api/libs/spug.py +++ b/spug_api/libs/spug.py @@ -5,6 +5,7 @@ from apps.alarm.models import Group, Contact from apps.setting.utils import AppSetting from apps.notify.models import Notify from libs.mail import Mail +from libs.utils import human_datetime import requests import json @@ -12,12 +13,12 @@ spug_server = 'http://spug-wx.qbangmang.com' notify_source = 'info-circle' -def _parse_args(n_grp): +def _parse_args(grp): spug_key = AppSetting.get_default('spug_key') if not spug_key: Notify.make_notify(notify_source, '1', '发送报警信息失败', '未配置报警服务调用凭据,请在系统管理/系统设置/报警服务设置中配置。') return None, None - return spug_key, sum([json.loads(x.contacts) for x in Group.objects.filter(id__in=n_grp)], []) + return spug_key, sum([json.loads(x.contacts) for x in Group.objects.filter(id__in=grp)], []) def notify_by_wx(event, subject, n_grp): @@ -35,8 +36,8 @@ def notify_by_wx(event, subject, n_grp): requests.post(f'{spug_server}/apis/notify/wx/', json=data) -def notify_by_email(event, subject, n_grp): - spug_key, u_ids = _parse_args(n_grp) +def notify_by_email(event, subject, grp): + spug_key, u_ids = _parse_args(grp) if u_ids is None: return users = set(x.email for x in Contact.objects.filter(id__in=u_ids, email__isnull=False)) @@ -57,5 +58,25 @@ def notify_by_email(event, subject, n_grp): requests.post(f'{spug_server}/apis/notify/mail/', json=data) -def notify_by_sms(): - pass +def notify_by_dd(event, subject, grp): + spug_key, u_ids = _parse_args(grp) + if u_ids is None: + return + users = set(x.ding for x in Contact.objects.filter(id__in=u_ids, email__isnull=False)) + if users: + texts = [ + '## %s ## ' % '监控告警通知' if event == '1' else '告警恢复通知', + f'**告警名称:** {subject} ', + f'**告警时间:** {human_datetime()} ', + '**告警描述:** %s ' % '请在运维平台监控中心查看详情' if event == '1' else '告警已恢复', + '> ###### 来自 Spug运维平台' + ] + data = { + 'msgtype': 'markdown', + 'markdown': { + 'title': '监控告警通知', + 'text': '\n\n'.join(texts) + } + } + for url in users: + requests.post(url, json=data) diff --git a/spug_web/src/pages/monitor/Form.js b/spug_web/src/pages/monitor/Form.js index 2c3895a..05a4d17 100644 --- a/spug_web/src/pages/monitor/Form.js +++ b/spug_web/src/pages/monitor/Form.js @@ -28,7 +28,7 @@ class ComForm extends React.Component { modeOptions: [ {label: '微信', 'value': '1'}, {label: '短信', 'value': '2', disabled: true}, - {label: '钉钉', 'value': '3', disabled: true}, + {label: '钉钉', 'value': '3'}, {label: '邮件', 'value': '4'}] } }