本文已参与「新人创作礼」活动,一起开启掘金创作之路。
elk系统搭建过程 本节不做过多累赘 后续如果有需要 再补。直接对接项目日志分析。
先建立springBoot项目,当然传统的ssm也是可以的,这里为了简单,用springBoot 做例子。
pom.xml 添加logstash依赖支持 完整的依赖如下
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.1</version>
</dependency>
</dependencies>
在resource下新建logback-spring.xml文件 内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>127.0.0.1:9601</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" >
<customFields>{"appname":"springboot-log-elk"}</customFields>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="LOGSTASH" />
</root>
</configuration>
注意了,解释一下配置。
127.0.0.1:9601:这个是你自己向logstash提供的源文件,也就是项目的日志输出地址,输出端口号
{"appname":"springboot-log-elk"}:这个东西会在logstash中的建立的 .conf文件中用到,也就是 elasticsearch中的索引前缀。后面会用到
在application.properties中 加入logback-spring.xml配置
logging:
config: classpath:logback-spring.xml
在项目中建立测试类 代码如下
@RunWith(SpringRunner.class)
@SpringBootTest
public class ElkApplicationTests {
private final static Logger log = LoggerFactory.getLogger(Test.class);
@Before
public void setUp() {
}
@org.junit.Test
public void test() {
log.warn("我是一个warn");
log.info("我是一个info");
log.error("我是一个error");
log.trace("我是一个trace");
log.debug("我是一个debug");
}
}
好了 这样 简单的springBoot就搭建起来了。再来说elk.
启动顺序 elasticsearch ,如果elasticsearch版本高于5.x elasticsearch 的elasticsearch-head 插件安装比较复杂。在启动elasticsearch-head
之后,需要做一个配置了。在logstash下自己建立的 .conf 文件中作如下改动
input {
tcp {
host => "localhost"
port => 9601
mode => "server"
tags => ["tags"]
codec => json_lines
}
}
output {
elasticsearch {
hosts => "127.0.0.1:9200"
index => "%{[appname]}-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug}
}
切记 这里的input 为logstash的输入源,也就是日志的输出源,所以host是localhost,port为自己配置的9601
output 为logstash的输出源,即elasticsearch 的输入源 所以hosts要与elasticsearch.yml中设置的一样
这里所提到的appname就是在logback-spring.xml中配置的那个名称 ,配置完毕
启动logstash 这里的启动我是在cmd 命令行里启动的 服务启动也是可以的 区别在于 cmd启动 可以直接看 输出内容 系统服务启动 就需要去logstash下的log文件夹下查找日志。
最后启动kibana
这样elk系统启动 启动springBoot
执行test,这个时候logstash的控制台会输出东西,log的日志里也可以查看
类似于
这时 在elasticsearch中查看
发现了一致 这时我们打开kibana界面 添加 Index Patterns 取名为 springboot-log* 创建
在discover中选择刚刚的springboot-log*
会出现以下界面
则表示成功。搜索 我是一个info
命中
搭建对接成功。到此结束。
不喜勿喷,如有瑕疵,请多指教,谢谢。