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结合的案例源码

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