当前位置:   article > 正文

Spring Actuator 与 Spring boot Admin_springacurator springbootadmin

springacurator springbootadmin

一.Springboot监控中心概述

1.什么是Springboot监控中心
  • 针对于微服务的服务状态、Http请求资源监控
  • 简述:针对微服务服务器监控,服务器内存变化(堆内存变化、线程变化、日志管理等),检测服务配置连接地址是否可用(比如MySQL等的连接可能是懒加载形式的,加载的时候没有报错,当访问的时候才会报错,实现的原理采用模拟访问)、统计现在有多少bean(是Spring容器中的bean)、统计SpringMVCRequestMapping(即统计http接口)
  • Actuator监控应用(没有界面,返回json格式)
  • AdminUI底层使用Actuator监控应用实现可视化界面
  • 应用场景:生产环境
  • 默认情况下:监控中心提供三个接口的权限【/actuator,/actuator/info,/actuator/health】,需要添加properties中的启动端点配置
  • Springboot2.0之后,监控中心接口地址发生了变化
    • 在2.0之前接口,没有/actuator/作为前缀,比如/actuator/beans在2.0之前就是/beans
2.为什么要用监控中心
  • Actuator是Springboot的一个附加功能,可帮助你在应用程序生产环境时监控和管理应用程序。可以使用HTTP的各种请求来监管,审计,收集应用的运行情况,特别对于微服务管理十分有意义,缺点:没有可视化界面

二.监控中心之搭建Actuator监控中心

1.项目搭建
  • 引入依赖[build.gradle]

    //web组件依赖
    implementation 'org.springframework.boot:spring-boot-starter-web'
    //Actuator依赖
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    
    • 1
    • 2
    • 3
    • 4
  • 配置文件[application.yml]

    # 通过下面的配置启动所有的监控端点,默认情况下这些断点是禁用的[启动项目的时候监控的端点]
    management:
    	endpoints:
    		web:
    			exposure:
    				include: *
    #在properties中是management.endpoints.web.exposure.include=*
    
    spring:
    	profiles:
    		active:prod
    	datasource:
    		driver-class-name:com.mysql.jdbc.Driver
    		url:jdbc:mysql://127.0.0.1:3306/test
    		username:root
    		password:root
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 运行效果如下,只有REST方式访问形式

在这里插入图片描述

三.SpringbootActuator监控接口

1.注意事项
  • 如果mysql账号或密码错误,在项目启动的时候是不会报错的(底层采用了懒加载的机制),可以使用/actuator/health进行检测
2.Actuator常用访问路径

通过actuator/+端点名获取相应的信息

路径作用
/actuator/beans显示应用程序中所有Springbean的完成列表
/actuator/configprops显示所有配置信息
/actuator/env陈列所有的环境变量
/actuator/mappings显示所有@RequestMapping url整理列表
/actuator/health显示应用程序运行状况信息,up表示成功,down失败
/actuator/info查看自定义应用信息【相当于在配置文件中配置info开头的配置信息】
  • 当访问/actuator/health检测服务器配置返回为down时,表示相关配置信息有错误,为up时表示配置信息都可以跑通【原理:实际就是读取配置文件,模拟发送信息访问】

  • 当访问/actuator/configprops显示系统的所有配置信息

  • 当访问/actuator/info是查看自定义应用信息,在配置文件中配置的info开头的配置信息,如:

    • 添加properties信息

      info.name=jack
      
      • 1
    • 访问/actuator/info获得的返回信息

      {"name":"jack"}
      
      • 1

四.AdminUI平台原理&AdminUIServer端搭建

1.AdminUI简介
  • AdminUI底层使用Actuator监控应用实现可视化界面
2.AdminUI原理
  • 将所有服务(都继承Actuator监控)的监控中心管理存放在adminUI上

  • 服务分布图

在这里插入图片描述

3.实例代码
  • 应用中添加依赖

    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'de.codecentric:spring-boot-admin-starter-server'
    implementation 'org.jolokia:jolokia-core'
    implementation 'com.googlecode.json-simple:json-simple:1.1'
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 启动文件添加注解

    package com.example.AdminUIServer;
    
    import de.codecentric.boot.admin.server.config.EnableAdminServer;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @EnableAutoConfiguration
    @EnableAdminServer
    public class AdminUiServerApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(AdminUiServerApplication.class, args);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 运行项目截图

在这里插入图片描述

五.SpringBootAdminUIClient使用

1.Client实例代码
  • application.properties[将服务启动在8080端口上,并通过management.endpoints.web.exposure.include=*的设置定义所有端点内容都被暴露,通过spring.boot.admin.client.url=http://localhost:8081的设置定义server的路径]

    spring.boot.admin.client.url=http://localhost:8081
    management.endpoints.web.exposure.include=*
    server.port=8080
    
    • 1
    • 2
    • 3
  • build.gradle引入admin-starter-client和starter-actuator

    plugins {
       id 'org.springframework.boot' version '2.1.3.RELEASE'
       id 'java'
    }
    
    apply plugin: 'io.spring.dependency-management'
    
    group = 'com.example'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = '1.8'
    
    repositories {
       mavenCentral()
    }
    
    dependencies {
       implementation 'org.springframework.boot:spring-boot-starter-actuator'
       implementation 'org.springframework.boot:spring-boot-starter-web'
       implementation 'de.codecentric:spring-boot-admin-starter-client:2.1.3'
       testImplementation 'org.springframework.boot:spring-boot-starter-test'
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • application.java启动项目

    package com.example.actuatorDemo;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class ActuatorDemoApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(ActuatorDemoApplication.class, args);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
2.Server实例代码
  • application.properties

    server.port=8081
    
    • 1
  • build.gradle引入spring-boot-admin-starter-server

    plugins {
    	id 'org.springframework.boot' version '2.1.3.RELEASE'
    	id 'java'
    }
    
    apply plugin: 'io.spring.dependency-management'
    
    group = 'com.example'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = '1.8'
    
    repositories {
    	mavenCentral()
    }
    
    ext {
    	set('springBootAdminVersion', '2.1.3')
    }
    
    dependencies {
    	implementation 'org.springframework.boot:spring-boot-starter-actuator'
    	implementation 'org.springframework.boot:spring-boot-starter-web'
    	implementation 'de.codecentric:spring-boot-admin-starter-server'
    	implementation 'de.codecentric:spring-boot-admin-server-ui'
    	testImplementation 'org.springframework.boot:spring-boot-starter-test'
    	testImplementation 'io.projectreactor:reactor-test'
    }
    
    dependencyManagement {
    	imports {
    		mavenBom "de.codecentric:spring-boot-admin-dependencies:${springBootAdminVersion}"
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 启动类上添加@EnableAdminServer注解启动Server

    package com.example.AdminUIServer;
    
    import de.codecentric.boot.admin.server.config.EnableAdminServer;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    @EnableAdminServer
    public class AdminUiServerApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(AdminUiServerApplication.class, args);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
3.运行效果

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/101933?site
推荐阅读
相关标签
  

闽ICP备14008679号