淺嘗springboot中的Actuator包(一)

在開發中,有時候咱們想知道項目中在本身制定的bean有沒有被註冊上,環境屬性,程序健康指標等等,幸虧springboot已經幫咱們作了這些,咱們能夠經過它所提供Actuator包下提供的13個端點來進行查看,下面就讓一個簡單的demo來簡單看看Actuator提供了哪些東西吧.java

 

先介紹一下開發環境:web

  1. jdk版本是1.8
  2. springboot的版本是1.4.1
  3. 開發工具爲 intellij idea

 

首先,咱們先引入依賴,在項目中引入Acturtor包,添加以下內容spring

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

 

引入包以後,咱們直接啓動項目,會發現日誌增長打印了一些東西,大概以下:json

 

 

 

能夠發現,有13個端點.或者說是訪問路徑,從名字上能夠看出一些端倪,例如: beans(估計是用於查看上下文中全部的bean),health(程序的健康度)等....此次,咱們就先淺淺的測試幾個吧,裏面涉及到內容跟安全,一篇文章介紹不完,數組

 

下面列表,大概描述下13個端點分別是作什麼的瀏覽器

Actuator13個路徑簡單概述

請求方式        安全

路徑 描述
GET /autoconfig 一份自動配置報告,記錄了哪些自動配置經過了,哪些沒經過
GET /configprops 描述屬性配置注入的Bean信息     
GET /beans     應用程序下全部的Bean信息
GET /dump 獲取線程活動快照
GET /env 獲取所有的環境信息
GET /env/{name} 根據名稱獲取特性的環境信息,例如properties下的某個屬性信息
GET /health 獲取應用程序的健康指標
GET /info 獲取應用程序的有info開頭的定製信息
GET /mappings 獲取所有的URL的映射關係
GET /metrics 應用程序的度量信息,例如內存使用量,HTTP請求數
GET /metrics/{name} 獲取指定名稱的應用程序信息
GET /shutdown

關閉應用程序,默認是false,能夠經過endpoints.shutdown.enable=true開啓springboot

GET /trace 獲取HTTP請求的基本信息,例如:請求頭,時間戳等

 

 

 

------------------------------------分割線-------------------------------------服務器

咱們首先測試 /beans 或者/beans.json 路徑,查看上下文中有哪些bean被註冊了app

在瀏覽器輸入 localhost:8080/beans(首先,確認,你沒有更改本地服務器的端口號,若是修改了,對應修改後的端口就行了),會獲得如下內容....

 

PS:由於瀏覽器返回的,太亂了,我格式化了一下JSON,這樣看起來會舒服一些,上面的截圖只是一部分,本身測試會發現有不少內容,這就不截圖了,這只是作一個展現做用.

上圖能夠發現,有不少字段,下面作個表格,列出每一個字段的含義,以及表述

一級目錄有三個字段,分別是context,parent,beans

  1. context:上下文名稱,以及配置環境,端口號
  2. parent: 是否有父類,null表示無
  3. beans: 是個數組,內部包含應用內全部的bean
    1. bean: BeanID
    2. scope: Bean的做用域
    3. type: Bean在項目下的路徑
    4. resource: 資源文件的完整路徑
    5. dependencies: 當前Bean注入的beanID列表
    6. aliases: Bean是否有別名,沒有的話,默認空數組

 

------------------------------------分割線-------------------------------------

接下來,咱們測試一下 /env 或者 /env.json路徑,查看下環境屬性,例如:環境變量,JVM屬性,properties或者yml文件提供的屬性

 

在瀏覽器輸入 localhost:8080/env,會獲得一大堆內容,我也只展現一部分格式化後刪除了一些我我的電腦信息的內容,下面內容會在屬性後面添加註釋,不在單獨列出來講明瞭!!!

 

{
  "profiles": [ //讀取的哪一個環境的文件,
                //能夠在yml或者properties文件內添加 spring.profiles.active=來執行,這裏我指定的是test
    "test"
  ],
  "server.ports": {//服務器的端口號
    "local.server.port": 8081
  },
  "servletContextInitParams": {//servlet初始化的一些值,若是指定了,那麼這裏會顯示
    
  },
  "applicationConfig: [classpath:/application.yml]#test": {//測試環境下指定添加的內容
    "spring.profiles": "test",
    "spring.jackson.generator": true,
    "amazon.bookName": "SpringBoot-test",
    "server.port": 8081
  },
  "applicationConfig: [classpath:/application.yml]": {//yml文件下,通用的一些配置屬性
    "logging.level": "info",
    "logging.org.springframework.web": "info",
    "debug": false,
    "spring.profiles.active": "test"
  },
  "class path resource [userbean.properties]": {//properties文件下,一些配置屬性
    "hexiaowu.name": "hexiaowu",
    "hexiaowu.userAge": "23",
    "hexiaowu.userName": "name",
    "hexiaowu.age": "23"
  }
}

 

從返回的東西,能夠看到,一些系統環境屬性,以及properties或者yml文件內的內容都顯示出來了,PS:原本還有一個systemEnviromment的,我給刪了,涉及到一些信息,不方便展現,見諒,讀者測試的時候,能夠查看本身的.

 

--------------------------------分割線-----------------------------------------

 

經過 /env/{name} 經過屬性名來獲取指定的屬性信息,例如,我要獲取hexiaowu.name對應的value,能夠這麼訪問:http://localhost:8080/env/hexiaowu.name 會獲得如下結果:

{"hexiaowu.name":"hexiaowu"}

 

 

--------------------------------分割線-----------------------------------------

 

最後,咱們測試一下  /configprops或者/configprops.json路徑,來獲取配置屬性注入的Bean信息等,

PS:下面只展現我配置的一些自定義屬性,系統的屬性,這就不展現了

 

訪問如下路徑:http://localhost:8080/configprops.json 或者http://localhost:808/configprops均可以,而後會獲得一些內容,我下面就截取我配置的一些內容:

 

"propertiesVo": {//注入的BeanID
    "prefix": "hexiaowu", //屬性名稱前綴
    "properties": { //屬性名稱以及值,對應Bean內的字段名稱
      "name": "hexiaowu",
      "userName": "name",
      "age": "23",
      "userAge": "23"
    }
  }

 

 

 

以上,就是Actuator包下,13個路徑下的三個,只是簡單的開胃菜跟介紹而已

 

到這,文章就結束了!

以上,均爲本人測試而得出的結果,可能會有出入,或者錯誤,歡迎指正

歡迎轉載,請註明出處跟做者,謝謝!

相關文章
相關標籤/搜索