微服務下,使用ELK做日志收集及分析


一、使用背景

  目前項目中,采用的是微服務框架,對於日志,采用的是logback的配置,每個微服務的日志,都是通過File的方式存儲在部署的機器上,但是由於日志比較分散,想要檢查各個微服務是否有報錯信息,需要挨個服務去排查,比較麻煩。所以希望通過對日志進行聚合,然后通過監控,能夠快速的找到各個微服務的報錯信息,快速的排查。

二、ELK分析

  對於ELK,主要是分為Elastic Search、Logstash和Kibana三部分:其中Logstash作為日志的匯聚,可以通過input、filter、output三部分,把日志收集、過濾、輸出到Elastic Search中(也可以輸出到文件或其他載體);Elastic Search作為開源的分布式引擎,提供了搜集、分析、存儲數據的功能,采用的是restful接口的風格;Kibana則是作為Elastic Search分析數據的頁面展示,可以進行對日志的分析、匯總、監控和搜索日志用。

  本次使用ELK主要則是作為日志分析場景。

三、ELK部署

  1、Elastic Search安裝

    本次部署的目錄為【/data/deploy/elk】下,首先需要下載,下載命令為:  

# cd /data/deploy/elk
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.tar.gz

    解壓到當前目錄:

# tar -zxvf elasticsearch-6.4.3.tar.gz

    相關配置:

# cd elasticsearch-6.4.3/config
# vim elasticsearch.yml

-- 增加如下內容:
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"

    Elastic Search啟動:由於ES的啟動不能用root賬號直接啟動,需要新創建用戶,然后切換新用戶去啟動,執行命令如下:

-- 創建新用戶及授權
# groupadd elsearch
# useradd elsearch -g elsearch -p elasticsearch
# cd /data/deploy/elk/
# chown -R elsearch:elsearch elasticsearch-6.4.3
-- 切換用戶,啟動
# su elsearch
# cd elasticsearch-6.4.3/bin
# sh elasticsearch &

    啟動過程中,會出現一些報錯信息,如:

    1、max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

    2、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    解決問題(1):將當前用戶的軟硬限制調大。

# vim /etc/security/limits.conf
-- 在后面增加一下配置后,保存退出
es soft nofile 65535
es hard nofile 65537
-- 不需要重啟,重新登錄即生效
-- 查看修改命名是否生效
# ulimit -n 65535
# ulimit -n
-- 結果65535
# ulimit -H -n 65537
# ulimit -H -n
-- 結果65537

    解決問題(2):調大elasticsearch用戶擁有的內存權限

-- 切換到root用戶
# sysctl -w vm.max_map_count=262144
-- 查看修改結果
# sysctl -a|grep vm.max_map_count
-- 結果顯示:vm.max_map_count = 262144

-- 永久生效設置
# vim /etc/sysctl.conf
-- 在文件最后增加以下內容,保存后退出:
vm.max_map_count=262144

    解決以上問題后,再次啟動:

# su - elsearch
# cd /data/deploy/elk/elasticsearch-6.4.3/bin/
# sh elasticsearch &

    啟動成功后,訪問:http://ip:9200,可以有json格式的返回信息,判斷安裝成功。

  2、Kibana的安裝

    下載安裝包:

-- 切換到root用戶
# su
-- 下載
# cd /data/deploy/elk/
# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.2-linux-x86_64.tar.gz

    解壓配置:

# tar -zxvf kibana-6.4.2-linux-x86_64.tar.gz
# cd kibana-6.4.2-linux-x86_64/config/
# vim kibana.yml
-- 增加如下配置:
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"
kibana.index: ".kibana"

    啟動Kibana:

# cd /data/deploy/elk/kibana-6.4.2-linux-x86_64/bin
# sh kibana &

    啟動成功后,訪問http://ip:5601,查看是否啟動成功。

  3、Logstash安裝

    下載安裝包:

-- 切換到root賬號
# su
# cd /data/deploy/elk
# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.2.tar.gz

    解壓配置:

# tar -zxvf logstash-6.4.2.tar.gz
# cd logstash-6.4.2/bin
-- 新增編輯配置文件
# vim logstash.conf
-- 增加以下內容:
input {
    tcp {
        port => 5044
        codec => json_lines
    }
}
output {
    elasticsearch {
        hosts => ["localhost:9200"]
    }
}

    啟動Logstash:

# cd /data/deploy/elk/logstash-6.4.2/bin
# nohup sh logstash -f logstash.conf  &

    查看日志,無報錯信息,默認啟動成功。

四、微服務配置

  在微服務中,需要兩步操作:

  1、pom.xml文件增加依賴

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>5.1</version>
</dependency>

  2、修改logback.xml配置文件

-- 新增appender
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <destination>192.168.11.199:5044</destination>
    <queueSize>1048576</queueSize>
    <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
        <providers>
            <timestamp>
                <timeZone>UTC</timeZone>
            </timestamp>
            <pattern>
                <pattern>
                        {
                        "severity":"%level",
                        "service": "%contextName",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger{40}",
                        "rest": "%message->%ex{full}"
                        }
                </pattern>
            </pattern>
        </providers>
    </encoder>
</appender>

-- <root>節點中,增加:
<appender-ref ref="LOGSTASH" />  

五、Kibana的使用        

  通過以上的配置,基本上ELK和微服務之間,已經配置完成,接下來需要通過在Kibana中創建索引等進行日志的搜索和查看。

  1、創建索引

    可以新建一個全局的索引,【Index pattern】設置為【*】,點擊下一步至完成為止。

  2、日志搜索

    如截圖所示,可以通過Discover和新建的索引,對日志進行詳細的查看,並且可以選擇具體的字段進行查看。在右上角,可以通過選擇不同的時間段,對日志進行查看和搜索。

  3、創建查詢

    如2中截圖所示,可以通過添加filter,對日志進行過濾查詢。然后點擊Save后,可以創建新的查詢。

  4、創建Visualize和Dashboard

    創建完查詢后,可以在Visualize中,創建一個新的圖示,通過查詢進行創建。創建Dashboard,依賴Visualize圖示,進行展示。

    即依賴關系:Dashboard -》 Visualize -》 Search

    在本項目中,Search主要是通過增加了兩個Filter:①service:“ff-watersource” ②severity:“ERROR”,查詢的是微服務為ff-watersource的error級別的日志。然后根據本Search,依次創建Visualize和Dashboard,最終在Dashboard中,可以監控日志信息的頁面為:

    以上,日志聚合分析的實現,就算完成了。

    

 

    

 


免責聲明!

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



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