springboot整合elk(Elasticsearch+Logstash+Kibana)

功能介绍

ELK 是软件集合Elasticsearch、Logstash、Kibana的简称,由这三个软件及其相关的组件可以打造大规模日志实时处理系统。

Elasticsearch 是一个基于 Lucene 的、支持全文索引的分布式存储和索引引擎,主要负责将日志索引并存储起来,方便业务方检索查询。

Logstash是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收集、过滤后,转发给 Elasticsearch 进行下一步处理。

Kibana是一个可视化工具,主要负责查询 Elasticsearch 的数据并以可视化的方式展现给业务方,比如各类饼图、直方图、区域图等。

基于对日志的实时分析,可以随时掌握服务的运行状况、统计 PV/UV、发现异常流量、分析用户行为、查看热门站内搜索关键词等。

操作手顺

一、每个单独部署

创建自定义的网络(用于连接到连接到同一网络的其他服务(例如Kibana))

docker network create somenetwork 

1、elasticsearch部署

使用docker命令

docker pull docker.elastic.co/elasticsearch/elasticsearch:6.4.2

创建并启动elasticsearch容器

docker run -p 9200:9200 -p 9300:9300  --name elasticsearch --net somenetwork -d docker.elastic.co/elasticsearch/elasticsearch:6.4.2

通过本地浏览器访问虚拟机地址的9200端口,返回如下内容,则证明elasticsearch部署成功

{
  "name" : "o6ORX7D",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "XhSiS_axRC63-8R0_Pc26Q",
  "version" : {
    "number" : "6.4.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "04711c2",
    "build_date" : "2018-09-26T13:34:09.098244Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

2、logstash部署

使用docker命令

docker pull docker.elastic.co/logstash/logstash:6.4.2

创建并启动logstash容器

docker run  -p 5044:5044 -v /mydata/logstash/pipeline/:/usr/share/logstash/pipeline/ --name=logstash --net somenetwork -d docker.elastic.co/logstash/logstash:6.4.2

注意文件pipeline的映射,在pipeline中需要创建logstash的配置文件logstash.conf,该文件内容如下:

input{
        tcp {
                mode => "server"
                port => 5044
                codec => json_lines
                tags => ["data-http"]
        }
}
output{
        elasticsearch{
                hosts=> ["elasticsearch:9200"]
                index => "data-http-%{+YYYY.MM.dd}"
                }
        stdout{codec => rubydebug}
}

3、kibana部署

使用docker命令

docker pull docker.elastic.co/kibana/kibana:6.4.2

创建并启动容器

docker run -p 5601:5601 --name=kibana --net somenetwork -d docker.elastic.co/kibana/kibana:6.4.2

二、docker-compose一起部署

 

一、第一步在docker上安装ELK

创建目录

mkdir /home/app/myelk

新建docker-compose.yml文件

复制以下内容到新建的docker-compose.yml文件,保存yml文件

version: '3'
services:  
   elasticsearch:    
      image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1
      container_name: elasticsearch7.1.1
      environment:
         - "cluster.name=elasticsearch" #设置集群名称为elasticsearch
         - "discovery.type=single-node" #以单一节点模式启动
         - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
         - TZ=Asia/Shanghai    
      volumes:      
         - /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
         - /mydata/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
      ports:      
         - 9200:9200
         - 9300:9300
   kibana:    
      image: docker.elastic.co/kibana/kibana:7.1.1
      container_name: kibana7.1.1
      links:
         - elasticsearch:es #可以用es这个域名访问elasticsearch服务    
      depends_on:      
         - elasticsearch #kibana在elasticsearch启动之后再启动    
      environment:      
         - "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
         - TZ=Asia/Shanghai    
      ports:      
         - 5601:5601
      restart: always
   logstash:    
      image: docker.elastic.co/logstash/logstash:7.1.1
      container_name: logstash7.1.1
      environment:
         - TZ=Asia/Shanghai
      volumes:
         - /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
      depends_on:
         - elasticsearch  #kibana在elasticsearch启动之后再启动    
      links:      
         - elasticsearch:es #可以用es这个域名访问elasticsearch服务    
      ports:      
         - 9600:9600
         - 5044:5044
      restart: always

保证在新建的目录下,安装elk三大软件

docker-compose up -d

若logstash启动失败,则去/mydata/logstash把logstash.conf改为以下文件格式:

input{
        tcp {
                mode => "server"
                port => 5044
                codec => json_lines
                tags => ["data-http"]
        }
}
filter{
    json{
        source => "message"
        remove_field => ["message"]
    }
}
output{
        elasticsearch{
                hosts=> ["es:9200"]
                index => "data-http-%{+YYYY.MM.dd}"
                }
        stdout{codec => rubydebug}
}

重新启动

docker-compose restart

三、springboot配置

创建logback.xml文件,即可简单集成日志

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />

    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>127.0.0.1:5044</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>

    <root level="INFO">
        <appender-ref ref="LOGSTASH" />
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值