Spring boot with ELK(Elasticsearch + Logstash + Kibana)

本文节选自《Netkiller Java 手札》

5.31. Spring boot with ELK(Elasticsearch + Logstash + Kibana)

将 Spring boot 日志写入 ELK 有多种实现方式,这里仅提供三种方案:

  1. Spring boot -> logback -> Tcp/IP -> logstash -> elasticsearch 这种方式实现非常方便不需要而外包或者软件
  2. Spring boot -> logback -> Redis -> logstash -> elasticsearch 利用 Redis 提供的发布订阅功能将日志投递到 elasticsearch
  3. Spring boot -> logback -> Kafka -> logstash -> elasticsearch Kafka 方法适合大数据的情况。

5.31.1. TCP 方案

logstash 配置

			input {
  tcp {
    host => "172.16.1.16" 
    port => 9250
    mode => "server"
    tags => ["tags"]
    codec => json_lines  //可能需要更新logstash插件
  }
}

output {
 stdout{codec =>rubydebug}
  elasticsearch {
   hosts => ["localhost:9200"]  //这块配置需要带端口号
    flush_size => 1000

  }
}			

Spring boot logback.xml 配置

			<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property resource="properties/logback-variables.properties" /> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
            </pattern>
        </encoder>
    </appender>
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>172.16.1.16:9250</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>

    <!--<appender name="async" class="ch.qos.logback.classic.AsyncAppender">-->
        <!--<appender-ref ref="stash" />-->
    <!--</appender>-->
    
    <root level="info">                    <!-- 设置日志级别 -->
        <appender-ref ref="STDOUT" />
        <appender-ref ref="LOGSTASH" />
    </root>
</configuration>			

5.31.2. Redis 方案

Maven pom.xml 增加 Logback Redis 依赖

			<!-- https://mvnrepository.com/artifact/com.cwbase/logback-redis-appender -->
<dependency>
    <groupId>com.cwbase</groupId>
    <artifactId>logback-redis-appender</artifactId>
    <version>1.1.5</version>
</dependency>			

Spring boot logback.xml 配置

			<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<include resource="org/springframework/boot/logging/logback/defaults.xml" />
	<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
	<property name="type.name" value="test" />
	<appender name="LOGSTASH" class="com.cwbase.logback.RedisAppender">
		<source>spring-application</source>
		<type>${type.name}</type>
		<host>localhost</host>
		<key>logstash:redis</key>
		<tags>test-2</tags>
		<mdc>true</mdc>
		<location>true</location>
		<callerStackIndex>0</callerStackIndex>
		<!--additionalField添加附加字段 用于head插件显示 -->
		<additionalField>
			<key>MyKey</key>
			<value>MyValue</value>
		</additionalField>
		<additionalField>
			<key>MySecondKey</key>
			<value>MyOtherValue</value>
		</additionalField>
	</appender>
	<root level="INFO">
		<appender-ref ref="FILE" />
		<appender-ref ref="LOGSTASH" />
	</root>
</configuration>			

logstash 配置

			input {
    redis {
        host => 'localhost'
        data_type => 'list'
        port => "6379"
        key => 'logstash:redis' #自定义
        type => 'redis-input'   #自定义
    }
}
output {
    elasticsearch {
        host => "localhost" 
        codec => "json"
        protocol => "http"
    }
}			

5.31.3. Kafka 方案

暂时没有机器资源,本章节待续

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2017-08-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT笔记

Tomcat优化之安全配置

默认tomcat是root身份运行的,这样不安全,不要使用root用户启动tomcat。 Java程序与C程序不同,nginx,httpd 使用root用户启动...

3367
来自专栏Aloys的开发之路

彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系

首先用一段通俗易懂但是不是非常专业的话描述一下三者的概念、区别和联系。 Gradle是个构建系统,能够简化你的编译、打包、测试过程。熟悉Java的同学,可以把G...

2046
来自专栏Java帮帮-微信公众号-技术文章全总结

springboot 入门教程(3)-运行原理、关键注解和配置

springboot 入门教程(3)-运行原理、关键注解和配置 摘要: 相信大家接触过springboot以后都觉得使用他搭建一个web很简单,但是为什么他就能...

3664
来自专栏向治洪

maven配置详解

什么是pom?     pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺...

1925
来自专栏云计算教程系列

如何在Ubuntu 14.04上优化Tomcat安装

Tomcat是Java Servlet和JavaServer Pages技术的流行实现。它由Apache Software Foundation根据流行的Apa...

60
来自专栏Java后端技术

Spring+SpringMvc+Mybatis框架集成搭建教程四(项目部署及测试)

(1).点击如下图所示的下拉按钮,弹出Edit Configurations...后点击该项。

593
来自专栏技术之路

Servlet学习之web服务器Tomcat 详解

Web服务器是什么 Web服务器是指驻留于因特网上某种类型计算机的程序。当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件发送到该浏览...

1798
来自专栏Java技术分享

gradle新建工程,多项目依赖,聚合工程

gradle是个非常复杂的工具,从他的完整包80M和72章官方文档就可以看出一二。

3148
来自专栏前端黑板报

Spring Boot 入门

一直想尝试Java-web开发,无奈配置太复杂。就是这个spring-boot也是尝试几次无果。昨天晚上决定再试一次,居然奇迹般的可以运行了。 选择spring...

2077
来自专栏yukong的小专栏

【SpringBoot系列02】SpringBoot之使用Thymeleaf视图模板前言一、目标二、实现三、总结

Thymeleaf 是Java服务端的模板引擎,与传统的JSP不同,前者可以使用浏览器直接打开,因为可以忽略掉拓展属性,相当于打开原生页面,给前端人员也带来一定...

862

扫码关注云+社区