监控管理对象:程序及状态、日志、服务等
指标:内存、虚拟机、线程请求等
监控的实施:
做监控信息的服务器:获取被监控服务信息并显示
被监控服务:是否启动被监控的配置,被监控的内容的规定
Spring Boot Admin,开源,用于管理,监控SpringBoot应用程序。——客户端注册到服务端,通过HTTP请求方式,服务端定期从客户端获取对应信息,通过UI界面展示对应信息。(非spring官方维护)
Admin服务器:
依赖,需要与spring-boot-----parent版本一致
如何查看:URL:(做监控)服务器端口
被监控服务:
server:
port: 80
spring:
boot:
admin:
client:
#注册地址
url: http://localhost:8080
#指定需要被监控内容
management:
endpoint:
#有关健康指标:如状态...
health: #health为必开项,actuator对外开发多少数据:单一
show-details: always
#其他端点
endpoints:
web:
exposure:
include: "*" # 对web端开放全部端点,控制有关
#actuator对外开发多少数据:全部
enabled-by-default: true #默认true
有关Actuator,通过地点配置与访问,获取端点信息。(client依赖默认有个依赖actuator,利用此jar包可实现外部访问),可通过postman发送访问获取有关actuator的所有信息:http://URL:client端口/actuator
有关暴漏端点形式JMX(JConsole)和Web(页面),JMX端点大多是全是开启,web是大多全关闭
有关端点info端点自定义配置(springboot并没有定义有关):
方式1 :通过配置文件静态信息
info:
#项目有关信息,读取了pom文件
appName: @project.artifactId@
version: @project.version@
#自定义有关内容
author: 自定义作者
方式2:有关动态信息的配置:(记得加成spring组件)
自定义类,实现InfoContributor,在build.withDatail()方法中放入消息
有关health指标(不能自定义静态配置):health指标是有关项目各组件的状态,单个组件up/down影响整个项目
动态配置:(记得加成spring组件)
自定义类实现HealthIndicator接口或继承AbstractHealthIndicator,builder.withDetail()方法添加,builder.status.(Status.UP)(有4中状态,UNKNOWN/UP/DOWN/OUT_OF_SERVICE,)
举例:
boolean condition = true;
if(condition) {
builder.status(Status.UP);
builder.withDetail("runTime", System.currentTimeMillis());
Map infoMap = new HashMap();
infoMap.put("buildTime", "2006");
builder.withDetails(infoMap);
builder.status.(Status.UP)
}else{
builder.status(Status.OUT_OF_SERVICE);
builder.withDetail("");
//builder.down();
}
有关metrics性能指标端点的配置:
模拟:为业务方法,通过形参MeterRegistry的方法做相关配置(实际会在另外运维系统操作)
自定义endpoint的开发:(公司会有专门的业务监控等各自的系统)
通过自定义类:
@Component
//自定义端点名称
@Endpoint(id="pay",enableByDefault = true)
public class PayEndpoint {
@ReadOperation //调用pay端点时调取以下方法
public Object getPay(){
Map payMap = new HashMap();//模拟json数据
payMap.put("level 1","300");//给予返回内容类型相关数据
payMap.put("level 2","291");
payMap.put("level 3","666");
return payMap;
}
}