Springboot集成ELK,ELK初步使用
前言
ELK官方的中文文档写的已经挺好了,为啥还要记录本文?因为我发现,我如果不写下来,过几天就忘记了,而再次捡起来必然还要经历资料查找筛选测试的过程。虽然这个过程很有意义,但并不总是有那么多时间去做。因此,接下来的内容仅仅是我根据查询到的资料,筛选,组装,测试后达到我的目标的一个过程。
什么是ELK
K我最初还以为是Kafka,事实上,ELK平台是一个完整的日志分析解决方案,由这三个开源工具构建而成:Elasticsearch、Logstash、Kibana。
Elasticsearch用于深度搜索和数据分析,它是基于Apache Lucene的分布式开源搜索引擎,无须预先定义数据结构就能动态地对数据进行索引;
Logstash用于日志集中管理,包括从多台服务器上传输和转发日志,并对日志进行丰富和解析,是一个数据管道,提供了大量插件来支持数据的输入和输出处理;
最后是Kibana,提供了强大而美观的数据可视化,Kibana完全使用HTML和Javascript编写,它利用Elasticsearch 的RESTful API来实现其强大的搜索能力,将结果显示位各种震撼的图形提供给最终的用户。
安装Elasticsearch
官网下载对应平台的安装包。
Windows用法比较简单,只要下载后双机bin/elasticsearch.bat就启动成功了. 下面关注linux上的安装使用。
ES不允许root运行,所以,最好我们创建专门的用户来运行。
解压后,运行./bin/elasticsearch
就会启动成功。如果失败,应该是用root启动的,改成普通用户即可。
然后浏览器访问:http://localhost:9200/ 可以看到响应
1 | { |
安装Kibana
官网下载对应平台的安装包。然后,解压。
启动:
1 | ./bin/kibana |
浏览器访问: http://localhost:5601
安装logstash
官网下载对应平台的安装包。然后,解压。
这里采用压缩包的方式,当然也可以使用系统安装包,比如
1 | //ubuntu |
centos
1 | rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch |
甚至docker。
修改ruby仓库地址为中国:编辑Gemfile
修改为source "https://gems.ruby-china.org/"
启动: bin/logstash -e 'input { stdin { } } output { stdout {} }'
这是一个交互式输入,你输入的内容将被当做message收集起来。
1 | test |
到这里就算安装成功了。
遇到的问题,
1 | Unsupported platform: x86_64-linux |
原因是Java9不支持,卸载Java9即可。
安装logstash-codec-json_lines
插件
1 | ryan@ryan-900X5L:~/apps/logstash-6.2.4$ ./bin/logstash-plugin install logstash-codec-json_lines |
接下来,我们直接编写我们springboot需要的配置方案,新建config/logstash-sample.conf
1 | input { |
- 4560 是logstash接收数据的端口
- codec => json_lines是一个json解析器,接收json的数据。这个要装
logstash-codec-json_lines
插件 - ouput elasticsearch指向我们安装的地址
- stdout会打印收到的消息,调试用
启动:
1 | ./bin/logstash -f config/logstash-sample.conf |
<groupId>com.test</groupId>
<artifactId>springboot-with-elk</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-with-elk</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<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>5.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
1 |
|
在resources下新建logback-spring.xml
1 | <?xml version="1.0" encoding="UTF-8"?> |
启动。然后就可以观察到,logsash控制台打印我们的日志
1 | { |
在kibana- management - index pattern里新建一个pattern,我们就用*吧。创建好了,点击discover。就可以看到我们的日志了
到这里,hello world完成。当然还要继续高级配置和查询啥的,后面再说。