转载请标明出处:

原文首发于https://www.fangzhipeng.com/springboot/2017/07/11/sprinboot25-elk/

本文出自方志朋的博客

这篇文章主要介绍springboot整合elk.

elk 简介

  • Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

  • Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

  • Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

elk下载安装

elk下载地址:https://www.elastic.co/downloads/

建议在 linux上运行,elk在windows上支持得不好,另外需要jdk1.8 的支持,需要提前安装好jdk.

下载完之后: 安装,以logstash为栗子:

cd /usr/local/

mkdir logstash

tar -zxvf logstash-5.3.2.tar.gz

mv logstash-5.3.2 /usr/local/logstash

配置、启动 Elasticsearch

打开Elasticsearch的配置文件:

  1. vim config/elasticsearch.yml

修改配置:

  1. network.host=localhost
  2. network.port=9200

它默认就是这个配置,没有特殊要求,在本地不需要修改。

启动Elasticsearch

  1. ./bin/elasticsearch

启动成功,访问localhost:9200,网页显示:

  1. {
  2. "name" : "56IrTCM",
  3. "cluster_name" : "elasticsearch",
  4. "cluster_uuid" : "e4ja7vS2TIKI1BsggEAa6Q",
  5. "version" : {
  6. "number" : "5.2.2",
  7. "build_hash" : "f9d9b74",
  8. "build_date" : "2017-02-24T17:26:45.835Z",
  9. "build_snapshot" : false,
  10. "lucene_version" : "6.4.1"
  11. },
  12. "tagline" : "You Know, for Search"
  13. }

配置、启动 logstash

在 logstash的主目录下:

  1. vim config/log4j_to_es.conf

修改 log4j_to_es.conf 如下:

  1. input {
  2. log4j {
  3. mode => "server"
  4. host => "localhost"
  5. port => 4560
  6. }
  7. }
  8. filter {
  9. #Only matched data are send to output.
  10. }
  11. output {
  12. elasticsearch {
  13. action => "index" #The operation on ES
  14. hosts => "localhost:9200" #ElasticSearch host, can be array.
  15. index => "applog" #The index to write data to.
  16. }
  17. }

修改完配置后启动:

  1. ./bin/logstash -f config/log4j_to_es.conf

终端显示如下:

