springboot集成ELK

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

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

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

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

ELK下载安装
可以去官网分别下载安装:Past Releases of Elastic Stack Software | Elastic(我这里下载的elasticsearch-6.8.14 ])
需要提前安装JDK1.8。

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

1. Elasticsearch

下载地址: Past Releases of Elastic Stack Software | Elastic
# 解压
tar -zxvf elasticsearch-6.8.14.tar.gz
# 切换目录
cd elasticsearch-6.8.14/
修改配置文件 config/elasticsearch.yml

network.host: 192.168.37.189
http.port: 9200
启动es

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

1、root不能启动,就新建其他账号  

2、elasticsearch报错Exception BindTransportException[Failed to bind to [9300-9400]]

 解决办法:进入 config目录下 修改 

 vim elasticsearch.yml

 springboot集成ELK

network.host设置为 0.0.0.0 即可外网访问。

3、ElasticSearch启动报错,bootstrap checks failed

切换到root用户

编辑 /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
此文件修改后需要重新登录用户,才会生效
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p

重新启动,成功。也可以编写脚本,把命令放进去
bin/elasticsearch -d

4、如果新用户访问权限不足,记得使用root修改es文件的访问权限

 ./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

下载地址:Past Releases of Elastic Stack Software | Elastic

# 解压
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 {
    port => 9012
    #格式json
    codec => json_lines
  }
}
filter {
  #过滤器,根据需要填写
}
output {
  stdout {
    codec => rubydebug
  }
  elasticsearch {
    action => "index"
    #这里是es的地址,多个es要写成数组的形式
    hosts  => "192.168.1.100:9010"
    #用于kibana过滤,可以填项目名称
    index  => "applog"
  }
}

启动

./bin/logstash -f logstash.conf

后台启动 也可以编写脚本,把下面的命令放进去 

nohup ./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

下载地址:Past Releases of Elastic Stack Software | Elastic
# 解压
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

后台启动,可以编写成脚本

nohup ./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"

springboot集成ELK

回到Discover,大功告成!

查询过滤 level:"ERROR"  and  module_name:"app-server"

springboot集成ELK

本文档大部分是参考的下面的地址。有一部分是我做过了修改,本文只做参考,

参考链接:https://blog.csdn.net/papima/article/details/90670110

上一篇:ELK 日志分析系统概述及部署


下一篇:【ELK技术栈】详解 SpringBoot 集成 ElasticSearch 之项目实战:关于索引的API操作、关于文档的API操作