elasticsearch + logstash + kibana
使用logstash收集日志,将日志输出到elasticsearch后,通过kibana作可视化查询
以windows环境为例
准备以下安装包
elasticsearch-7.16.2
logstash-7.16.2
kibana-7.16.2
1.启动elasticsearch
解压elasticsearch-7.16.2
进入bin目录,运行elasticsearch.bat,默认启动端口为9200
启动完成后,访问localhost:9200测试是否启动成功
返回集群名称、版本等信息说明启动成功
2.启动kibana
解压kibana-7.16.2
进入bin目录,运行kibana.bat,默认连接es地址为localhost:9200,默认启动端口为5601
启动完成后,访问localhost:5601
进入上图页面即启动成功
3.启动logstash
解压logstash-7.16.2
复制一份config文件夹下的logstash-sample.conf,命名为logstash.conf
修改其中的配置
input {
tcp {
host => "0.0.0.0"
port => 5044
mode => "server"
codec => json_lines
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "elk-demo-log-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
以上文件配置了一个input,即从哪里取数据,使用tcp协议,将logstash作为一个服务,端口为5044,编码格式为json,定义了一个output,表示将数据输出到哪里,配置一个elasticsearch,指定es服务器与索引名,使用日志的年月日作为索引名。
指定配置文件启动logstash
.\bin\logstash.bat -f .\config\logstash.conf
ELK都启动完成后,建立一个SpringBoot项目作为日志数据源
pom文件中加入logstash依赖
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.3</version>
</dependency>
建立一个控制器打印一些日志
@RestController
@RequestMapping
public class Api {
Logger log = LoggerFactory.getLogger(Api.class);
@GetMapping("/api")
public String api(String str) {
log.info(str);
return str;
}
}
调几次/api接口打印一些日志
访问localhost:5601进入kibana
选择Discover菜单
在上方输入KQL语句查询某个时间段的日志,可以看到ES中加进来了三条刚刚发送的日志doc
左边Available fields可以加进来显示的字段,左上的Selected fields为选择展示的字段。