SpringBoot整合ELK日志收集

 

ELK简介
ELK是Elasticsearch+Logstash+Kibana简称

Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在是使用最广的开源搜索引擎之一。

Logstash 简单来说就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端,与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供了很多功能强大的滤网以满足你的各种应用场景。

Kibana 是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图标、表格、地图等,kibana能够很轻易的展示高级数据分析与可视化。

ELK下载安装
可以去官网分别下载安装:https://www.elastic.co/cn/downloads/past-releases#(我这里下载的6.3.1)
需要提前安装JDK1.8。

启动顺序为:Logstash >= Elasticsearch > Kibana

1. Elasticsearch

# 解压
tar -zxvf elasticsearch-6.3.1.tar.gz
# 切换目录
cd elasticsearch-6.3.1/

修改配置文件 config/elasticsearch.yml

network.host: 192.168.37.189
http.port: 9200

启动es

启动的时候会报root权限不够、内存大小不够。报错关键字搜百度很多解决文章

// ./bin/elasticsearch -d 加-d后台运行
./bin/elasticsearch

启动成功,访问192.168.37.189:9200

{
  "name" : "cTP-_7z",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "6tnImaw3RyKHlErGQrtuvw",
  "version" : {
    "number" : "6.3.1",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "eb782d0",
    "build_date" : "2018-06-29T21:59:26.107521Z",
    "build_snapshot" : false,
    "lucene_version" : "7.3.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

2. Logstash

# 解压
tar -zxvf logstash-6.3.1.tar.gz
# 切换目录
cd logstash-6.3.1/

修改配置文件 config/logstash.yml

http.host: "192.168.37.189"

新建配置文件 vim logstash.conf

input {
  tcp {
    #模式选择为server
    mode => "server"
    #ip和端口根据自己情况填写,端口默认4560,对应下文logback.xml里appender中的destination
    host => "192.168.37.189"
    port => 4560
    #格式json
    codec => json_lines
  }
}
filter {
  #过滤器,根据需要填写
}
output {
  elasticsearch {
    action => "index"
    #这里是es的地址,多个es要写成数组的形式
    hosts  => "192.168.37.189:9200"
    #用于kibana过滤,可以填项目名称
    index  => "applog"
  }
}

启动

./bin/logstash -f logstash.conf

访问http://192.168.37.189:9600,成功的话会显示一个JSON串

{
host: "gitlab.example.com",
version: "6.3.1",
http_address: "192.168.37.189:9600",
id: "004101d4-96cd-49c9-81c5-931c7327016e",
name: "gitlab.example.com",
build_date: "2018-06-29T22:43:59Z",
build_sha: "b79493047db01afca1e11c856fe8538d7ecb5787",
build_snapshot: false
}

3. Kibana

# 解压
tar -zxvf kibana-6.3.1-linux-x86_64.tar.gz
# 切换目录
cd kibana-6.3.1-linux-x86_64/

修改配置文件 config/logstash.yml

http.host: "192.168.37.189"
#修改为es的地址
elasticsearch.url: http://192.168.37.189:9200

启动

./bin/kibana

启动成功访问页面:http://192.168.37.189:5601

三、SpringBoot相关

1. pom.xml

<properties>
  <ch.qos.logback.version>1.2.3</ch.qos.logback.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${ch.qos.logback.version}</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${ch.qos.logback.version}</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-access</artifactId>
        <version>${ch.qos.logback.version}</version>
    </dependency>
    <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>5.1</version>
    </dependency>
</dependencies>

2. logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <contextName>logback</contextName>

    <appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.37.189:4560</destination>
        <!-- encoder必须配置,有多种可选 -->
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>
    
    <root level="info">
        <appender-ref ref="stash" />
    </root>
</configuration>

3. Test.java

@RequestMapping("/test1")
    public String test(){
        logger.info("你好啊e");
        logger.warn("This is a warn message!");
        logger.error("This is error message!");
        return "server被调用了!:" +port;
    }

 

四、测试

运行测试用例后回到kibana界面,Management --> Index Patterns,填入Logstash配置中index的值,此处为applog

第二步  此处选择"@timestamp"

回到Discover,大功告成!

 

  • 12
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值