<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          極簡教程 | 使用Actuator 實現(xiàn)Spring Boot應(yīng)用監(jiān)控

          共 3054字,需瀏覽 7分鐘

           ·

          2022-02-12 19:29

          我們知道Spring Boot 提供了Actuator組件,方便我們對應(yīng)用程序進(jìn)行監(jiān)控和維護。接下來,就來介紹Actuator到底是什么?如何在Spring Boot項目中快速集成Actuator?


          一、Actuator簡介

          1.Actuator是什么?

          Actuator是Spring Boot提供的應(yīng)用系統(tǒng)監(jiān)控的開源框架,它是Spring Boot體系中非常重要的組件。它可以輕松實現(xiàn)應(yīng)用程序的監(jiān)控治理。支持通過眾多 REST接口、遠(yuǎn)程Shell和JMX收集應(yīng)用的運行情況。


          2.端點(Endpoint)

          Actuator的核心是端點(Endpoint),它用來監(jiān)視、提供應(yīng)用程序的信息,Spring Boot提供的spring-boot-actuator組件中已經(jīng)內(nèi)置了非常多的 Endpoint(health、info、beans、metrics、httptrace、shutdown等),每個端點都可以啟用和禁用。Actuator也允許我們擴展自己的端點。通過JMX或HTTP的形式暴露自定義端點。


          Actuator會將自定義端點的ID默認(rèn)映射到一個帶/actuator前綴的URL。比如,health端點默認(rèn)映射到/actuator/health。這樣就可以通過HTTP的形式獲取自定義端點的數(shù)據(jù)。

          Actuator同時還可以與外部應(yīng)用監(jiān)控系統(tǒng)整合,比如 Prometheus, Graphite, DataDog, Influx, Wavefront, New Relic等。這些系統(tǒng)提供了非常好的儀表盤、圖標(biāo)、分析和告警等功能,使得你可以通過統(tǒng)一的接口輕松的監(jiān)控和管理你的應(yīng)用系統(tǒng)。這對于實施微服務(wù)的中小團隊來說,無疑快速高效的解決方案。


          二、Spring Boot集成Actuator

          在Spring Boot項目中集成Actuator非常簡單,只需要在項目中添加spring-boot-starter-actuator組件,就能自動啟動應(yīng)用監(jiān)控的功能。


          首先,創(chuàng)建一個Spring Boot項目來添加spring-boot-starter-actuator依賴:

          <dependency>    <groupId>org.springframework.bootgroupId>    <artifactId>spring-boot-starter-webartifactId>dependency><dependency>    <groupId>org.springframework.bootgroupId>    <artifactId>spring-boot-starter-actuatorartifactId>dependency>

          上面的示例所示,我們添加了actuator和web兩個組件。spring-boot-starter-actuator除了可以監(jiān)控Web系統(tǒng)外,還可以監(jiān)控后臺服務(wù)等Spring Boot應(yīng)用。


          然后,修改配置文件,配置Actuator端點

          # 打開所有的監(jiān)控點management.endpoints.web.exposure.include=*management.endpoint.health.show-details=always


          最后,啟動項目并在瀏覽器中輸入http://localhost:8080/actuator,我們可以看到返回的是Actuator提供的各種數(shù)據(jù)接口信息。

          Actuator提供了豐富的數(shù)據(jù)接口,包括/health、/env、/metrics等。下面我們請求其中的一個地址/actuator/health,查看接口返回的詳細(xì)信息。

          如圖上圖所示,/health接口返回了系統(tǒng)詳細(xì)的健康狀態(tài)信息,包括系統(tǒng)的狀態(tài)(UP為正常)、磁盤使用情況等信息。


          三、自定義端點

          Spring Boot支持自定義端點,只需要在我們定義的類中使用@Endpoint、@JmxEndpoint、@WebEndpoint等注解,實現(xiàn)對應(yīng)的方法即可定義一個Actuator中的自定義端點。從Spring Boot 2.x版本開始,Actuator支持CRUD(增刪改查)模型,而不是舊的RW(讀/寫)模型。我們可以按照3種策略來自定義:

          • 使用@Endpoint注解,同時支持JMX和HTTP方式。

          • 使用@JmxEndpoint 注解,只支持JMX技術(shù)。

          • 使用@WebEndpoint注解,只支持HTTP。

          編寫自定義端點類很簡單,首先需要在類前面使用@Endpoint注解,然后在類的方法上使用@ReadOperation、@WriteOperation或@DeleteOperation(分別對應(yīng)HTTP中的GET、POST、DELETE)等注解獲取、設(shè)置端點信息。

          下面我們創(chuàng)建一個獲取系統(tǒng)當(dāng)前時間的自定義端點。

          首先,創(chuàng)建自定義端點類SystemTimeEndpoint,使用@Endpoint注解聲明端點ID,同時需要使用@Component注解,將此類交給Spring Boot管理。示例代碼如下:

          /* * 自定義端點類 * @Endpoint //表示這是一個自定義事件端點類 * Endpoint 中有一個id //它是設(shè)置端點的URL路徑 * */@Endpoint(id="systemtime") //端點路徑不要與系統(tǒng)自帶的重合@Componentpublic class SystemTimeEndpoint {    //一般端點都是對象,或者一個json返回的格式,所以通常我們會將端點定義一個MAP的返回形式    //通過ReadOperation    //訪問地址是根據(jù)前綴+ endpoint 的ID    ///actuator/systemtime    private String format = "yyyy-MM-dd HH:mm:ss";    @ReadOperation //顯示監(jiān)控指標(biāo)    public Map<String,Object> info(){        Map<String,Object> info  = new HashMap<>();        info.put("system","數(shù)據(jù)管理服務(wù)");        info.put("memo","系統(tǒng)當(dāng)前時間端點");        info.put("datetime",new SimpleDateFormat(format).format(new Date()));        return info;    }    //動態(tài)修改指標(biāo)    @WriteOperation //動態(tài)修改指標(biāo),是以post方式修改    public void setFormat(String format){        this.format = format;    }}

          上面的示例中,我們通過@Endpoint注解定義一個自定義端點,參數(shù)id為自定義端點的唯一標(biāo)識和訪問路徑,必須唯一不重復(fù)。

          做好這些配置后,就能訪問http://127.0.0.1:8080/actuator/systemtime端點了,如圖下圖所示。

          ? ? ? ?

          最后

          以上,Actuator到底是什么,如何在Spring Boot項目中快速集成Actuator介紹完了。Actuator是Spring Boot 提供的非常重要的應(yīng)用監(jiān)控組件,希望大家能熟悉掌握。后面還會介紹搭建完整的Spring Boot應(yīng)用監(jiān)控平臺。敬請關(guān)注。


          瀏覽 58
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  男人的天堂伊人 | 国产av成人性导航 | 大香蕉色色网 | 91视频强奸乱伦家庭国产 | 丁香花五月激情 |