日志监控告警系统

王振龙 王振龙     2022-10-13     606

关键词:

课程介绍

课程名称:

日志监控告警系统

基于的日志进行监控,监控需要一定规则,对触发监控规则的日志信息进行告警,告警的方式,是短信和邮件。

log4j---->error,info,debug 应用程序程序的日志  error级别 TimeOutException 角标越界IndexXXXException ......Error

 

com.alibaba.jstorm.daemon.worker.WorkerData]-[INFO] Current worker taskList:[1, 2, 3, 4, 5, 6, 7]

String.contains.(" taskList ")-------------->当订单量触发一千万时,告警通知,让大家庆祝下。

OrdertotalNum1000

 

 

 

课程目标:

1、 掌握Storm编程的应用场景及编程模型

2、 掌握Storm开发生态圈各知识点

3、 掌握短信和邮件告警功能

课程大纲:

1、 背景知识

2、 需求分析

3、 功能分析

4、 架构设计

5、 代码开发

课程内容

1、背景知识

一款优秀的软件需要具备的特点

l 软件的实用性。

所谓有的放矢,软件的诞生是为了解决特定的问题,比如现在流行的MVC 框架,早期的没有MVC 开发的时候,耦合度很大,后期维护更新成本高,难度大,这样MVC 框架就孕育而生;比如陌陌这种社交软件,是为了解决陌生人之间交流的问题;比如疼醒这种软件是为了解决人们远程沟通的问题;比如OA系统为了解决公司协同流程、项目管理、知识管理等问题……所以一款优秀的软件必须能够解决一个领域内的问题。

l 软件的稳定性。

软件的实用性问题解决之后,急需要解决的问题就是软件的稳定性。一般线上系统都会承载企业的某项业务,系统的稳定性直接影响了业务是否能够正常运营。很多创业公司在前期只注重业务的发展,不太在意系统的稳定性,一旦用户两比较大的之后,就会出现很多性能的问题。这种情况就好比,你找了一个妹子,并准备深入交往后结婚,却发现这个妹子总是有很多异性朋友在联系……

l 代码的规范性

铁打的营盘流水的兵,一款优秀的软件不仅仅是功能的实现。整体架构、功能模块、代码注释、扩展性等问题也也需要考虑,毕竟在一个软件的生命周期过程中,参与的人实在是太多了,主创人员也可能随时流式。所以代码的规范性就难能可贵了。

l 升级保持向前兼容性。

如果一个软件平常使用挺好的,但是升级却越来越费劲,或者升级后稳定性大打折扣,也难以称得上一个好的软件。

l 基本的使用手册

文档、文档、文档、一个简单有效的使用手册,才是程序的王道,知其然才能知其所以然。能让用户一目了然,功能、架构、设计思路、代码等等。

2、需求分析

随着公司业务发展,支撑公司业务的各种系统越来越多,为了保证公司的业务正常发展,急需要对这些线上系统的运行进行监控,做到问题的及时发现和处理,最大程度减少对业务的影响。

目前系统分类有:

1) 有基于Tomcatweb应用

2) 有独立的Java Application应用

3) 有运行在linux上的脚本程序

4) 有大规模的集群框架(zookeeperHadoopStormSRP……)

5) 有操作系统的运行日志

主要功能需求分为:

监控系统日志中的内容,按照一定规则进行过滤

发现问题之后通过短信和邮件进行告警

3、功能分析

l 数据输入

使用flume客户端获取个系统的数据;

用户通过页面输入系统名称、负责人触发规则等信息

l 数据存储

使用flume采集数据并存放在kafka集群中

l 数据计算

使用storm编写程序对日志进行过滤,将满足过滤规则的信息,通过邮件短信告警并保存到数据库中

l 数据展示

管理页面可以查看触发规则的信息,系统负责人,联系方式,触发信息明细等

4、原型设计

产品经理设计产品原形

5、架构设计

5.1、整体架构设计

 

 

主要架构为应用+flume+kafka+storm+mysql+Java web。数据流程如下:

  1. 应用程序使用log4j产生日志
  2. 部署flume客户端监控应用程序产生的日志信息,并发送到kafka集群中
  3. storm spout拉去kafka的数据进行消费,逐条过滤每条日志的进行规则判断,对符合规则的日志进行邮件告警。
  4. 最后将告警的信息保存到mysql数据库中,用来进行管理。

