最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

功能強(qiáng)大的TraceId?搭配?ELK使用詳解

 更新時(shí)間:2022年09月21日 12:02:29   作者:一條coding  
這篇文章主要為大家介紹了功能強(qiáng)大的TraceId?搭配?ELK使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

之前寫了一篇關(guān)于 TraceId 的文章:為全局請(qǐng)求添加 TraceId ,看日志再也不懵逼

今天就接著 TraceId 做一些優(yōu)化,如果想快速的定位到問題,就要實(shí)現(xiàn)對(duì)日志的快速搜索,所以本文就引入 ELK 技術(shù)棧。

ELK 是 ES、Logstash、Kibana 的總稱,其核心功能就是實(shí)現(xiàn)數(shù)據(jù)的收集、搜索、可視化。具體功能和使用在本文都會(huì)提到。

需求分析

先分析一下,我們想實(shí)現(xiàn)的核心功能是搜索,必然是用 ES 實(shí)現(xiàn),那問題就轉(zhuǎn)換成如何將日志收集并存儲(chǔ)到 ES。

日志大家都不陌生了,可以在控制臺(tái)打印,也可以存入文件,那能不能直接輸入 ES 呢,好像沒聽說過。

這里就要用到 Logstash 來收集日志,Spring 默認(rèn)的日志框架 Logback 已經(jīng)對(duì)其提供了支持,我們要做的只是編寫配置文件。

Logstash 有個(gè)問題就是非常占用內(nèi)存,所以本文后面會(huì)介紹另一個(gè)比較輕量級(jí)的日志收集工具 FileBeat ,由 Go 語(yǔ)言編寫。

同時(shí)對(duì)于真實(shí)的線上環(huán)境為了保證吞吐量和可靠性,都會(huì)引入 Kafka 進(jìn)行解耦,本文不做演示。

下面就進(jìn)入實(shí)戰(zhàn)部分,搭建一套日志收集與搜索系統(tǒng)。

ES

推薦大家去 elastic 的中文社區(qū)下載 ELK ,速度會(huì)比較快,官網(wǎng)當(dāng)然也是可以的。目前最新版本是8.+,推薦還是下 7.+ 比較穩(wěn)妥,具體版本隨意,但 ELK 的版本要一致。

本文使用 7.14.2 版本。下載下來解壓就行,不廢話。

修改配置文件

進(jìn)入 config 目錄:

# elasticsearch.yml
path.data: /Users/li/programs/elasticsearch-7.14.2/data
path.logs: /Users/li/programs/elasticsearch-7.14.2/logs
ingest.geoip.downloader.enabled: false
# jvm.options
# 如果內(nèi)存夠用也可以不修改
-Xms1g
-Xmx1g

啟動(dòng)

./bin/elasticsearch
[2022-09-13T10:54:10,015][INFO ][o.e.n.Node               ] [LdeMacBook-Pro.mshome.net] started
[2022-09-13T10:54:10,730][INFO ][o.e.l.LicenseService     ] [LdeMacBook-Pro.mshome.net] license [b7a596e6-1b61-4e6d-af2f-7eab70fe693b] mode [basic] - valid

測(cè)試

瀏覽器訪問:http://localhost:9200/

kibana

下面再安裝 ES 的可視化工具,下載地址同上,版本號(hào)同上。

修改配置文件

