ELK入门使用-与springboot集成
目录
前言
什么是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集成相关推荐
- Activiti 快速入门教程:SpringBoot 集成 Activiti6 + Activiti Modeler 流程配置可视化
Activiti 快速入门教程:SpringBoot 集成 Activiti6 + Activiti Modeler 流程配置可视化 7大服务与核心表 23张表概览 7大核心服务(重要) 加依赖 内部 ...
- SpringBoot集成beetl模板快速入门
SpringBoot集成beetl模板快速入门 本文引导 SpringBoot集成beetl模板快速入门 创建SpringBoot工程(idea) 新建工程 修改maven本地仓库位置 配置Sprin ...
- SpringBoot入门到精通-SpringBoot启动流程(七)
定义自己的starter SpringBoot入门到精通-Spring的注解编程(一) SpringBoot入门到精通-SpringBoot入门(二) SpringBoot入门到精通-Spring的基 ...
- 【Springboot学习】SpringBoot集成Shiro前后端分离使用redis做缓存【个人博客搭建】
shiro-redis 目录 shiro-redis 下载 shiro-core/jedis 版本对比图 使用前 如何配置? 设置文件 Redis 独立 Redis哨兵 Redis 集群 Spring ...
- Springboot 集成Springcloud gateway的入门
最近做项目使用到了springcloude gateway作为网关,因此在此记录下springcloud gateway的入门操作,后续再将源码解读写出来,先立个flag. 回归正题,Springcl ...
- springboot md5加密_SpringSecurity入门-SpringBoot集成SpringSecurity
前言 至今Java能够如此的火爆Spring做出了很大的贡献,它的出现让Java程序的编写更为简单灵活,而Spring如今也形成了自己的生态圈,今天咱们探讨的是Spring旗下的一个款认证工具:Spr ...
- springboot 集成 ELK 示例
一 环境准备 windows 系统 springboot:2.1.3.RELEASE elasticsearch: 6.2.2 kibana: 6.2.2 logstash: 6.2.2 Java:1 ...
- SpringBoot集成security(1)|(security入门)
SpringBoot集成security(1)|(security入门) 文章目录 SpringBoot集成security(1)|(security入门) @[TOC] 前言 一.Spring Se ...
- SpringBoot集成RabbitMQ消息队列搭建与ACK消息确认入门
1.Windows下安装RabbitMQ的步骤详解+图解(erlang+RabbitMQ) 2.SpringBoot集成RabbitMQ参考文章 1.RabbitMQ介绍 RabbitMQ是实现AMQ ...
- ES入门学习:ElasticSearch、Kibana、ik分词器的安装、简单使用及SpringBoot集成
前言 es是采用Java语言开发,因此,想要安装运行es需要提前准备好jdk环境,关于linux配置jdk在前文linux配置jdk 本文主要介绍es的安装.kibana的安装和简单使用及ik分词器的 ...
最新文章
- 深入解析JavaScript 原型继承
- python数据分析年薪百万_如何成为一个年薪 50 万以上的数据分析师?
- 积极打破消极思维模式
- 机器学习理论引导 电子版_机器学习理论篇1:机器学习的数学基础(2)
- Java JUC工具类--ForkJoin
- C++ 採集音频流(PCM裸流)实现录音功能
- (8)Node.js 模块介绍
- python 连接mysql_使用MySQL
- maven学习(3)
- HTML设置不生效的原因,CSS中hover出现不生效的几个原因 ?
- linux java占用199%,linux分区使用率过高又查询不到被哪些文件占用的问题
- (转)知识图谱如何让智能金融“变魔术”
- ip纯真数据库查询国家省市名称
- linux和win双系统删除,Windows+Linux 双系统的卸载方法
- Windows下安装Oracle数据库及遇到的问题解决方法(找不到WFMLRSVCApp.ear文件)
- u盘电视测试软件,智能电视无法识别U盘里的APK文件?当贝市场教你搞定
- 智能家庭监控开发框架
- 研究生如何安排三年时间
- 晨光BT——强大的资源分享网站
- 人工智能顶级会议与期刊总结
热门文章
- php 连接新浪云mysql_将php代码部署到新浪云测试(简单方法,包含数据库的连接)...
- css3中translateY、translateX的使用
- from_tensor_slices()
- PTA 哈利·波特的考试(Floyd计算最短距离并输出路径)
- java类定义初成员变量赋值_Java中成员变量初始化
- Java成员变量初始化顺序
- 统计学期末重点讲解(医学)
- 线性函数、非线性函数与线性回归的区别
- 福大软工1816 · 第四次作业 - 团队展示
- 阿里巴巴国际站外贸邮开通的操作步骤