版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yhhyhhyhhyhh/article/details/84443001
springboot-admin:性能指标监控
文章目录
完整代码下载链接:
环境
idea2018,jdk1.8,
springboot版本:springboot1.5.9.RELEASE,
1.springboot-admin原理
1)服务端和客户端:
/** * 1)客户端启动后会实例化RegistrationApplicationListener,listener默认会每隔10s到服务端去注册下,如果已经存在,服务端会refresh(通过/api/applications 接口向服务端心跳检测;服务端通过定时轮询 (每隔10s)客户端的/health接口来对客户端进行心态检测) * 2)在跟服务器注册之前,客户端会先实例化Application信息,获取相应的信息,然后通过restful http post请求跟服务器交互 * 3)服务端代码逻辑:服务器端首先会根据客户端的HealthUrl,通过SHA-1 算法得到客户端的id值,借此区分不同的客户端节点 * 4)获取到客户端id后,从服务端保存的ConcurrentHashMap 对象中,根据id获取客户端状态信息,如果存在状态信息,则refresh或者replace,否则往map中新加客户端信息 * 5)客户端注册到服务端,会由服务端维护一层路由映射,会在路径上添加前缀、客户端id和后缀,默认前缀为:/api/applications 后缀:/** */
2)http请求流程:
/** * http请求流程: * url请求(带有具体的客户端id) -> 经过服务器端路由映射-> 具体节点的访问路径 -> 调用Spring Boot Autuator 监控接口获取应用数据返回显示 */
3)Application信息
Application [id=12e78c6f, name=spring-boot-application, managementUrl=http://192.168.3.2:8083/admin-client1, healthUrl=http://192.168.3.2:8083/admin-client1/health, serviceUrl=http://192.168.3.2:8083/admin-client1]
4)Spring Boot Actuator监控端点:
开启后可以通过http接口直接获取数据
actuator:所有EnPoint的列表,需要加入spring HATEOAS支持
autoconfig:当前应用的所有自动配置
beans:当前应用中所有Bean信息
configprops:当前应用中所有的配置属性
dump:显示当前应用线程状态信息
env:显示当前应用当前环境信息
health:显示当前应用健康状况
info:显示当前应用信息
metrics:显示当前应用的各项指标信息
mappings:显示所有的@RequestMapping映射的路径
shutdown:关闭当前应用(默认关闭)
trace:显示追踪信息(默认最新的http请求)
5)springboot中server和client的配置
server端application.yml:
#基本信息
server:
port: 8080
session-timeout: 60
context-path: /admin-web
#springboot-admin监控
spring:
application:
name: admin
boot:
admin:
url: http://localhost:${server.port}/${server.context-path}
#开启监控访问权限,可以访问所有端点
management:
security:
enabled: false
#显示版本信息
info:
app:
name: "@project.name@" #从pom.xml中获取,pom.xml中需build中加入插件spring-boot-maven-plugin
description: "@project.description@"
version: "@project.version@"
spring-boot-version: "@project.version@"
#跨域设置
#endpoints:
# cors:
# allow-credentials: true
# allowed-methods: *
# allowed-origins: *
spring.boot.admin.monitor.read-timeout
客户端application.yml:
#基本信息
server:
port: 8081
context-path: /admin-client1
#springboot-admin监控的server地址
spring:
boot:
admin:
client:
prefer-ip: true #解决window下无法识别主机名的问题
url: http://localhost:8080/admin-web #服务端的地址
read-timeout: 10000
#开启监控访问权限
management:
security:
enabled: false
#显示版本信息
info:
app:
name: "@project.name@" #从pom.xml中获取,pom.xml中需build中加入插件spring-boot-maven-plugin
description: "@project.description@"
version: "@project.version@"
spring-boot-version: "@project.version@"
2测试
1)客户端注册及定时发请求
2)监控指标