天天看點

SpringCloud微服務總結2 ELK日志監控搭建

程式運作避免不了出錯,測試環境時我們可以通過打斷點定位問題。但是上線之後的項目出bug,進行定位時就需要檢視日志。spring cloud進行分布式部署後會有多個微服務,每個微服務都會産生日志,怎麼進行日志分類,按條件索引想要看到的報錯内容呢?現在流行的日志監控系統ELK完美解決這個問題。本文整理了ELK單機版在Linux系統進行搭建,以及springboot将日志關聯到ELK系統。

ELK是由三個工具整合的日志系統(elasticsearch、logstash、kibana)。

Elasticsearch:起到的作用是日志索引,快速根據不同條件找到我們想看到的日志。

Logstash:起到的作用是日志收集,各個微服務将日志關聯到logstash。

kibana:起到的作用是可視化UI界面。檢視日志總歸是有個圖形化界面比較好看實用。

一 、安裝Elasticsearch

  1. 下載下傳,我用的6.4.1版本,新版本沒用過,也沒了解有啥變化,還是穩重求勝比較好。下載下傳位址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-4-1
  2. 解壓縮:
        tar -zxvf elasticsearch-6.4.1.tar.gz -C /usr/local

            這時,/usr/local目錄下就有elasticsearch-6.4.1目錄了

       cd /usr/local/ elasticsearch-6.4.1

     3. 編輯配置檔案并啟動

         vi /config/elasticsearch.yml 修改基本配置(注意的點,:後面跟一個空格。它是yml格式的檔案)

         network.host: 192.168.0.85                  單機配置成本機位址即可

         http.port: 9200                                             端口預設9200

         這時就配置完成,但是它不允許root運作,是以我們建立個帳号來運作它

         useradd elk

         passwd elk

        輸入倆次密碼 回到上級目錄并更改elasticsearch的擁有者:

        chown -R elk elasticsearch-6.4.1

        這時切換到elk使用者,執行

        su elk

       指令完成切換

       cd elasticsearch-6.4.1

       背景運作它,并将啟動日志輸入

       nohup ./bin/elasticsearch &

       檢視elasticsearch運作日志指令

       vi nohup.out   檢視截至到目前日志

       tailf nohup.out    實時檢視運作日志

二 、安裝Logstash

  1. 下載下傳,我用的6.4.1版本,新版本沒用過,也沒了解有啥變化,還是穩重求勝比較好。下載下傳位址:https://www.elastic.co/cn/downloads/past-releases/logstash-6-4-1
  2. 解壓縮:

         tar -zxvf logstash-6.4.1.tar.gz -C /usr/local

         cd /usr/local/logstash-6.4.1/

     3. 編輯配置檔案并啟動

          建立一個配置檔案

          vi config/logstash.conf    (logstash.conf 名字可自定義)

          以下為logstash中基本配置:

input {

    tcp {

        port => "5044"

        codec => "json"

    }

}

output {

    elasticsearch {

        action => "index"

        hosts => ["192.168.195.201:9200"]

        index => "%{[appname]}"

    }

}

         啟動logstash

         nohup ./bin/logstash -f ./config/logstash.conf &

         檢視logstash運作日志指令

         vi nohup.out   檢視截至到目前日志

         tailf nohup.out    實時檢視運作日志

三 、安裝Kibana

  1. 下載下傳,我用的6.4.1版本,新版本沒用過,也沒了解有啥變化,還是穩重求勝比較好。下載下傳位址:https://www.elastic.co/cn/downloads/past-releases/kibana-6-4-1
  2. 解壓縮:
         tar -zxvf kibana-6.4.1-linux-x86_64.tar.gz -C /usr/local/

     3. 編輯配置檔案并啟動

         cd /usr/local/kibna-6.4.10linux-x86_64

         vi config/kibana.yml

              下邊為kinaka中需要配置的

         server.host: "0.0.0.0"

         elasticsearch.url: "http://192.168.0.85:9200"

         elasticsearch.username: "elastic"

         elasticsearch.password: "changeme"

              啟動kibana

              nohup ./bin/kibana &

              檢視kibana運作日志指令

              vi nohup.out   檢視截至到目前日志

              tailf nohup.out    實時檢視運作日志

四、springboot中關聯Logstash日志

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

    <!-- <jmxConfigurator/> -->

    <contextName>logback</contextName>

    <property name="log.path" value="/home/xxx.log" /> <!--存儲日志到伺服器路徑配置 -->

    <property name="log.pattern"

        value="%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID} --- [%15.15t] %-40.40logger{39} : %m%n" />

    <!--輸出到控制台 -->

    <appender name="CONSOLE"

        class="ch.qos.logback.core.ConsoleAppender">

        <!--此日志appender是為開發使用,隻配置最底級别,控制台輸出的日志級别是大于或等于此級别的日志資訊 -->

        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

            <level>info</level>

        </filter>

        <encoder>

            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>

            <!-- 設定字元集 -->

            <charset>UTF-8</charset>

        </encoder>

    </appender>

    <appender name="file"

        class="ch.qos.logback.core.rolling.RollingFileAppender">

        <file>${log.path}</file>

        <filter class="ch.qos.logback.classic.filter.LevelFilter">

            <level>info</level>

            <onMatch>ACCEPT</onMatch>

            <onMismatch>DENY</onMismatch>

        </filter>

        <encoder>

            <pattern>${log.pattern}</pattern>

        </encoder>

        <rollingPolicy

            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <fileNamePattern>info-%d{yyyy-MM-dd}-%i.log

            </fileNamePattern>

            <timeBasedFileNamingAndTriggeringPolicy

                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

                <maxFileSize>10MB</maxFileSize>

            </timeBasedFileNamingAndTriggeringPolicy>

            <maxHistory>10</maxHistory>

        </rollingPolicy>

    </appender>

 <!--下邊socket關聯logstash -->  

 <appender name="socket"

        class="net.logstash.logback.appender.LogstashSocketAppender">

        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

            <level>INFO</level>

        </filter>

        <host>192.168.0.85</host>

        <port>5044</port>

        <customFields>{"appname":"appname"}</customFields>

    </appender>

    <appender name="LOGSTASH"

        class="net.logstash.logback.appender.LogstashTcpSocketAppender">

        <destination>192.168.0.85:5044</destination>

        <!-- encoder必須配置,有多種可選 -->

        <encoder charset="UTF-8"

            class="net.logstash.logback.encoder.LogstashEncoder">

            <customFields>{"appname":"appname"}</customFields>

        </encoder>

        <connectionStrategy>

            <roundRobin>

                <connectionTTL>5 minutes</connectionTTL>

            </roundRobin>

        </connectionStrategy>

    </appender>

    <root level="info">

        <!-- <appender-ref ref="file" /> -->

        <appender-ref ref="socket" />

         <appender-ref ref="LOGSTASH" />

    </root>

</configuration>

注:此文章僅供參考!!!如有不足之處或合理化建議還請提出,謝謝!

繼續閱讀