Пример #1
0
def notify_by_email(event, obj):
    spug_key, u_ids = _parse_args(obj.grp)
    users = set(
        x.email
        for x in Contact.objects.filter(id__in=u_ids, email__isnull=False))
    if users:
        mail_service = json.loads(AppSetting.get_default('mail_service', '{}'))
        body = [
            '告警名称:' + obj.name, '告警时间:' + human_datetime(), '告警描述:' + obj.out
        ]
        if event == '2':
            body.append('故障持续:' + obj.duration)
        if mail_service.get('server'):
            event_map = {'1': '告警发生', '2': '告警恢复'}
            subject = f'{event_map[event]}-{obj.name}'
            mail = Mail(**mail_service)
            mail.send_text_mail(users, subject,
                                '\r\n'.join(body) + '\r\n\r\n自动发送,请勿回复。')
        elif spug_key:
            data = {
                'token': spug_key,
                'event': event,
                'subject': obj.name,
                'body': '\r\n'.join(body),
                'users': list(users)
            }
            requests.post(f'{spug_server}/apis/notify/mail/', json=data)
        else:
            Notify.make_notify(notify_source, '1', '发送报警信息失败',
                               '未配置报警服务调用凭据,请在系统管理/系统设置/报警服务设置中配置。')
    else:
        Notify.make_notify(notify_source, '1', '发送报警信息失败',
                           '未找到可用的通知对象,请确保设置了相关报警联系人的邮件地址。')
Пример #2
0
 def monitor_by_email(self, users):
     mail_service = AppSetting.get_default('mail_service', {})
     body = [
         f'告警名称:{self.title}',
         f'告警对象:{self.target}',
         f'{"告警" if self.event == "1" else "恢复"}时间:{human_datetime()}',
         f'告警描述:{self.message}'
     ]
     if self.event == '2':
         body.append('故障持续:' + self.duration)
     if mail_service.get('server'):
         event_map = {'1': '监控告警通知', '2': '告警恢复通知'}
         subject = f'{event_map[self.event]}-{self.title}'
         mail = Mail(**mail_service)
         mail.send_text_mail(users, subject, '\r\n'.join(body) + '\r\n\r\n自动发送,请勿回复。')
     elif self.spug_key:
         data = {
             'token': self.spug_key,
             'event': self.event,
             'subject': self.title,
             'body': '\r\n'.join(body),
             'users': list(users)
         }
         self.handle_request(f'{spug_server}/apis/notify/mail/', data, 'spug')
     else:
         Notify.make_monitor_notify('发送报警信息失败', '未配置报警服务调用凭据,请在系统管理/系统设置/报警服务设置中配置。')
Пример #3
0
def notify_by_email(event, subject, grp):
    spug_key, u_ids = _parse_args(grp)
    users = set(
        x.email
        for x in Contact.objects.filter(id__in=u_ids, email__isnull=False))
    if users:
        mail_service = json.loads(AppSetting.get_default('mail_service', '{}'))
        if mail_service.get('server'):
            event_map = {'1': '告警', '2': '恢复'}
            subject = f'{event_map[event]}-{subject}'
            mail = Mail(**mail_service)
            mail.send_text_mail(users, subject, f'{subject}\r\n\r\n自动发送,请勿回复。')
        elif spug_key:
            data = {
                'token': spug_key,
                'event': event,
                'subject': subject,
                'users': list(users)
            }
            requests.post(f'{spug_server}/apis/notify/mail/', json=data)
        else:
            Notify.make_notify(notify_source, '1', '发送报警信息失败',
                               '未配置报警服务调用凭据,请在系统管理/系统设置/报警服务设置中配置。')
    else:
        Notify.make_notify(notify_source, '1', '发送报警信息失败',
                           '未找到可用的通知对象,请确保设置了相关报警联系人的邮件地址。')
Пример #4
0
def email_test(request):
    form, error = JsonParser(
        Argument('server', help='请输入邮件服务地址'),
        Argument('port', type=int, help='请输入邮件服务端口号'),
        Argument('username', help='请输入邮箱账号'),
        Argument('password', help='请输入密码/授权码'),
    ).parse(request.body)
    if error is None:
        try:
            mail = Mail(**form)
            server = mail.get_server()
            server.quit()
            return json_response()
        except Exception as e:
            error = f'{e}'
    return json_response(error=error)
Пример #5
0
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))
    if users:
        mail_service = json.loads(AppSetting.get_default('mail_service', '{}'))
        if mail_service.get('server'):
            event_map = {'1': '告警', '2': '恢复'}
            subject = f'{event_map[event]}-{subject}'
            mail = Mail(**mail_service)
            mail.send_text_mail(users, subject, f'{subject}\r\n\r\n自动发送,请勿回复。')
        else:
            data = {
                'token': spug_key,
                'event': event,
                'subject': subject,
                'users': list(users)
            }
            requests.post(f'{spug_server}/apis/notify/mail/', json=data)