ELK日志系统搭建
ELK日志系统使用
博客
- Logstash详解之——output模块
- Elasticsearch模块——head插件安装
- Elasticsearch模块——CRUD
- Kibana模块——介绍
- Kibana——筛选语法基础
- Kibana——数据图形化制作
- kafka组件简介
- es集群容量规划
日志接入ELK
log4j2配置
<Kafka name="kafkaLog" topic="topic_request_log" ignoreExceptions="false">
<PatternLayout pattern="[%-4level]_|_%d{YYYY-MM-dd HH:mm:ss}_|_%m_|_${sys:ip}"/>
<Property name="bootstrap.servers">bigdata001.dns.org:9092,bigdata002.dns.org:9092</Property>
<Property name="max.block.ms">2000</Property>
</Kafka>
<RollingFile name="failoverKafkaLog" fileName="../log/Service/failoverKafka/request.log"
filePattern="../log/Service/failoverKafka/request.%d{yyyy-MM-dd}.log">
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout>
<Pattern>[%-4level]_|_%d{YYYY-MM-dd HH:mm:ss}_|_%m_|_${sys:ip}%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
<Failover name="Failover" primary="kafkaLog" retryIntervalSeconds="600">
<Failovers>
<AppenderRef ref="failoverKafkaLog"/>
</Failovers>
</Failover>
<!--异步-->
<AsyncLogger name="kafkaLogger" level="INFO" additivity="false">
<appender-ref ref="Failover"/>
</AsyncLogger>
注意点(坑点):
① 日志接入必须异步,绝对不能影响服务性能,
② 响应要求比较高的系统接入第三方系统,必须依赖解耦,此处的Failover Appender就是解耦对Kafka的依赖,当Kafka Crash时,日志触发Failover,写本地即可
③ log4j2 Failover appender retryIntervalSeconds的默认值是1分钟,是通过异常来切换的,所以可以适量加大间隔,比如上面的10分钟
④ Kafka appender ignoreExceptions 必须设置为false,否则无法触发Failover
⑤ 这里有个比较大的坑是max.block.ms Property,KafkaClient包里默认值是60000ms,当Kafka宕机时,尝试写Kafka需要1分钟才能返回Exception,之后才会触发Failover,当请求量大时,log4j2 队列很快就会打满,之后写日志就Blocking,严重影响到主服务响应。所以要设置足够短,队列长度足够长。
⑥ log4j2异步设置详细参考:log4j2异步注意事项