Storm日志预警以及汇总解决方案
目前在storm代码层面,捕获到的异常无法第一时间告知到开发人员,只有到最后引起显而易见的状况才会再去反查work所在服务器的日志进行问题分析,这样对后续优化代码和异常处理很不利。
但是也可以通过以下方案解决
1.通过监控埋点的方式写入Influxdb,再通过Grafana进行告警,但是会对应用和数据库造成很大的压力
2.直接通过log4j2的SMTPAppender进行邮件告警,方法比较简单,直接修改配置即可,但是告警方式比较单一,在出现大量错误的时候有可能把邮箱打爆
3.我们还可以借助KafkaAppender将日志异步写入到kafka,进入kafka后,我们消费消息根据级别进行短信,电话,邮件,企微等多样化告警,另一方面还可以将日志汇总落地存储(比如es),便于后续处理。这种方式需要其他应用端主动接入,消费端统一处理
第三种方式直接在log4j2/work.xml文件中增加配置
<appenders>
<Kafka name="kafkaLog" topic="topic" ignoreExceptions="false">
<PatternLayout pattern="应用名称_|_[%p]_|_%logger_|_%d{YYYY-MM-dd HH:mm:ss,SSS}_|_%m%n"/>
<Property name="bootstrap.servers">kafka地址</Property>
<Property name="max.block.ms">2000</Property>
</Kafka> <RollingFile name="failoverKafkaLog" fileName="/data/log/storm/failoverKafka/request.log" filePattern="/data/log/storm/failoverKafka/request.%d{yyyy-MM-dd}.log">
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout>
<Pattern>storm_|_[%p]_|_%logger_|_%d{YYYY-MM-dd HH:mm:ss,SSS}_|_%m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile> <Failover name="Failover" primary="kafkaLog" retryIntervalSeconds="60">
<Failovers>
<AppenderRef ref="failoverKafkaLog"/>
</Failovers>
</Failover> </appenders>
<loggers>
<AsyncLogger name="com.xxx" level="INFO" additivity="false">
<appender-ref ref="Failover"/>
</AsyncLogger> <root level="warn"> <!-- We log everything -->
<appender-ref ref="kafkaLog"/>
</root>
</loggers>
测试环境测试:
1.书写storm程序,将接收到的消息,直接通过log输出

2.客户端生产一条消息 bin/kafka-console-producer.sh --broker-list xx.xx.xx.xx:9092 --topic canal-test

3.客户端消费日志topic bin/kafka-console-consumer.sh --bootstrap-server xx.xx.xx.xx:9092 --topic stormlog

参考地址:http://logging.apache.org/log4j/2.x/manual/appenders.html#KafkaAppender

