記錄一次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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM