第1节 storm日志告警:1、 - 5、日志监控告警业务需求、代码、集群运行、总结

如何解决短信或者邮件频繁发送的问题:每次发送的时候都先查询数据库记录,看一下有没有给这个人发送消息,上一次发送消息的时间是什么时候,如果发送时间间隔小于半个小时,就不要再发了
==========================================
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的更多说明:
=======================================================
课程总结:
1、storm的源码托管地址
2、storm的任务提交的过程 本地创建目录树,zk创建目录树
3、storm与hdfs的整合使用
4、storm的ack机制 要知道是什么玩意儿 消息确认机制
5、storm的定时器以及与mysql的整合 搞定
6、日志监控告警系统
问题分析思路的整个过程
第1节 storm日志告警:1、 - 5、日志监控告警业务需求、代码、集群运行、总结的更多相关文章
- 第3节 storm高级应用:6、定时器任务;7、与jdbc的整合使用;8、与jdbc整合打包集群运行
======================================= 5.storm的定时器以及与mysql的整合使用 功能需求:实现每五秒钟打印出当前时间,并将发送出来的数据存入到mysq ...
- Sentry(v20.12.1) K8S 云原生架构探索,玩转前/后端监控与事件日志大数据分析,高性能+高可用+可扩展+可伸缩集群部署
Sentry 算是目前开源界集错误监控,日志打点上报,事件数据实时分析最好用的软件了,没有之一.将它部署到 Kubernetes,再搭配它本身自带的利用 Clickhouse (大数据实时分析引擎)构 ...
- storm单机运行与集群运行问题
使用trident接口时,storm读取kafka数据会将kafka消费记录保存起来,将消费记录的位置保存在tridentTopology.newStream()的第一个参数里, 如果设置成从头开始消 ...
- 第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式 :
背景: 默认情况下,Quartz.Net作业是持久化在内存中的,即 quartz.jobStore.type = "Quartz.Simpl.RAMJobStore, Quartz" ...
- Storm集群安装部署步骤【详细版】
作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how ...
- [转载] 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等
原文: http://www.36dsj.com/archives/25042 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要有日志收集系统.消息系统.分布式服务 ...
- Storm集群安装详解
storm有两种操作模式: 本地模式和远程模式. 本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来; 远端模式:你提交的topology会在一个集群的机器 ...
- Storm入门教程 第三章Storm集群安装部署步骤、storm开发环境
一. Storm集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node).其分别对应的角色如下: 主控节点(Master Node)上运行一个被称为N ...
- Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析
Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析 今天通过集群运行模式观察.研究和透彻的刨析SparkStreaming的日志和web监控台. Day28 ...
随机推荐
- SpringBoot Profiles特性
今天我们了解SpringBoot Profiles特性 一.外部化配置 配置分为编译时和运行时,而Spring采用后者,在工作中有时也会两者一起使用. 何为"外部化配置"官方没 ...
- SpringBoot 配置 Redis 多缓存名(不同缓存名缓存失效时间不同)
import com.google.common.collect.ImmutableMap; import org.springframework.cache.CacheManager; import ...
- Jmeter调度器小记
jmeter的调度器中[持续时间(秒)]的优先级是高于[结束时间]和[启动时间]的 举例子: 前提:[循环次数]勾选[永远] 场景1:[持续时间(秒)]设置为120S,[启动时间]设置T+1min,[ ...
- linux的端口学习(一)
1.端口是什么? 1.1 是英文port的意译,可认为是设备与外界通讯交流的出口. 1.2 端口可分为虚拟端口和物理端口. 1.2.1 虚拟端口:指计算机内部或交换机路由器内的端口,不可见.例如计算机 ...
- MQTT Web Toolkit - MQTT 在线客户端及服务器测试
MQTT Web Toolkit 是 EMQ 最近开源的一款 MQTT (WebSocket) 测试工具,支持线上 (tools.emqx.io) 访问使用.该工具采用了聊天界面形式,简化了页面操作逻 ...
- vue调试工具vue-devtools安装及使用方法
vue调试工具vue-devtools安装及使用方法 https://www.jb51.net/article/150335.htm 本文主要介绍 vue的调试工具 vue-devtools 的安装和 ...
- express 应用创建及app.js详解
#1 express 应用创建 1.安装node.js (自行百度) 2.npm install express -g 3.全局安装express生成器 express-generator npm i ...
- Edge Beta Android版更新已启用新图标
导读 微软Edge Beta Android版更新已启用新图标设计 IT之家消息 适用于Android的Microsoft Edge Beta已于近日获得更新,最显著的特征就是使用了新图标设计.该图标 ...
- float元素上-margin的用法
css标准,float元素上的负margin表示把下面的元素向对应方向移动,并且覆盖上一个元素(这里是指html中元素的声明顺序). 标准情况下我们用float 时候是这样的. -margin通俗点说 ...
- Nginx笔试题!
1.Nginx实现HTTP及TCP负载均衡的模块?HTTP就是工作在七层协议TCP工作在四层协议 Nginx七层负载:七层通过虚拟的URL或主机名接收请求在server里面配置location反向代理 ...