您好,登錄后才能下訂單哦!
本篇文章為大家展示了 Sleuth與ELK怎樣進行配合使用,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
我們已經(jīng)實現(xiàn)了服務(wù)調(diào)用之間的鏈路追蹤,但是這些日志是分散在各個機器上的,就算出現(xiàn)問題了,我們想快速定位,也得從各個機器把日志整合起來,再去查問題。
這個時候就需要引入日志分析系統(tǒng)了,比如 ELK,可以將多臺服務(wù)器上的日志信息統(tǒng)一收集起來,在出問題的時候我們可以輕松根據(jù) traceId 來搜索出對應(yīng)的請求鏈路信息。
ELK 由三個組件組成:
Elasticsearch 是個開源分布式搜索引擎,它的特點有分布式、零配置、自動發(fā)現(xiàn)、索引自動分片、索引副本機制、restful 風(fēng)格接口、多數(shù)據(jù)源、自動搜索負載等。
Logstash 是一個完全開源的工具,它可以對日志進行收集、分析并存儲以供以后使用。
kibana 是一個開源和免費的工具,它可以為 Logstash 和 ElasticSearch 提供日志分析友好的 Web 界面,可以匯總、分析和搜索重要數(shù)據(jù)日志。
可以通過 logback 來輸出 Json 格式的日志,讓 Logstash 收集存儲到 Elasticsearch 中,然后在 kibana 中查看。想要輸入 Json 格式的數(shù)據(jù)需要加一個依賴,具體代碼如下所示。
<!-- 輸出 Json 格式日志 --><dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>5.2</version></dependency>
然后創(chuàng)建一個 logback-spring.xml 文件。配置 logstash 需要收集的數(shù)據(jù)格式如下:
<!-- Appender to log to file in a JSON format --><appender name="logstash"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE}.json</file><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE}.json.%d{yyyy-MM-dd}.gz</fileNamePattern><maxHistory>7</maxHistory></rollingPolicy><encoderclass="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"><providers><timestamp><timeZone>UTC</timeZone></timestamp><pattern><pattern>{ "severity": "%level", "service": "${springAppName:-}", "trace": "%X{X-B3-TraceId:-}", "span": "%X{X-B3-SpanId:-}", "parent": "%X{X-B3-ParentSpanId:-}", "exportable": "%X{X-Span-Export:-}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "rest": "%message" }</pattern></pattern></providers></encoder></appender>
集成好后就能在輸出的日志目錄中看到有一個以“.json”結(jié)尾的日志文件了,里面的數(shù)據(jù)格式是 Json 形式的,可以直接通過 Logstash 進行收集。
{"@timestamp": "2019-11-30T01:48:32.221+00:00","severity": "DEBUG","service": "fsh-substitution","trace": "41b5a575c26eeea1","span": "41b5a575c26eeea1","parent": "41b5a575c26eeea1","exportable": "false","pid": "12024","thread": "hystrix-fsh-house-10","class": "c.f.a.client.fsh.house.HouseRemoteClient","rest": "[HouseRemoteClient#hosueInfo] <--- END HTTP (796-byte body)"}
日志收集存入 ElasticSearch 之后,就可以用 Kibana 進行展示。需要排查某個請求的問題時,直接根據(jù) traceid 搜索,就可以把整個請求鏈路相關(guān)的日志信息查詢出來。
上述內(nèi)容就是 Sleuth與ELK怎樣進行配合使用,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。