5.2Flume设计

l Flume说明

Flume是一个分布式、可靠地、可用的服务,用来收集、聚合、传输日志数据。

它是一个基于流式数据的架构,简单而灵活。具有健壮性、容错机制、故障转移、恢复机制。

它提供一个简单的可扩展的数据模型,容许在线分析程序。F

Flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用。

l Flume 设计摘要

使用 Flume EXEC执行一个linux命令来生成数据源。例如,可以用tail命令监控一个文件,那么,只要文件增加内容,EXEC就可以将增加的内容作为数据源发送出去。

使用 org.apache.flume.plugins.KafkaSink,将Flume EXEC产生的数据源发送到Kafka中。

5.3Kafka设计

l Kafka说明

kafka是一个分布式消息队列:生产者、消费者的功能。

l Kakfa设计摘要

部署kafka集群,在集群中添加一个Topicmonitor_realtime_javaxy

5.4Storm设计

l KafkaSpout读取数据,需要配置Topicmonitor_realtime_javaxy

l FilterBolt判断规则

l NotifyBolt用来发送邮件或短信息

l Save2DB用来将告警信息写入mysql数据库

5.5、 数据模型设计

5.5.1、用户表

用来保存用户的信息,包括账号、手机号码、邮箱、是否有效等信息

 

 

5.5.2、应用表

用来保存应用的信息,包括应用名称、应用描述、应用是否在线等信息

 

 

5.5.3、应用类型表

用来保存应用的类型等信息

 

 

5.5.4、规则表

用来保存规则的信息,包括规则名称,规则描述,规则关键词等信息

 

 

5.5.5、规则记录表

用来保存触发规则后的记录,包括告警编号、是否短信告知、是否邮件告知、告警明细等信息。

 

 

6、 代码开发

6.1、 整体结构

 

 

6.2、 LogMonitorTopologyMain驱动类

 

 

6.3、 KafkaSpout获取数据源

 

 

6.4FilterBolt用来过滤日志信息

主要是过滤格式和校验appId是否合法。

 

 

6.5PrepareRecordBolt发送邮件告警和短信告警

 

 

6.6、 SaveMessage2MySq保存到数据库

 

 

6.7、核心类 MonitorHandler  所有流程处理的核心代码

  

 

 

 

 

 

7、 运行结果

7.1、短信发送

 

 

7.2、邮件发送

 

 

 

告警监控系统的构建(代码片段)

...本包,包含主程序、子程序、配置文件、邮件引擎、输出日志等。[]主程序:作为整个脚本的入口,是整个系统的命脉。配置文件:是一个控制中心,用它来开关各个子程序,指定各个相关联的日志文件。[]子程序:这个才是真... 查看详情

通过graylog如何监控系统日志(代码片段)

日志监控是企业监控系统里面很重要的一个环节,通过日志监控可以提前发现网络设备或者系统存在的未知或者潜在的风险,让运维人员及时干预,减少损失。常见的监控系统Zabbix、Prometheus都支持日志的监控。但由于在数据量... 查看详情

20.20告警系统主脚本;20.21告警系统配置文件;20.22告警系统监控项目

...件shares下是:各个监控脚本mail下是:邮件引擎log下是:日志20.20 告警系统主脚本约定:所有脚本都放在/usr/local/bin目录下! 查看详情

告警监控系统的构建(下)(代码片段)

...x]shares下是各个监控脚本;[x]mail下是邮件引擎;[x]log下是日志。五、邮件引擎一旦之前所设定的部分监控脚本 查看详情

告警运维中心|构建高效精准的告警协同处理体系

...c;用Skywalking做tracing,Prometheus做matches,ES或者云上日志服务,做日志相关监控,随便算算就至少有三套系统了,这其中还不包括云监控等云平台自身的监控平台。这么多监控平台如果没有统一配置告警的地方&#x... 查看详情

监控系统脚本

...本包,包含主程序、子程序、配置文件、邮件引擎、输出日志等。主程序:作为整个脚本的入口,是整个系统的命脉。配置文件:是一个控制中心,用它来开关各个子程序,指定各个相关联的日志文件。子程序:这个才是真正的... 查看详情

vivo统一告警平台建设与实践