访问localhost:9600

  1. {"host":"Pc-20130412.local","version":"5.3.2","http_address":"127.0.0.1:9600","id":"e6bb985c-c688-49a4-
  2. a55b-4d362bb4136f","name":"Pc-20130412.local","build_date":
  3. "2017-04-24T16:32:22Z","build_sha":"242159a5eea55fe213fe5c8
  4. 52d36455e24252c82","build_snapshot":false}

证明logstash启动成功。

配置、启动kibana

到kibana的安装目录:

  1. ./bin/kibana

默认配置即可。

访问localhost:5601,网页显示:

证明启动成功。

创建springboot工程

起步依赖如下:

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter</artifactId>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-logging</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.springframework.boot</groupId>
  14. <artifactId>spring-boot-starter-log4j</artifactId>
  15. <version>1.3.8.RELEASE</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-test</artifactId>
  20. <scope>test</scope>
  21. </dependency>
  22. </dependencies>

log4j的配置,/src/resources/log4j.properties如下:


  1. log4j.rootLogger=INFO,console
  2. # for package com.demo.elk, log would be sent to socket appender.
  3. log4j.logger.com.forezp=DEBUG, socket
  4. # appender socket
  5. log4j.appender.socket=org.apache.log4j.net.SocketAppender
  6. log4j.appender.socket.Port=4560
  7. log4j.appender.socket.RemoteHost=localhost
  8. log4j.appender.socket.layout=org.apache.log4j.PatternLayout
  9. log4j.appender.socket.layout.ConversionPattern=%d [%-5p] [%l] %m%n
  10. log4j.appender.socket.ReconnectionDelay=10000
  11. # appender console
  12. log4j.appender.console=org.apache.log4j.ConsoleAppender
  13. log4j.appender.console.target=System.out
  14. log4j.appender.console.layout=org.apache.log4j.PatternLayout
  15. log4j.appender.console.layout.ConversionPattern=%d [%-5p] [%l] %m%n

打印log测试:

  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest
  3. public class SpringbootElkApplicationTests {
  4. @Test
  5. public void contextLoads() {
  6. }
  7. private Logger logger = Logger.getLogger(getClass());
  8. @Test
  9. public void test() throws Exception {
  10. for(int i=0;i<100;i++) {
  11. logger.info("输出info ");
  12. logger.debug("输出debug+skkkw嗡嗡嗡kw");
  13. logger.error("输出error 嗡嗡嗡我");
  14. }
  15. }
  16. }

在kibana 实时监控日志

打开localhost:5601:

Management=>index pattrns=>add new:

点击discovery:

参考资料

https://my.oschina.net/itblog/blog/547250

源码下载

https://github.com/forezp/SpringBootLearning

优秀文章推荐:




扫码关注公众号有惊喜

(转载本站文章请注明作者和出处 方志朋的博客

SpringBoot非官方教程 | 第二十六篇: sprinboot整合elk,搭建实时日志平台的更多相关文章

  1. (转) SpringBoot非官方教程 | 第二十四篇: springboot整合docker

    这篇文篇介绍,怎么为 springboot程序构建一个Docker镜像.docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的 ...

  2. SpringBoot非官方教程 | 第二十四篇: springboot整合docker

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot24-docker/ 本文出自方志朋的博客 这篇文 ...

  3. SpringBoot非官方教程 | 第二十二篇: 创建含有多module的springboot工程

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springbot22-modules/ 本文出自方志朋的博客 这篇文 ...

  4. SpringBoot非官方教程 | 第二十五篇:2小时学会springboot

    转载请标明出处: http://blog.csdn.net/forezp/article/details/61472783 本文出自方志朋的博客 一.什么是spring boot Takes an o ...

  5. SpringBoot非官方教程 | 第十六篇:用restTemplate消费服务

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot11-restTemplate/ 本文出自方志朋的 ...

  6. SpringBoot非官方教程 | 第二十篇: 处理表单提交

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot-form/ 本文出自方志朋的博客 这篇文件主要介 ...

  7. SpringBoot非官方教程 | 第十九篇: 验证表单信息

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot19/ 本文出自方志朋的博客 这篇文篇主要简述如何 ...

  8. SpringBoot非官方教程 | 第十八篇: 定时任务(Scheduling Tasks)

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot18-scheduling/ 本文出自方志朋的博客 ...

  9. SpringBoot非官方教程 | 第十五篇:Springboot整合RabbitMQ

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot15-rabbitmq/ 本文出自方志朋的博客 这 ...

随机推荐

  1. Nodejs中使用异步流程控制Async

    首先,我们都知道,Node基于事件驱动的异步I/O架构,所谓异步就是非阻塞,说白了就是一个事件执行了,我不必等待它执行完成后我才能执行下一个事件.所以在Node环境中的模块基本都是异步的,上一篇说到我 ...

  2. scss-@each指令

    一.@each指令实例 在@each变量的定义,其中包含的每个项目的列表中的值. 语法: @each $var in <list or map> 语法简要说明如下. $var: 它代表了变 ...

  3. 火狐浏览器 firebug调试不能载入javascript

    用 firebug 调试时:本页面不包含 javascript 原因:火狐浏览器版本高了 解决:下载火狐49,关闭自动更新

  4. CocoaPods管理的项目移植到别人电脑后找不到头文件

    CocoaPods管理的项目移植到别人电脑后找不到头文件 在TARGETS -> Search Paths -> User Header Search Paths 中 写入 ${SRCRO ...

  5. qt打开url

    QDesktopServices::openUrl(QUrl(QLatin1String(“http://blog.const.net.cn“)))

  6. siebel 界面搭建

    Siebel界面的初步搭建都是基于Siebel Tools工具来创建的,其搭建步骤: 1. 首先先创建一个Project项目,点击project--->点 new Record--->输入 ...

  7. 什么是PDM?

    PDM的含义 PDM的中文名称为产品数据管理(Product Data Management). PDM是一门用来管理所有与产品相关信息(包括零件信息.配置.文档.CAD文件.结构.权限信息等)和所有 ...

  8. elenium2学习(十六)-- 富文本(自动发帖)

    前言 富文本编辑框是做web自动化最常见的场景,有很多小伙伴遇到了不知道无从下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了 ...

  9. Selenium2学习(六)-- 定位神器CSS

    前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css ...

  10. rac环境修改除vip外的其他ip地址方法

    官方参考文档(metalink):如何修改集群的公网信息(包括 VIP) (文档 ID 1674442.1) 同事在测试环境测试通过,使用如下方法.如果有疑问,请参照上述文档,写的很详细.1.停止相关 ...