记录一次SpringCloud微服务集成ELK日志管理,docker部署过程

简介:

ELK是一个基于浏览器页面的ElasticSearch 的前段展示工具,也是一个开源和免费的工具,Kibana 可以为Logstash 和ElasticSearch 提供的日志分析友好的web 界面,可以汇总、分析、搜索重要的数据日志。

1ElasticSearch

  (弹性搜索)一个分布式搜索服务器,提供了一个分布式多用户能力的全文搜索引擎,自动发现,索引自动分片,索引副本机制,多数据源,自动搜索负责等功能。

2Logstash

  (日志存储)部署在产生日志的应用服务器上,用于收集日志。是一个开源工具,可以对日子进行收集,过滤,分析,并将其存储以后使用(比如搜索)。

3Kibana

  (日志信息web 展示)是一个基于浏览器的ElasticSearch 的前段展示工具,也是一个开源和免费的工具,可以为ElasticSearch 和Logstash 提供的日志分析进行友好的Web 界面,可以汇总,分析,搜索重要的数据日志。

部署:

1)镜像拉取

  # docker pull elasticsearch:7.14.0

  # docker pull kibana:7.14.0 (kibana必须和elasticsearch版本一致)

  # docker pull logstash:7.14.0

2)启动容器

  ① 先启动 es:

  # docker run --name es -d -p 19200:9200 -p 19300:9300 -e "discovery.type=single-node" elasticsearch:7.14.0

  ② 启动 kibana:

  # docker run -it -d --name kibana --restart=always --link es:es -p 15601:5601 kibana:7.14.0

  进入容器 # docker exec-it kibana bash , 修改配置文件 # vi /config/kibana.yml 修改elasticsearch.hosts中的 ip + port ,重启容器 # docker restart kibana 

  ③ 启动 logstash:

  # docker run -it -p 14560:4560 --name logstash -d logstash:7.14.0

  进入容器 # docker exec-it logstash bash ,进行两次修改。

    1、修改配置文件 # vi /usr/share/logstash/config/logstash.yml 修改elasticsearch.hosts中的 ip + port

    2、修改配置文件 # vi /usr/share/logstash/pipeline/logstash.conf ,替换里面内容    

    input {
      tcp {
        mode => "server"
        port => 4560
        codec => json_lines
      }
    }
    filter{
      date {
        match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"] #匹配timestamp字段
        target => "@timestamp" #将匹配到的数据写到@timestamp字段中
      }

    }
    output {
      elasticsearch {
        action => "index"
        hosts => "192.168.000.000:19200"
        index => "lcbd_log_%{+YYYY.MM.dd}"
        }
    }

    3、 重启容器 # docker restart kibana

3)cloud 项目 logback.xml 编辑

<appender name="log_stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>192.168.0.000:14560</destination>
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"module_name":"lcbd-modules-pos",
"timestamp": "%date{\"yyyy-MM-dd'T'HH:mm:ss,SSSZ\"}",
"log_level":"%level",
"service": "%contextName",
"pid": "${PID:-}",
"thread": "%thread",
"class_name": "%class",
"line_number": "%line",
"message": "%message",
"stack_trace": "%exception{5}",
"elapsed_time": "#asLong{%X{elapsedTime}}"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<root level="info">
<appender-ref ref="log_stash" />
</root>

上一篇:ELK企业级日志分析系统


下一篇:ELK 处理 Spring Boot 日志