前言
续上篇,elk相关集群都搭建好了,现在就将日志输入到elk使用
框架
这里的程序都是使用springcloud框架版本如下
<spring-boot.version>2.2.10.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR4</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
依赖
在应用中引入依赖包
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.2</version>
</dependency>
修改logback配置
增加以下配置
<!-- logstash设置 -->
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<param name="Encoding" value="UTF-8"/>
<!-- logstash服务器ip -->
<remoteHost>10.196.201.80</remoteHost>
<!-- logstash tcp 端口-->
<port>4569</port>
<!-- <filter class="com.program.interceptor.ELKFilter"/>-->//引入过滤类
<!-- encoder is required -->
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" >
<customFields>{"appname":"rocketcenter"}</customFields> // 索引名
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="INFO_FILE" />
<appender-ref ref="ERROR_FILE" />
<appender-ref ref="logstash"/>
</root>
<logger name="com.alibaba.nacos.client.naming" level="WARN" />
<logger name="RocketmqClient" level="WARN"/>
<logger name="RocketmqRemoting" level="WARN"/>
参数解读:
remoteHost为logstash的ip
port为上篇logstash配置的tcp端口号
customFields中是json格式,appname与logstash的appname相对应,用于创建索引,不同的应用有不同的appname,因为我有很多应用,相当于根据appname来区分应用
总结
基本上就是这样了,是不是很简单呢?
当我们使用log.info() 、log.error()等方法打印日志,日志就会同步输送到elk日志中心来了
我们就可以在kibana上查询日志
配置索引
在这个页面配置我们的索引,以下这些是我已经配置过了的,所以可以直接看到
这索引和我们配置的appname有关系。
我这里是相当于按不同应用和月份建索引了,例如,export-2021.12.23
查询日志
我们可以在Search那里搜索我们想要的日志。