Django自研告警平台-让告警排好队

11 篇文章 0 订阅
8 篇文章 2 订阅

Django简介

Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。

Django环境安装

操作系统要求

Centos7.5以上

1、安装python3和pip3

版本信息:Python-3.8.0a1和pip-20.0.2

2、安装Django

版本信息:Django-3.0.3(注:离线环境可能需要sqlparse 0.3.0、pytz 2019.3、asgiref 3.2.3等安装包,下载地址:https://pypi.org/search)

3、Sqlite3升级

版本信息:sqlite-autoconf-3280000

4、安装psycopg2

版本信息:psycopg2-2.8.4(注:确认centos已安装postgresql-devel)

5、安装uwsgi

版本信息:uwsgi-2.0.18

对接alertmanager

alertmanager配置:
alertmanager.yml

global:
  resolve_timeout: 5m

route:
  group_by: ['alertname','severity','hosttype']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'webhook'
receivers:
- name: 'webhook'
  webhook_configs:
  - url: 'http://localhost:9999/receivefromprometheus/'

Django接收告警信息功能模块:

receivefromprometheus.py

# -*- coding: utf-8 -*-
from PgModel.models import Warn_Info,Warn_List #引用定义好的表对象
from django.http import HttpResponse
from django.shortcuts import render
import datetime
import pytz
import logging
import json
from . import selectpg
from django.core import serializers
from . import modelcontrol
models = [Warn_Info,Warn_List]
def receivefromprometheus(request):
    postBody=request.body #接收alertmanager消息体,一般为json格式
    data= json.loads(postBody) #将json格式消息体转换为字典
    f = open('/opt/test.txt', 'a+') #记录消息体,方便问题跟踪,及确认解析方法
    current_time=datetime.datetime.now()
    f.write(datetime.datetime.strftime(current_time,'%Y-%m-%d %H:%M:%S')+'\n')
    for var in data.get("alerts"): #结构化alertmanager消息体
        warn_status=var['status']
        warn_id=var['annotations']['warnid']
        warn_id_foreign=Warn_Info.objects.get(id=warn_id)
        current_value=var['annotations']['value']
        f.write(warn_status+'\n')           
        warnlist=Warn_List.objects.filter(warn_id=warn_id,warn_status='firing')
        if warn_status=='firing' and len(warnlist)==0:  #如果消息体为预警状态,判断之前未存在未恢复同类告警,则插入告警信息
            warnlistadd=Warn_List(current_value=current_value,warn_id=warn_id_foreign,warn_status=warn_status)
            warnlistadd.save()
        elif warn_status=='resolved' and len(warnlist)>0: #如果消息体为恢复状态,判断之前存在未恢复同类告警,则更新告警状态
            warnlist.update(warn_status='resolved',end_time=current_time)
        elif warn_status=='firing' and len(warnlist)>0: #如果消息体为恢复状态,判断之前存在未恢复同类告警,则更新告警当前值
            warnlist.update(current_value=current_value,end_time=current_time)
    f.close()
    return HttpResponse('success')

效果展示

左侧目录树包含四类告警类型,子菜单为监控主机IP,主机下挂对应的告警指标,如CPU、内存等。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django语音告警的实现可以基于以下两个项目进行结合: 1. 项目提供了Django框架下的告警实时Web推送和微信报警功能。该项目使用了Django 1.9.1和Python 2.7版本,并且依赖于dwebsocket和mongoDB作为数据库。它支持所有监控平台,只需要按照要求将告警信息发送到该平台即可。可以通过该项目的告警收敛功能对告警信息进行汇总和处理。此外,该项目还支持将报警发送至企业微信。 2. 项目提供了中文截词和语音合成的服务。该项目使用了Python的库jieba进行中文分词,并借助The Voice RSS解决了国内TTS服务稀少和国外TTS服务访问慢的问题。可以利用该项目的语音合成功能,将告警信息转化为语音,并进行播放。 综合以上两个项目,可以使用Django框架搭建一个支持语音告警的系统。首先,利用项目搭建一个告警平台,接收并处理告警信息。然后,根据需要将告警信息进行中文截词处理,可以使用jieba库。最后,利用The Voice RSS提供的语音合成服务,将截词后的告警信息转化为语音进行播放。 请注意,以上只是一个概括性的参考,具体的实现方式还需要根据项目需求和技术细节进行具体设计和开发。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python语音分割_Python 牺牲性能以提升程序员的工作效率](https://blog.csdn.net/weixin_39772388/article/details/109990401)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值