...确立。以前监控被划分为基础监控、通用监控、调用链、日志监控、拨测监控等几大系统,统一监控的目标是将各个监控指标数据进行统一计算、统一存储、统一检测、统一告警、统一展示。这里不作赘述,后面会出一... 查看详情

邮件告警系统需求分析(代码片段)

...本包,包含主程序、子程序、配置文件、邮件引擎、输出日志等。主程序:作为整个脚本的入口,是整个系统的命脉。配置文件:是一个控制中心,用它来开关各个子程序,指定各个相关联的日志文件。子程序:这个才是真正的... 查看详情

直播回顾|告警全生命周期管理的思路与落地实践

...已经建设了多套的监控系统,覆盖服务器、网络、存储、日志等等。但有了监控却并不能高枕无忧,在我们服务的多个企业中,监控系统检测并触发告警后,在告警事件管理过程中,各人员角色普遍存在一些亟待解决的痛点问题... 查看详情

七十告警系统主脚本告警系统配置文件告警系统监控项目

七十一、告警系统主脚本、告警系统配置文件、告警系统监控项目约定:所有的脚本放在/usr/local/sbin/下一、告警系统主脚本main.sh#cd /usr/local/sbin/#mkdirmon#cdmon#mkdirbinconfshareslogmail#cdbin#vimmain.sh#!/bin/bash#Writtenbyaming.#告警是否发送... 查看详情

告警系统主脚本告警系统配置文件告警系统监控项目

告警系统主脚本1.定义shell项目-告警系统脚本main.sh[[email protected]~]#cd/usr/local/sbin/[[email protected]sbin]#mkdirmon[[email protected]sbin]#cdmon[[email protected]mon]#ls[[email protected] 查看详情

kubernetes日志监控系统架构详解

...户业务,保证业务健康运行,我们需要收集服务器系统的日志、客户业务日志,并进行分析处理,做到故障发生时可以第一时间定位故障原因,通知相应的人员处理,那么怎么将日志文件归集,怎么将日志文件呈现,以及故障发... 查看详情

20.20告警系统主脚本20.21告警系统配置文件20.22告警系统监控项目

20.20告警系统主脚本20.21告警系统配置文件20.22告警系统监控项目 查看详情

使用fluentd发送告警邮件(代码片段)

...下如何使用Fluentd实现邮件告警功能。Fluentd的告警是基于日志分析实现的,通过监测日志中的业务状态信息,及时识别严重错误,实时发送告警信息。以分析Apache的访问日志为例,了解一下Fluentd提供的邮件告警功能。1.安装软件1... 查看详情

告警系统主脚本告警系统配置文件告警系统监控项目(代码片段)

十七周一次课(2月9日)20.20告警系统主脚本创建目录[[email protected]~]#cd/usr/local/sbin/#进入到/usr/local/sbin/目录下[[email protected]sbin]#mkdirmon#创建子目录[[email protected]sbin]#cdmon[[email protected]mon]# 查看详情

72.告警系统主脚本告警系统配置文件告警系统监控项目(代码片段)

cd/usr/local/sbinmkdirmoncdmonmkdirbinconfsharesmaillogcdbinvimmain.sh一、shell项目-告警系统main.sh?main.sh内容#!/bin/bash#Writtenbychinantfy.#是否发送邮件的开关exportsend=1#过滤ip地址exportaddr=`/sbin/ifconfig|grep-A1"ens3 查看详情

skywalking--部署、使用、告警、日志集成

参考技术ASkywalking是一个可观测性分析平台(ObservabilityAnalysisPlatform简称OAP)和应用性能管理系统(ApplicationPerformanceManagement简称APM)。多语言自动探针,Java,.NETCore和Node.JS。多种监控手段,语言探针和servicemesh。轻量高效。不需... 查看详情

告警系统主脚本告警系统配置文件告警系统监控项目(代码片段)

一:告警系统主脚本main.sh内容#!/bin/bash#Writtenbyaming.#是否发送邮件的开关exportsend=1#过滤ip地址exportaddr=`/sbin/ifconfig|grep-A1"ens33:"|awk‘/inet/print$2‘`dir=`pwd`#只需要最后一级目录名last_dir=`echo$dir|awk-F‘/‘‘print$NF‘`#下 查看详情