您现在的位置是:首页 > 文章详情

ELK入门使用-与springboot集成

日期:2018-05-25点击:286

前言

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/ 可以看到响应

{ "name": "ZSedUub", "cluster_name": "elasticsearch", "cluster_uuid": "_pS5AOR4Rf2oGPk5uRKK-A", "version": { "number": "6.2.4", "build_hash": "ccec39f", "build_date": "2018-04-12T20:37:28.497551Z", "build_snapshot": false, "lucene_version": "7.2.1", "minimum_wire_compatibility_version": "5.6.0", "minimum_index_compatibility_version": "5.0.0" }, "tagline": "You Know, for Search" }

安装Kibana

官网下载对应平台的安装包。然后,解压。
启动:

./bin/kibana

浏览器访问: http://localhost:5601

安装logstash

官网下载对应平台的安装包。然后,解压。

这里采用压缩包的方式,当然也可以使用系统安装包,比如

//ubuntu sudo apt-get update && sudo apt-get install logstash

centos

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 在/etc/yum.repos.d/ 新建logstash.repo [logstash-6.x] name=Elastic repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md sudo yum install logstash 

甚至docker。

修改ruby仓库地址为中国:编辑Gemfile

修改为source "https://gems.ruby-china.org/"

启动: bin/logstash -e 'input { stdin { } } output { stdout {} }'

这是一个交互式输入,你输入的内容将被当做message收集起来。

test { "message" => "test", "@version" => "1", "@timestamp" => 2018-05-26T14:29:09.212Z, "host" => "ryan-900X5L" } 

到这里就算安装成功了。

遇到的问题,

Unsupported platform: x86_64-linux

原因是Java9不支持,卸载Java9即可。

安装logstash-codec-json_lines插件

ryan@ryan-900X5L:~/apps/logstash-6.2.4$ ./bin/logstash-plugin install logstash-codec-json_lines Validating logstash-codec-json_lines Installing logstash-codec-json_lines Installation successful

接下来,我们直接编写我们springboot需要的配置方案,新建config/logstash-sample.conf

input { tcp { port => 4560 codec => json_lines } } output{ elasticsearch { hosts => ["localhost:9200"] index => "%{[appName]}-%{+YYYY.MM.dd}" #用一个项目名称来做索引 } stdout { codec => rubydebug } }
  • 4560 是logstash接收数据的端口
  • codec => json_lines是一个json解析器,接收json的数据。这个要装 logstash-codec-json_lines 插件
  • ouput elasticsearch指向我们安装的地址
  • stdout会打印收到的消息,调试用

启动:

./bin/logstash -f config/logstash-sample.conf 

新建一个springboot项目

项目地址: https://github.com/Ryan-Miao/springboot-with-elk

pom

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <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> </project> 

新建启动类

 @SpringBootApplication public class SpringbootWithElkApplication implements CommandLineRunner { public static void main(String[] args) { SpringApplication.run(SpringbootWithElkApplication.class, args); } @Override public void run(String... args) throws Exception { Logger logger = LoggerFactory.getLogger(SpringbootWithElkApplication.class); logger.info("测试log"); for (int i = 0; i < 10; i++) { logger.error("something wrong. id={}; name=Ryan-{};", i, i); } } }

在resources下新建logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration> <configuration> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>localhost:4560</destination> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" /> </appender> <include resource="org/springframework/boot/logging/logback/base.xml"/> <root level="INFO"> <appender-ref ref="LOGSTASH" /> <appender-ref ref="CONSOLE" /> </root> </configuration> 

启动。然后就可以观察到,logsash控制台打印我们的日志

{ "@version" => "1", "thread_name" => "restartedMain", "message" => "something wrong. id=9; name=Ryan-9;", "logger_name" => "com.test.springbootwithelk.SpringbootWithElkApplication", "level_value" => 40000, "@timestamp" => 2018-05-26T15:21:05.109Z, "host" => "localhost", "level" => "ERROR", "port" => 34902 }

在kibana- management - index pattern里新建一个pattern,我们就用*吧。创建好了,点击discover。就可以看到我们的日志了

img_27d7c5b80e68071c74051c74eb1be348.png

到这里,hello world完成。当然还要继续高级配置和查询啥的,后面再说。

参考

    关注我的公众号

img_acfe50023e4718b33064273d65e4cd67.jpe
唯有不断学习方能改变! -- Ryan Miao
原文链接:https://yq.aliyun.com/articles/610726
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章