SpringCloud深入學習(八)——其他監控

一、Actuator監控

1.1、Actuator簡介

按照慣例,都先簡單做做介紹:

Spring Boot Actuator可以幫助你監控和管理Spring Boot應用,比如健康檢查、審計、統計和HTTP追蹤等。所有的這些特性可以通過JMX或者HTTP endpoints來獲得。

Spring Boot Actuator:健康檢查、審計、統計和監控
其中,springboot-actuator提供了很多系統的監控端點,如下所示:

函數名 描述 是否敏感
autoconfig 顯示一個auto-configuration的報告,該報告展示所有auto-configuration候選者及它們被應用或未被應用的原因 true
beans 顯示一個應用中所有Spring Beans的完整列表 true
configprops 顯示一個所有@ConfigurationProperties的整理列表 true
dump 執行一個線程轉儲 true
env 暴露來自SpringConfigurableEnvironment的屬性 true
health 展示應用的健康信息(當使用一個未認證連接訪問時顯示一個簡單的’status’,使用認證連接訪問則顯示全部信息詳情) false
info 顯示任意的應用信息 false
metrics 展示當前應用的’指標’信息 true
mappings 顯示一個所有@RequestMapping路徑的整理列表 true
shutdown 允許應用以優雅的方式關閉(默認情況下不啓用) true
trace 顯示trace信息(默認爲最新的一些HTTP請求) true

1.2、Actuator相關使用

接下來我們說SpringCloud中怎麼去用這些。
首先我們需要創建一個Springcloud的相關工程,並註冊至註冊中心中。

該監控方式也可用於Springboot項目中。

添加新的依賴pom:

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

完整的依賴文件配置爲:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>cn.linkpower</groupId>
  <artifactId>SpringCloud-Actuator</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>SpringCloud-Actuator</name>
  
  <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.4.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>

  <properties>
		<java.version>1.8</java.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	</properties>

  <!-- 管理依賴 -->
	<dependencyManagement>
		<dependencies>

			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Finchley.M7</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

		</dependencies>
	</dependencyManagement>
	<dependencies>
		<!-- SpringBoot整合Web組件 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- SpringBoot整合eureka客戶端 -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>
		<!-- 加入feign -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>
		<!-- 客戶端健康檢查組件依賴  -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		
	</dependencies>
	<!-- 注意: 這裏必須要添加, 否者各種依賴有問題 -->
	<repositories>
		<repository>
			<id>spring-milestones</id>
			<name>Spring Milestones</name>
			<url>https://repo.spring.io/libs-milestone</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
	</repositories>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

除了引用上述的依賴文件外,我們還需要進行配置文件的編寫,比如註冊至註冊中心,以及安全配置訪問端口等。

###服務啓動端口號
server:
  port: 8888
  
  
###服務名稱(服務註冊到eureka名稱)  
spring:
    application:
        name: springcloud-actuator-demo
    #security:
      #user:
       # name: xiangjiao
        #password: bunana

##feign中使用斷路器,默認是沒有開啓的,需要在配置文件中開啓        
feign:
  hystrix:
    enabled: true

###服務註冊到eureka地址
eureka:
  client:
    registry-fetch-interval-seconds: 20
    #registryFetchIntervalSeconds: 20
    service-url:
       defaultZone: http://localhost:10000/eureka/
  #自己是服務,需要註冊至服務註冊中心上
    register-with-eureka: true
  #如果需要通信,必須運行此服務可以拉去別的服務的註冊信息
    fetch-registry: true
    
  instance:
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}
    #Eureka客戶端向服務端發送心跳的時間間隔,單位爲秒(客戶端告訴服務端自己會按照該規則),默認30
    lease-renewal-interval-in-seconds: 5
    #Eureka服務端在收到最後一次心跳之後等待的時間上限,單位爲秒,超過則剔除(客戶端告訴服務端按照此規則等待自己),默認90
    lease-expiration-duration-in-seconds: 7
    
##增加Actuator相關配置
management.server.port: 8889 ##管理端口調整爲 8889,獨立的端口可以作安全控制
## actuator的訪問路徑(修改訪問路徑,2.0之前默認是/,2.0默認是/actuator)
management.endpoints.web.base-path: /xiangjiao 
#開放所有頁面節點  默認只開啓了health、info兩個節點
management.endpoints.web.exposure.include: "*"
#公開中的所有端點,除去 env
management.endpoints.web.exposure.exclude: "env"
#顯示健康具體信息  默認不會顯示詳細信息  
management.endpoint.health.show-details: always

