首页 > 其他分享 >从零开始构建报警中心:part06 报警中心功能设计01-总览

从零开始构建报警中心:part06 报警中心功能设计01-总览

时间:2023-11-15 18:31:31浏览次数:35  
标签:__ 01 String Column 报警 db project 总览 id

前几部分写的都是围绕着报警中心的一些外围功能。本篇开始描述报警中心的各个功能。

概述

报警中心需要的一些功能模块:

  • 用户管理:用户信息,登录接入,权限等
  • 报警记录:记录报警的各项信息
  • 通知规则:配置报警通知规则
  • 计划任务:设定计划任务,根据通知规则进行通知行为的触发
  • 主机信息:记录报警主机信息,从CMDB中按需同步
  • 项目(分组)信息:记录项目(分组)信息,从CMDB中按需同步
  • 数据统计:各个维度统计记录报警频率数据等


数据库设计

从概述中可梳理出一些需要处理的数据:

  • 用户 accounts
  • 报警记录 events
  • 主机 hosts
  • 项目 projects
  • 规则 rules

使用Flask-SQLAlchemy

from db import db


class Base(db.Model):
    """基类"""
    # 作为父类被继承,不会被创建成表(抽象)
    __abstract__ = True
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)

    def save(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()

    def update(self):
        db.session.commit()


class Account(Base):
    """

    """
    __tablename__ = "accounts"
    account_name = db.Column(db.String(20))  # name
    account_nickname = db.Column(db.String(20))
    dingding_id = db.Column(db.String(50))  # dingding id
    mobile = db.Column(db.String(15))  # mobile phone
    account_dept = db.Column(db.String(50))
    account_project = db.relationship('Account_Project', backref='account_project', lazy='dynamic'')


class Event(Base):
    """

    """
    __tablename__ = "events"
    start_time = db.Column(db.DateTime)
    end_time = db.Column(db.DateTime)
    info = db.Column(db.String(600))
    status = db.Column(db.String(10))
    event_id = db.Column(db.Integer)  # 操作id,用秒的时间戳


class Project(Base):
    """

    """
    __tablename__ = "projects"
    project_name = db.Column(db.String(10))
    project_webhook = db.Column(db.String(150))
    host = db.Column(db.Integer, db.ForeignKey('hosts.id'))
    account_project = db.relationship('Account_Project', backref='account_project', lazy='dynamic'')


class Account_Project(Base):
    """

    """
    __tablename__ = "account_project"
    account_id = db.Column(db.Integer, db.ForeignKey('accounts.id'))
    project_id = db.Column(db.Integer, db.ForeignKey('projects.id'))
    accout = db.relationship('Account', backref='accounts', lazy=True)
    project = db.relationship('Project', backref='projects', lazy=True)

class Host(Base):
    """

    """
    __tablename__ = "hosts"
    ip = db.Column(db.String(15))
    hostname = db.Column(db.String(50))
    project = db.relationship('Project', backref='projects', lazy=True)



class Rule(Base):
    """

    """
    __tablename__ = "rules"
    rule_name = db.Column(db.String(20))
    rule_content = db.Column(db.String(200))





标签:__,01,String,Column,报警,db,project,总览,id
From: https://blog.51cto.com/quietguoguo/8400400

相关文章

  • vs 2019安装QT
    vs2019安装QTvs2019安装页面QT安装页面QT下载项QT(在线安装程序):QT的OnlineInstaller(在线安装程序)是Qt官方提供的一种下载和安装Qt开发工具包的方法。与传统的离线安装程序不同,OnlineInstaller是一个小型的安装程序,它将下载和安装Qt的组件时仅下载所需的文件,而不是整......
  • SQLSERVER 2016新建订阅,连接发布服务器时报错“设置连接字符串后无法更改或读取属性 P
    被此问题困扰许久,查遍全网也没有查到合适的解决方案。特此记录,希望帮到需要的人。SQLSERVER2016新建订阅,连接发布服务器时报错“设置连接字符串后无法更改或读取属性Password。(Microsoft.SqlServer.ConnectionInfo)”===================================设置连接字符串......
  • 微服务 01.概述(1)
    1.微服务是什么是一种软件架构由很多小型项目组成大型应用三天内容:完成对黑马商城微服务的拆分来了解微服务项目前置操作1配置docker导入mysql2后端数据库配置+启动嘞设置3.前端控制台启动nginx2.单体项目和微服务的区别1.单体项目部署在一台服务器上,并发能力差......
  • task01:绪论、马尔可夫过程、动态规划
    绪论1.强化学习1.1强化学习定义强化学习(ReinforcementLearning,RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题1.2强化学习的应用游戏和机器人领域,强化......
  • 01bfs
    今天写一个最短路题边权为\(0\)或\(1\),我说这不一眼\(dij\)么?结果题解区全部写的\(O(n+m)\)的\(01bfs\)。好家伙我居然一直不知道这么个东西,花了一个小时看会了,写一下原理。实现的方法很简单,就是一个双端队列,去\(nm\)的\(deque\),我有手,可以手写。在这里讲一下正确......
  • 超音速亚原子 Java 框架来了,0.0015 秒内启动一个应用,太快了。。
    来源:juejin.cn/post/70233173515630018861、概述SpringBoot框架不用多介绍,Java程序员想必都知道。相对来说熟悉Quarkus的人可能会少一些。Quarkus首页放出的标语:超音速亚原子的Java(SupersonicSubatomicJava)。它是为OpenJDKHotSpot和GraalVM量身定制的KubernetesNative......
  • 前端小程序接口报错error:60001
    昨天发版过程中发现,测试环境好好的接口到生产就报错了,后台直接接收不到,我们请求的接口根本没有进行后台,查看报错原因如下: 通过排除原因:1.其它接口有没问题2.请求域名是否一致3.请求方式是否一致4.是否有做token限制最后查到原因:其余接口没有问题,......
  • 01 WPF-HelloWorld
    01HelloWorld简介WPF全称:WindowsPresentationFoundationWindows用户界面框架,统一的编程模型、语言和框架,做到了界面设计与后端开发分离。特点:呈现效果不受分辨率的影响基于DirectX3d技术,可以做出炫酷的界面提供UI框架,集成了矢量图形、流动文字支持、3d视觉效果和控件......
  • [DDCTF2018](╯°□°)╯︵ ┻━┻
    (╯°□°)╯︵┻━┻50pt(╯°□°)╯︵┻━┻d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e4b3b2b2e3e6b4b3e2b5b0b6b1b0e6e1e5e1b5fd首先看它的长度,有134,那就排除md5和sha1加密。可能是十六进制的字符串。直接转字符......
  • 01-安装及初始化
    01-安装及初始化安装及初始化1.程序安装下载地址本笔记针对windows系统,下同安装过程将软件安装至一合适文件夹,路径不能有中文即可安装过程中选项均使用默认项即可。使用Github通常会使用远程仓库存放代码,所以需要登陆github,注册github帐号,填写合适用户名、邮......