如何解决短信或者邮件频繁发送的问题:每次发送的时候都先查询数据库记录,看一下有没有给这个人发送消息,上一次发送消息的时间是什么时候,如果发送时间间隔小于半个小时,就不要再发了

==========================================

6、日志监控告警系统

6.1需求分析:

实现项目中日志监控的功能,需要做到日志监控实时告警,例如系统中出现任何异常,触发任何的告警规则,都可以实时通过短信或者邮件告知相关系统负责人

6.2 案例:实现实时监控文件变化,通过自定义flume拦截器,实现文件内容添加标识(详见代码)

6.2.1 错误日志生成

错误日志生成,直接运行loggen.sh这个脚本,就会在

/export/data/flume/click_log  这个目录下生成一个文件叫做error.log的日志文件

参见资料当中的

注意:资料中已经提供好打包运行的jar包以及运行脚本,直接运行脚本即可

6.2.2 创建kafka的对应的topic

bin/kafka-topics.sh --create  --partitions 6 --replication-factor 1 --topic log_monitor --zookeeper node01:2181,node02:2181,node03:2181

6.2.3  flume自定义拦截器开发

注意:一定要将flume的自定义拦截器单独放一个项目,单独进行打包,不然与其他的代码会有冲突

功能需求:实现在每条日志前面加上一个appId来做唯一标识

第一步:创建maven项目并导入jar包;

第二步:开发我们自定义拦截器;

第三步:将我们自定义的拦截器打包成jar,放入到flume的lib目录下

注意,这里打包不需要任何的打包插件,将maven项目中的打包插件都注释掉

注意:资料当中已经提供好了的jar包,直接放到flume的lib目录下即可

第四步:配置flume的配置文件app_interceptor.conf

a1.sources = r1

a1.channels = c1

a1.sinks = k1

a1.sources.r1.type = exec

a1.sources.r1.command = tail -F /export/data/flume/click_log/error.log

a1.sources.r1.channels = c1

a1.sources.r1.interceptors = i1

a1.sources.r1.interceptors.i1.type = cn.itcast.flume.interceptor.AppInterceptor$AppInterceptorBuilder

a1.sources.r1.interceptors.i1.appId = 1

a1.channels.c1.type=memory

a1.channels.c1.capacity=10000

a1.channels.c1.transactionCapacity=100

a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink

a1.sinks.k1.topic = log_monitor

a1.sinks.k1.brokerList = kafka01:9092

a1.sinks.k1.requiredAcks = 1

a1.sinks.k1.batchSize = 20

a1.sinks.k1.channel = c1

第五步:启动flume

bin/flume-ng agent -n a1 -c conf -f /export/servers/apache-flume-1.6.0-cdh5.14.0-bin/conf/app_interceptor.conf -Dflume.root.logger=INFO,console

第六步:使用kafka自带的console消费我们生产的信息,查看msgId是否成功带上了

bin/kafka-console-consumer.sh  --topic log_monitor --zookeeper node01:2181,node02:2181,node03:2181

6.3 storm消费kafka中的数据,实现日志监控告警

第一步:导入jar包

注意:打包的时候,打包插件一定要使用这个:

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-shade-plugin</artifactId>

<version>1.4</version>

第二步:创建数据库表

第三步:开发我们的定时任务

第四步:开发我们的规则匹配bolt

第五步:开发我们的短信与邮件通知bolt

第六步:开发我们的数据库保存bolt

第七步:程序入口主函数

以上所有,详见代码。

kafkaSpout的更多说明:

https://github.com/apache/storm/blob/caeaf255b7c20009d36c39bc2999c205082c63aa/docs/storm-kafka-client.md

=======================================================

课程总结:

1、storm的源码托管地址

2、storm的任务提交的过程 本地创建目录树,zk创建目录树

3、storm与hdfs的整合使用

4、storm的ack机制  要知道是什么玩意儿  消息确认机制

5、storm的定时器以及与mysql的整合  搞定

6、日志监控告警系统

问题分析思路的整个过程

