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 可以看到日志信息立马就出来了