Storm日志预警以及汇总解决方案的更多相关文章
- Zabbix日志监视的汇总报警(更新发送邮件脚本)
Zabbix的用户一定会碰到这种情况: 日志报警一般设置的是multiple模式,有错误大量写入的时候,每写入一行就会触发一次action,导致出现大量的报警邮件. 特别是ora的报警,经常一出就是上 ...
- Storm笔记——技术点汇总
目录 概况 手工搭建集群 引言 安装Python 配置文件 启动与测试 应用部署 参数配置 Storm命令 原理 Storm架构 Storm组件 Stream Grouping 守护进程容错性(Dae ...
- 大数据学习——flume日志分类采集汇总
1. 案例场景 A.B两台日志服务机器实时生产日志主要类型为access.log.nginx.log.web.log 现在要求: 把A.B 机器中的access.log.nginx.log.web.l ...
- 实时收集Storm日志到ELK集群
背景 我们的storm实时流计算项目已经上线几个月了,由于各种原因迟迟没有进行监控,每次出现问题都要登录好几台机器,然后使用sed,shell,awk,vi等各种命令来查询原因,效率非常低下,而且有些 ...
- 第1节 storm日志告警:1、 - 5、日志监控告警业务需求、代码、集群运行、总结
如何解决短信或者邮件频繁发送的问题:每次发送的时候都先查询数据库记录,看一下有没有给这个人发送消息,上一次发送消息的时间是什么时候,如果发送时间间隔小于半个小时,就不要再发了 ============ ...
- 使用Slf4j集成Log4j2构建项目日志系统的完美解决方案
一.背景 最近因为公司项目性能需要,我们考虑把以前基于的log4j的日志系统重构成基于Slf4j和log4j2的日志系统,因为,使用slf4j可以很好的保证我们的日志系统具有良好的兼容性,兼容当前常见 ...
- 出现“System.Data.SqlClient.SqlError: 尚未备份数据库的日志尾部”错误的解决方案
Sql Server2008数据库在还原时出现如下错误信息:System.Data.SqlClient.SqlError: 尚未备份数据库<数据库名称>的日志尾部.如果该日志包含您不希望丢 ...
- Storm日志分析调研及其实时架构
1.Storm第一个Demo 2.Windows下基于eclipse的Storm应用开发与调试 3.Storm实例+mysql数据库保存 4.Storm原理介绍 5. flume+kafka+stor ...
- docker容器日志收集方案汇总评价总结
docker日志收集方案有太多,下面截图罗列docker官方给的日志收集方案(详细请转docker官方文档).很多方案都不适合我们下面的系列文章没有说. 经过以下5篇博客的叙述简单说下docker容器 ...
- Linux下nohup日志输出过大问题解决方案
转载自:http://blog.csdn.net/shawnhu007/article/details/50971084 最近在一hadoop测试集群运行一个spark streaming程序,然后使 ...
随机推荐
- CentOS 7关闭防火墙 SElinux 配ip
屏蔽出站 iptables -t filter -A OUTPUT --dst 192.168.0.191/32 -j DROP iptables -t filter -A OUTPUT --dst ...
- Windows下的挖矿木马查杀
MS016小组(原创) 上一篇文章 简单讲了一下挖矿木马 大概流程 文章地址: https://www.cnblogs.com/ms016/articles/7978880.html 今天讲分析一个 ...
- Vue: 单页面应用如何保持登录状态
这篇文章写的还可以 https://www.xiabingbao.com/post/vue/vue-keep-logininfo.html
- 小白之Python-基础中的基础03
序列,目前看来很基础,东西比较多,难度开始加大...加油吧,骚年 Python之序列 1.数据结构:序列.容器(序列:索引.映射:键).集合2.列表.元组.字符串.Unicode字符串.buffer对 ...
- Mac 启动转换助理 安装 win10
Mac 启动转换助理 安装 win10 Mac的处理器 是Inter芯 才有该功能 打开启动转换助理/Bootcamp 设置分区大小 win10安装完成后 在左侧的此电脑中找到咱们的Boot Camp ...
- [转]Windows 批处理命令教程
第一章 批处理基础 第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可 ...
- 在CMD上运行java文件时出现错误:找不到或者无法加载主类的问题
转载链接:https://blog.csdn.net/weixin_39085109/article/details/80189899
- Ubuntu中恢复rm命令误删文件(超级详细+亲测有效)
Ubuntu中恢复rm命令误删文件(超级详细+亲测有效) 置顶 2019年05月27日 11:13:12 rain_Man2018 阅读数 40 在实验室做项目时使用的是ubuntu16.04 某 ...
- OCR接口
OCR基础框 import pytesseract from PIL import Image img = Image.open('实际数据1.jpeg') #具体位置截图 image1 = Imag ...
- 读《高情商修炼手册》有感 output
偶然的一次机遇,遇见了这本书,本着情绪的心态的初衷去阅读,没想到还是挺好读的,此次记录是在读完这本书之后的第二天,受output 1.情商高,意味着控制好自己的情绪,让人相处舒服 在智商过剩的年代,有 ...