上文已经日志打印在了 springboot 控制台,接下来需要 logstash 将日志解析,并传入 elasticsearch。下文将介绍如何配置日志收集。
一.集成 springboot
1.修改 pom 文件
<!-- logback 推送日志文件到logstash --> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.5</version> </dependency>
复制代码
2.修改 logstash.xml
1.连接 logstash
在原有的 logstash.xml 的添加以下代码,连接 logstash 中间件。详细解析见下文注释。
<!--logstash配置--> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <!--logstaship地址--> <destination>192.168.xx.xx:5000</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "logLevel": "%level", "serviceName": "${springAppName:-}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "rest": "%message" } </pattern> </pattern> </providers> </encoder> <!--<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>--> </appender>
复制代码
注意:<destination>192.168.xx.xx:5000</destination>中 ip 为 logstash 服务器的 ip,端口号是向 logstash 发送请求的端口(需要与下文 logstash 监控配置相同),随便指定,但端口不能被占用,并开启防火墙。
2.激活上文配置
需要在 logstash.xml 添加以下配置,使连接信息生效。
<root level="info"> <appender-ref ref="CONSOLE" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="LOGSTASH"/> </root>
复制代码
注意:<appender-ref ref="LOGSTASH"/> 一定要配置 否则无法输出。
3.修改 application.yml
指定 logstash.xml 需要的配置,不多说。
二.测试连接配置 logstash
1.新增连接配置
在/logstash/bin 中新建 log_to_es.conf,新增以下配置。
//获取从springboot传来的数据input{ tcp { mode => "server" host => "0.0.0.0" port => 5000 监控spring boot发来的请求 与spring boot中端口号相同 且不能有其他端口占用 codec => json_lines }}//将数据向elasticsearch输出output{ elasticsearch{ hosts=>["192.168.xx.xx:9200"] es地址 index => "index-%{+YYYY.MM.dd}" 索引名称 } stdout{codec => rubydebug}}
复制代码
2.修改 logstash 下的 logstash.yml
修改/logstash/config 下的 logstash.yml 为当前服务器的 ip。
http.host: "192.168.xx.xx"
复制代码
3.查看结果
访问 kibana,按照图中点击,访问接口,查看下文红框处,如果出现下文字样,则传输成功。
评论