1 依赖文件添加
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.1</version>
</dependency>
2 修改logback.xml文件
<springProperty scope="context" name="appName" source="spring.application.name" defaultValue="no_application_name"/>
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<param name="Encoding" value="UTF-8"/>
<destination>192.168.0.133:5044</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" >
<customFields>{"appName":"${appName}"}</customFields>
</encoder>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
<appender-ref ref="FILE-ERROR"/>
<appender-ref ref="logstash" />
</root>
由于在spring配置文件中配置了,spring.application.name,用此名字当作索引
3 修改docker镜像配置文件
由于sebp/elk中logstash的input的方式默认是filebeat,首先们需要进入elk容器中修改input方式。logstash默认会将/etc/logstash/conf.d/中的配置文件进行整合然后启动
(1)进入docker镜像
docker exec -it bcee23c00898 /bin/bash
(2)进入配置文件目录,编辑文件
cd /etc/logstash/conf.d/
vim 02-beats-input.conf
(3)修改如下:
#input {
# beats {
# port => 5044
# ssl => true
# ssl_certificate => "/etc/pki/tls/certs/logstash-beats.crt"
# ssl_key => "/etc/pki/tls/private/logstash-beats.key"
# }
#}
input {
tcp {
port => 5044
codec => json_lines
}
}
output{
elasticsearch {
hosts => ["localhost:9200"]
index => "%{[appName]}"
}
}
之后启动项目之后,日志就被发送到了logstash中了。
4 进入kibana
访问ip:5601进入到kibana中
直接搜索Pattern或者按照目录点击进去,然后新建索引
之后可以在discover中查找数据
其他问题
在vi/vim中输入方向键却被被转化为A B C D
1 echo “set nocp” >> ~/.vimrc (千万要注意,是>>, 而不是>, 否则把.vimrc清空了, 丢失了之前的内容)
2 source ~/.vimrc
参考文章:
springcloud微服务日志ELK集中处理
Kibana对数据的可视化
微服务下,使用ELK做日志收集及分析
SpringBoot应用整合ELK实现日志收集
springboot向elk写日志实现过程