目录

前言
什么是ELK
安装Elasticsearch
安装Kibana
安装logstash
新建一个springboot项目
参考

前言

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-mdsudo 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 => 4560codec => json_lines}
}
output{elasticsearch { hosts => ["localhost:9200"] }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);}@Overridepublic 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。就可以看到我们的日志了

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

参考

  • logstash官网

关注我的公众号

ELK入门使用-与springboot集成相关推荐

  1. Activiti 快速入门教程:SpringBoot 集成 Activiti6 + Activiti Modeler 流程配置可视化

    Activiti 快速入门教程:SpringBoot 集成 Activiti6 + Activiti Modeler 流程配置可视化 7大服务与核心表 23张表概览 7大核心服务(重要) 加依赖 内部 ...

  2. SpringBoot集成beetl模板快速入门

    SpringBoot集成beetl模板快速入门 本文引导 SpringBoot集成beetl模板快速入门 创建SpringBoot工程(idea) 新建工程 修改maven本地仓库位置 配置Sprin ...

  3. SpringBoot入门到精通-SpringBoot启动流程(七)

    定义自己的starter SpringBoot入门到精通-Spring的注解编程(一) SpringBoot入门到精通-SpringBoot入门(二) SpringBoot入门到精通-Spring的基 ...

  4. 【Springboot学习】SpringBoot集成Shiro前后端分离使用redis做缓存【个人博客搭建】

    shiro-redis 目录 shiro-redis 下载 shiro-core/jedis 版本对比图 使用前 如何配置? 设置文件 Redis 独立 Redis哨兵 Redis 集群 Spring ...

  5. Springboot 集成Springcloud gateway的入门

    最近做项目使用到了springcloude gateway作为网关,因此在此记录下springcloud gateway的入门操作,后续再将源码解读写出来,先立个flag. 回归正题,Springcl ...

  6. springboot md5加密_SpringSecurity入门-SpringBoot集成SpringSecurity

    前言 至今Java能够如此的火爆Spring做出了很大的贡献,它的出现让Java程序的编写更为简单灵活,而Spring如今也形成了自己的生态圈,今天咱们探讨的是Spring旗下的一个款认证工具:Spr ...

  7. springboot 集成 ELK 示例

    一 环境准备 windows 系统 springboot:2.1.3.RELEASE elasticsearch: 6.2.2 kibana: 6.2.2 logstash: 6.2.2 Java:1 ...

  8. SpringBoot集成security(1)|(security入门)

    SpringBoot集成security(1)|(security入门) 文章目录 SpringBoot集成security(1)|(security入门) @[TOC] 前言 一.Spring Se ...

  9. SpringBoot集成RabbitMQ消息队列搭建与ACK消息确认入门

    1.Windows下安装RabbitMQ的步骤详解+图解(erlang+RabbitMQ) 2.SpringBoot集成RabbitMQ参考文章 1.RabbitMQ介绍 RabbitMQ是实现AMQ ...

  10. ES入门学习:ElasticSearch、Kibana、ik分词器的安装、简单使用及SpringBoot集成

    前言 es是采用Java语言开发,因此,想要安装运行es需要提前准备好jdk环境,关于linux配置jdk在前文linux配置jdk 本文主要介绍es的安装.kibana的安装和简单使用及ik分词器的 ...

最新文章

  1. 深入解析JavaScript 原型继承
  2. python数据分析年薪百万_如何成为一个年薪 50 万以上的数据分析师?
  3. 积极打破消极思维模式
  4. 机器学习理论引导 电子版_机器学习理论篇1:机器学习的数学基础(2)
  5. Java JUC工具类--ForkJoin
  6. C++ 採集音频流(PCM裸流)实现录音功能
  7. (8)Node.js 模块介绍
  8. python 连接mysql_使用MySQL
  9. maven学习(3)
  10. HTML设置不生效的原因,CSS中hover出现不生效的几个原因 ?
  11. linux java占用199%,linux分区使用率过高又查询不到被哪些文件占用的问题
  12. (转)知识图谱如何让智能金融“变魔术”
  13. ip纯真数据库查询国家省市名称
  14. linux和win双系统删除,Windows+Linux 双系统的卸载方法
  15. Windows下安装Oracle数据库及遇到的问题解决方法(找不到WFMLRSVCApp.ear文件)
  16. u盘电视测试软件,智能电视无法识别U盘里的APK文件?当贝市场教你搞定
  17. 智能家庭监控开发框架
  18. 研究生如何安排三年时间
  19. 晨光BT——强大的资源分享网站
  20. 人工智能顶级会议与期刊总结

热门文章

  1. php 连接新浪云mysql_将php代码部署到新浪云测试(简单方法,包含数据库的连接)...
  2. css3中translateY、translateX的使用
  3. from_tensor_slices()
  4. PTA 哈利·波特的考试(Floyd计算最短距离并输出路径)
  5. java类定义初成员变量赋值_Java中成员变量初始化
  6. Java成员变量初始化顺序
  7. 统计学期末重点讲解(医学)
  8. 线性函数、非线性函数与线性回归的区别
  9. 福大软工1816 · 第四次作业 - 团队展示
  10. 阿里巴巴国际站外贸邮开通的操作步骤