# kibana.yml
server.port: 5601
server.host: "localhost"
elasticsearch.hosts: ["http://localhost:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN" # 中文

啟動(dòng)

./bin/kibana
[10:56:42.001] [info][status] Kibana is now degraded
[10:56:44.784] [info][status] Kibana is now available (was degraded)

測(cè)試

瀏覽器訪問:http://localhost:5601/

新增數(shù)據(jù)并查詢

PUT /ecommerce/product/1
 {
     "name" : "gaolujie yagao",
     "desc" :  "gaoxiao meibai",
     "price" :  30,
     "producer" :  "gaolujie producer",
     "tags": [ "meibai", "fangzhu" ]
 }
GET /ecommerce/product/1

Logstash

下載地址同上,版本號(hào)同上。

拷貝配置文件 logstash-sample.conf

# logstash-log-boot.conf
input {
  tcp {
    mode => "server"
    host => "127.0.0.1"
    # 通過監(jiān)聽9001端口進(jìn)行采集日志
    port => 9001
    codec => json_lines
  }
}
output {
  elasticsearch {
    # ES的地址
    hosts => ["http://127.0.0.1:9200"]
    # 索引的名稱
    index => "boot-log-collection-%{+YYYY.MM.dd}"
  }
  stdout {
    codec => rubydebug
  }
}

啟動(dòng)

./bin/logstash -f ./config/logstash-log-boot.conf

Logback

OK,到此 ELK 就搭建完了,接下來就是配置 boot 應(yīng)用的日志輸出。logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="LOG_PATTERN"
              value="%d{yyyy-MM-dd} %d{HH:mm:ss.SSS} [%highlight(%-5level)] [%boldYellow(%X{traceId})] [%boldYellow(%thread)] %boldGreen(%logger{36} %F.%L) %msg%n">
    </property>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
        <!-- 控制臺(tái)打印INFO及以上級(jí)別的日志 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>
    <!--    LOGSTASH 日志收集-->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!-- 在logstash啟動(dòng)文件logstash-log-boot.conf中配置的IP地址和端口 -->
        <destination>127.0.0.1:9001</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>
    <root>
        <appender-ref ref="STDOUT"/>
        <!-- 引入LOGSTASH-->
        <appender-ref ref="LOGSTASH" />
    </root>
</configuration>

如果報(bào)LogstashTcpSocketAppender這個(gè)類找不到,需要添加一個(gè)依賴:

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

其實(shí)這個(gè)依賴就是用來網(wǎng)絡(luò)通信的,來傳輸日志。

測(cè)試

這時(shí)啟動(dòng)應(yīng)用,觀看 Logstash 的控制臺(tái),會(huì)跟著打印日志,再打開 ES ,創(chuàng)建我們配置好的查詢索引,神奇的事情發(fā)生了,日志一條一條的展示出來。

再結(jié)合 TraceId 進(jìn)行搜索,簡(jiǎn)直逆天!

Filebeat

同樣是下載 FileBeat 。

修改配置文件

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /Users/li/IdeaProjects/cloud-alibaba/cloud-service-commerce/commerce-user/log/*.log
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 2
setup.kibana:
  host: "localhost:5601"
output.elasticsearch:
  hosts: ["localhost:9200"]
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~

因?yàn)?Filebeat 是基于監(jiān)控日志文件有沒有新增來同步數(shù)據(jù)的,所以需要配置日志文件的目錄。

可以直接輸出到 ES ,也可以輸出到 Logstash 。二選一!

再配置 logback.xml

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件輸出位置-->
        <File>/Users/li/IdeaProjects/cloud-alibaba/cloud-service-commerce/commerce-user/log/user.log</File>
        <encoder>
            <!--[%X{requestId}] 線程id,方便排查日志-->
            <pattern>%date %level [%thread] [%X{requestId}] [%logger{36}.%method\(\):%line] %msg%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 添加.gz 歷史日志會(huì)啟用壓縮 大大縮小日志文件所占空間 -->
            <!--<fileNamePattern>/home/log/stdout.log.%d{yyyy-MM-dd}.log</fileNamePattern>-->
            <fileNamePattern>
                /Users/li/IdeaProjects/cloud-alibaba/cloud-service-commerce/commerce-user/log/user-%d{yyyy-MM-dd}.log
            </fileNamePattern>
            <maxHistory>3</maxHistory><!-- 保留 3 天日志 -->
        </rollingPolicy>
    </appender>
		<root>
        <appender-ref ref="FILE"/>
    </root>

再次啟動(dòng)項(xiàng)目,發(fā)現(xiàn)日志已寫入文件

進(jìn)入 ES 查詢,同樣查詢到日志。

經(jīng)過測(cè)試,F(xiàn)ileBeat 的日志收集延遲時(shí)間要比 Logstash 長(zhǎng),畢竟基于文件進(jìn)行同步,可以理解,而且本身業(yè)務(wù)實(shí)時(shí)性要求不高。

最后

內(nèi)容看著比較多,實(shí)際很容易實(shí)現(xiàn),但真正生產(chǎn)環(huán)境要復(fù)雜的多,還需不斷思考。

以上就是功能強(qiáng)大的TraceId 搭配 ELK使用詳解的詳細(xì)內(nèi)容,更多關(guān)于TraceId 搭配 ELK的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java 進(jìn)制轉(zhuǎn)換的方法

    Java 進(jìn)制轉(zhuǎn)換的方法

    這篇文章介紹了Java 進(jìn)制轉(zhuǎn)換的方法,有需要的朋友可以參考一下
    2013-09-09
  • java中處理socket通信過程中粘包的情況

    java中處理socket通信過程中粘包的情況

    本篇文章主要介紹了java中處理socket通信過程中粘包的情況,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Spring中的底層架構(gòu)核心概念類型轉(zhuǎn)換器詳解

    Spring中的底層架構(gòu)核心概念類型轉(zhuǎn)換器詳解

    這篇文章主要介紹了Spring中的底層架構(gòu)核心概念類型轉(zhuǎn)換器詳解,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • springboot整合shiro的過程詳解

    springboot整合shiro的過程詳解

    Shiro 是一個(gè)強(qiáng)大的簡(jiǎn)單易用的 Java 安全框架,主要用來更便捷的 認(rèn)證,授權(quán),加密,會(huì)話管理,這篇文章給大家詳細(xì)介紹Shiro 工作原理及架構(gòu)圖,通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-10-10
  • Java?Redisson多策略注解限流

    Java?Redisson多策略注解限流

    這篇文章主要介紹了Java?Redisson多策略注解限流,文章使用Redisson的RRateLimiter進(jìn)行限流,詳細(xì)介紹,感興趣的小伙伴可以參考下面文章內(nèi)容
    2022-09-09
  • Java實(shí)現(xiàn)將圖片上傳到webapp路徑下 路徑獲取方式

    Java實(shí)現(xiàn)將圖片上傳到webapp路徑下 路徑獲取方式

    這篇文章主要介紹了Java實(shí)現(xiàn)將圖片上傳到webapp路徑下 路徑獲取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java 微信公眾號(hào)開發(fā)相關(guān)總結(jié)

    Java 微信公眾號(hào)開發(fā)相關(guān)總結(jié)

    公眾號(hào)作為主流的自媒體平臺(tái),有著不少人使用。這次以文本回復(fù)作為案例來講解Java相關(guān)的微信公眾號(hào)開發(fā)
    2021-05-05
  • Java之SpringBoot-Thymeleaf詳情

    Java之SpringBoot-Thymeleaf詳情

    聊Thymeleaf,需要知道為什么到了SpringBoot中就不用JSP了?這跟SpringBoot打包方式有點(diǎn)關(guān)系,SpringBoot項(xiàng)目打包是jar包,下面文章小編就對(duì)此做一個(gè)詳細(xì)介紹,需要的朋友可以參考一下
    2021-09-09
  • jstl EL表達(dá)式遍歷Map的方法

    jstl EL表達(dá)式遍歷Map的方法

    這篇文章主要介紹了jstl EL表達(dá)式遍歷Map的方法的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Spring源碼解析 Bean的實(shí)例化

    Spring源碼解析 Bean的實(shí)例化

    這篇文章主要介紹了Spring源碼解析 Bean的實(shí)例化,文章圍繞主題展開詳細(xì)的內(nèi)容介紹沒具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07

最新評(píng)論

山丹县| 五指山市| 二连浩特市| 虎林市| 安溪县| 珠海市| 英超| 祁门县| 岚皋县| 临洮县| 调兵山市| 鹤庆县| 安远县| 西昌市| 龙口市| 天台县| 延边| 彰化县| 九寨沟县| 太和县| 蒲城县| 年辖:市辖区| 武宣县| 封开县| 四平市| 龙陵县| 松溪县| 阳高县| 娄底市| 辽阳市| 云梦县| 台湾省| 崇仁县| 达孜县| 札达县| 苗栗市| 甘德县| 宿州市| 安达市| 德安县| 同江市|