Storm日志预警以及汇总解决方案
2024-09-08 13:20:16
目前在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
最新文章
- 真正解决问题:maven eclipse tomcat java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- 使用James搭建一个自己的邮箱服务器
- SQLite安装、编译与应用
- [转]LINQ之路系列博客导航
- 【前端开发系列】—— CSS3属性选择器总结
- FHS目录配置下,常见的几个问题及解答
- Linux下用arptables防arp攻击
- Android:修改版本
- linux内核书籍
- HDU 1718 Rank counting sort解法
- asp.net 中使用不同的数据源绑定gridview
- unity3d游戏开发——新手引导
- php 文件操作之抓取网站图片
- WinForm 小程序 NotePad
- VIEWCONTROLLER的启动流程
- libcurl模拟登录CSDN并自动评论资源以获取积分
- keepalived工作原理
- Linux修改hostname的几种方法
- 【原创精品】程序员最强大的利器——电子笔记本的思考(1)(ver0.3)
- ldap 导出、导入ldif数据