2.0前後變化很多的,這裏只列出了基本常用配置。
參考博客:《springboot 2.0 運行狀態監控使用 Actuator

其實這時候啓動項目,進行訪問操作就能得到部分數據,但是我們多加幾個類,看其能否實現監控操作。

正常註冊後,我們訪問會出現:
在這裏插入圖片描述
此時我們查看Actuator監控信息。

http://localhost:8889/xiangjiao
在這裏插入圖片描述

單個訪問試試:

http://localhost:8889/xiangjiao/beans
在這裏插入圖片描述

[注:]以上只列出部分截圖!
[問:]management.endpoints.web.exposure.include: “*” 配置後啓動報錯!且項目無法啓動!

採取如下配置:
management.endpoints.web.exposure.include: “*”
management.endpoints.web.exposure.exclude: “env”
一定要求開啓所有配置後,並去除一個不相關的配置即可!
我也不知道原因爲什麼,但源碼中和《Springboot Actuator 官方配置文檔》中也未做相關說明!

參考文獻:《Springboot Actuator 官方配置文檔
[注:]代碼在文章底部提供鏈接下載。

二、Admin監控

我們上面採取的Actuator監控方式,返回的是一個JSON類型的數據值,並不具有高可視化的優勢。
我們可以採取另外一種UI效果的工具進行數據的監控顯示。

2.1、Admin簡介

Spring Boot Admin 是一個管理和監控Spring Boot 應用程序的開源軟件,它針對springboot的actuator接口進行UI美化封裝。

2.2、Admin的配置和使用

既然作爲監控操作,我們玩Admin時,需要先創建一個服務端。

2.3、Admin Server的創建

SpringCloud-Admin-Server的創建:
主要依賴:

<dependency>
	<groupId>de.codecentric</groupId>
	<artifactId>spring-boot-admin-starter-server</artifactId>
	<version>2.1.0</version>
</dependency>

整體依賴:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>cn.linkpower</groupId>
	<artifactId>SpringCloud-Actuator</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>SpringCloud-Actuator</name>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.4.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<java.version>1.8</java.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	</properties>

	<dependencies>
		
		<!-- SpringBoot Admin依賴(ui圖像化監控) -->
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-server</artifactId>
			<version>2.1.0</version>
		</dependency>
		

	</dependencies>
	<!-- 注意: 這裏必須要添加, 否者各種依賴有問題 -->
	<repositories>
		<repository>
			<id>spring-milestones</id>
			<name>Spring Milestones</name>
			<url>https://repo.spring.io/libs-milestone</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
	</repositories>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

在啓動類上新增註解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import de.codecentric.boot.admin.server.config.EnableAdminServer;

@SpringBootApplication
@EnableAdminServer  //開啓admin ui顯示監控信息
public class StartApplication7777 {
	public static void main(String[] args) {
		SpringApplication.run(StartApplication7777.class, args);
	}
}

這裏的demo配置的端口號信息爲:7777

###服務啓動端口號
server.port: 7777

啓動 SpringCloud-Admin-Server 項目,訪問鏈接:localhost:7777

http://localhost:7777
在這裏插入圖片描述

此時的我們,並沒有可以監控的子項目。所以我們需要創建一個能有數據的子項目。

2.4、Admin Client項目的創建

本次的配置,我們依舊使用SpringCloud-Actuator項目進行配置操作。
再原有的項目中我們新增一個依賴文件。

<!-- 添加Client -->
<dependency>
   <groupId>de.codecentric</groupId>
   <artifactId>spring-boot-admin-starter-client</artifactId>
   <version>2.1.0</version>
</dependency>

由於是將 Actuator 的JSON信息以更美觀的UI形式進行展示,我們之前引入的 Actuator 依賴也是比不可或缺的。

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

此時,我們修改原有的配置文件信息。

#admin需要新增下列註解(上報actuator提供的接口數據)
spring.boot.admin.client.url: http://localhost:7777

完整的配置信息,再文章末尾處展示下載地址。
運行項目並註冊至Eureka註冊中心後,我們會發現頁面內容出現變更:
在這裏插入圖片描述
那麼這麼數據我們如何去查看呢?
在這裏插入圖片描述

2.5、參考文章

Spring Boot Admin 2.1.0 全攻略
Spring Boot admin 2.0 詳解

三、代碼下載

單獨的Actuator應用源碼
Admi和Actuator、Eureka結合的案例源碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章