4ELK 接收日志 · SpringCloud微服务实战 · 看云
导航
上面我们介绍了Logstash 中加载固定位置文件的方式加载日志记录,这种方式在实际部署中也是常用的,应用的log日志一般都是固定的,因此通过这种方式拉去日志到Kibana中即可,在一个大的微服务系统中,应用比较多,因此通过Kibana 排查日志会非常方便。
1. 重新配置logstash
在conf目录下新建logstash-log.conf文件
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "localhost:9200"
index => "fwcloud-logstash-%{+YYYY.MM.dd}"
}
}
cmd 进入bin 目录安装json_lines插件,json_lines是一个json解析器,接收json的数据
输入命令logstash-plugin install logstash-codec-json_lines

然后通过logstash -f ..\config\logstash-log.conf启动logstash
2. 新建应用
下面我们通过新建一个应用来演示通过logback 推送信息给logstash

2.1 maven 依赖
这里我们需要添加logstash-logback-encoder的包,应用将logback 打印出的日志推送到lostash。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.1</version>
</dependency>
</dependencies>
2.2 添加控制层
我们模拟一个接口请求,最终日志也会输出到ELK中
@RestController
@Slf4j
public class TestController {
@GetMapping("/test")
public String test(String test){
log.info("hello,{}",test);
return "hello:"+test;
}
}
2.3 新建启动类
这里启动类比较简单,只需要引入@SpringBootApplication
@SpringBootApplication
public class FwElkApplication {
public static void main(String[] args) {
SpringApplication.run(FwElkApplication.class, args);
}
}
2.4 配置logback
创建logback-spring.xml文件,在文件中主要添加一下内容,设置logstash的地址,并配置LogstashEncoder,详细的logback 可以看源码。
<!--输出到 logstash的 appender-->
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:4560</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<root level="info">
<appender-ref ref="logstash" />
</root>
2.5 启动应用
启动应用之后,我们还需要做一些步骤才能在Kibana 中看到我们的日志信息。
3. 创建 index pattern

4. 通过 Discover 选择我们刚刚生成的索引
可看到我们应用的启动日志已经加载出来了。

我们在浏览器或Postman输入http://localhost:8773/test?test=world等内容
通过Kibana 可以看到日志信息立马就出来了