第1节 storm日志告警:1、 - 5、日志监控告警业务需求、代码、集群运行、总结的更多相关文章

  1. 第3节 storm高级应用:6、定时器任务;7、与jdbc的整合使用;8、与jdbc整合打包集群运行

    ======================================= 5.storm的定时器以及与mysql的整合使用 功能需求:实现每五秒钟打印出当前时间,并将发送出来的数据存入到mysq ...

  2. Sentry(v20.12.1) K8S 云原生架构探索,玩转前/后端监控与事件日志大数据分析,高性能+高可用+可扩展+可伸缩集群部署

    Sentry 算是目前开源界集错误监控,日志打点上报,事件数据实时分析最好用的软件了,没有之一.将它部署到 Kubernetes,再搭配它本身自带的利用 Clickhouse (大数据实时分析引擎)构 ...

  3. storm单机运行与集群运行问题

    使用trident接口时,storm读取kafka数据会将kafka消费记录保存起来,将消费记录的位置保存在tridentTopology.newStream()的第一个参数里, 如果设置成从头开始消 ...

  4. 第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式 :

    背景: 默认情况下,Quartz.Net作业是持久化在内存中的,即 quartz.jobStore.type = "Quartz.Simpl.RAMJobStore, Quartz" ...

  5. Storm集群安装部署步骤【详细版】

    作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how ...

  6. [转载] 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等

    原文: http://www.36dsj.com/archives/25042 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要有日志收集系统.消息系统.分布式服务 ...

  7. Storm集群安装详解

    storm有两种操作模式: 本地模式和远程模式. 本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来; 远端模式:你提交的topology会在一个集群的机器 ...

  8. Storm入门教程 第三章Storm集群安装部署步骤、storm开发环境

    一. Storm集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node).其分别对应的角色如下: 主控节点(Master Node)上运行一个被称为N ...

  9. Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析

    Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析 今天通过集群运行模式观察.研究和透彻的刨析SparkStreaming的日志和web监控台. Day28 ...

随机推荐

  1. 如何使用canvas绘制椭圆,扩展非chrome浏览器中的ellipse方法

    这篇博文主要针对浏览器中绘制椭圆的方法扩展.在网上搜索了很多,发现他们绘制椭圆的方式都有缺陷.其中有压缩法,计算法,贝塞尔曲线法等多种方式.但是都不能很好的绘制出椭圆.所有我就对这个绘制椭圆的方式进行 ...

  2. JIT对锁的优化- 锁消除和锁粗化案例分析

    锁消除和锁粗化案例分析 锁消除 直接上代码 /** * 描述: 锁粒度演示 * @author karl * @create 2020-02-11 14:38 */ public class MySy ...

  3. SpringBoot2.x整合Shiro出现cors跨域问题(踩坑记录)

    1. Springboot如何跨域? 最简单的方法是: 定义一个配置CorsConfig类即可(是不是简单且无耦合到令人发指) @Configuration public class CorsConf ...

  4. Fluent_Python_Part4面向对象,11-iface-abc,协议(接口),抽象基类

    第四部分第11章,接口:从协议到抽象基类(重点讲抽象基类) 接口就是实现特定角色的方法集合. 严格来说,协议是非正式的接口(只由文档约束),正式接口会施加限制(抽象基类对接口一致性的强制). 在Pyt ...

  5. Python os模块、os.path模块常用方法

    os模块:os模块在python中包含普遍的操作系统功能,下面列出了一些在os模块中比较有用的部分. os.sep 可以取代操作系统特定的路径分隔符.windows下为 "\" o ...

  6. WORKDIR 指定工作目录 每一个 RUN 都是启动一个容器、执行命令、然后提交存储层文件变更

    WORKDIR 指定工作目录 格式为 WORKDIR <工作目录路径>. 使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不 ...

  7. Cisco 3702i TX功率图

    有关思科TX Power选择的一些基本信息: 思科使用1到8的等级,其中1是最高功率,8是最低功率虽然比例上升到8,但不是每个band都使用(0-7)8个数据中的所有值.每个数字都有一个相应的dBm值 ...

  8. 重新梳理IT知识之java-01语法(一)

    标识符的命名规范 包名:xxxyyyzzz 类名.接口名:XxxYyyZzz (大驼峰) 变量名.方法名:xxxYyyZzz 常量名:XXX_YYY_ZZZ //**************强制类型转 ...

  9. mybatis源码探索笔记-2(构建SqlSession并获取代理mapper)

    前言 上篇笔记我们成功的装载了Configuration,并写入了我们全部需要的信息.根据这个Configuration创建了DefaultSqlSessionFactory.本篇我们实现构建SqlS ...

  10. SystemC中文教程一

    SystemC是什么 首先, SystemC不是一门新的语言,而是基于C++开发的library:因此,你所熟悉的C++知识都可以在SystemC建模时使用:理论上来说,SystemC library ...