ELK是一种强大的分布式日志管理解决方案,它由三个核心组件组成:
Elasticsearch:作为分布式搜索和分析引擎,Elasticsearch能够快速地存储、搜索和分析大量的日志数据,帮助用户轻松地找到所需的信息。
Logstash:作为数据处理管道,Logstash能够从各种来源收集日志数据,并进行过滤、转换和发送到Elasticsearch等目标存储中。
Kibana:作为Web界面,Kibana能够帮助用户可视化和分析日志数据,创建仪表板和报表,以便更好地理解和监控业务中的日志信息。
ELK能够帮助业务实现日志数据的集中管理、快速搜索和分析,从而提高故障排查的效率,优化系统性能,以及发现潜在的安全威胁。通过ELK,业务可以更好地利用日志数据来支持决策和监控业务运营。
下面,本文会介绍ELK的使用
- <dependency>
- <groupId>net.logstash.logbackgroupId>
- <artifactId>logstash-logback-encoderartifactId>
- <version>5.3version>
- dependency>
打印日志的时候可以使用lombok或其他框架,但是注意一下之前使用log攻击的bug,尽量跳过这些版本,注意,低版本的springboot默认的日志库有问题。
- logging:
- config: ./config/logback-spring.xml
- <configuration>
-
-
-
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <pattern>%date{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) (%file:%line\)- %m%npattern>
-
- <charset>UTF-8charset>
- encoder>
- appender>
-
-
-
-
- <appender name="syslog" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <File>log/ant-back.logFile>
-
-
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-
-
- <fileNamePattern>log/ant-back.%d.%i.logfileNamePattern>
-
- <maxHistory>120maxHistory>
- <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-
- <maxFileSize>100MBmaxFileSize>
- timeBasedFileNamingAndTriggeringPolicy>
- rollingPolicy>
- <encoder>
-
- <pattern>
- %d %p (%file:%line\)- %m%n
- pattern>
-
- <charset>UTF-8charset>
- encoder>
- appender>
-
-
-
-
-
-
-
-
-
-
-
- <appender name="logstash"
- class="net.logstash.logback.appender.LogstashTcpSocketAppender">
-
- <destination>ip:4560destination>
-
- <encoder
- class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
- <providers>
- <timestamp>
- <timeZone>UTCtimeZone>
- timestamp>
- <pattern>
- <pattern>
- {
- "tags": "java",
- "thread": "%thread",
- "logLevel": "%level",
- "message": "%message",
- "class": "%logger{40}",
- "serviceName": "asr_hot_word",
- "trace": "%X{X-B3-TraceId:-}",
- "span": "%X{X-B3-SpanId:-}",
- "exportable": "%X{X-Span-Export:-}",
- "pid": "${PID:-}"
-
- }
- pattern>
- pattern>
- providers>
- encoder>
- appender>
-
-
- <root level="INFO">
- <appender-ref ref="STDOUT"/>
- <appender-ref ref="logstash" />
- root>
-
- configuration>