关于网站建设与维护的参考文献,金华网络推广公司,成都网站制作的公司,wordpress wp rest api一、SpringBoot Actuator
1.1、简介
未来每一个微服务在云上部署以后#xff0c;我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景#xff0c;使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。 dependencygro…一、SpringBoot Actuator
1.1、简介
未来每一个微服务在云上部署以后我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependency 1.2、1.x与2.x的不同 1.3、如何使用
引入场景访问 http://localhost:8080/actuator/**暴露所有监控信息为HTTP
management:endpoints:enabled-by-default: true #暴露所有端点信息web:exposure:include: * #以web方式暴露endpoint: #开启某个端点的具体配置health:show-details: always
测试
http://localhost:8080/actuator/beans
http://localhost:8080/actuator/configprops
http://localhost:8080/actuator/metrics
http://localhost:8080/actuator/metrics/jvm.gc.pause
http://localhost:8080/actuator/endpointName/detailPath 1.4、可视化
GitHub - codecentric/spring-boot-admin: Admin UI for administration of spring boot applications 二、Actuator Endpoint
2.1、最常使用的端点 ID 描述 auditevents 暴露当前应用程序的审核事件信息。需要一个AuditEventRepository组件。 beans 显示应用程序中所有Spring Bean的完整列表。 caches 暴露可用的缓存。 conditions 显示自动配置的所有条件信息包括匹配或不匹配的原因。 configprops 显示所有ConfigurationProperties。 env 暴露Spring的属性ConfigurableEnvironment flyway 显示已应用的所有Flyway数据库迁移。 需要一个或多个Flyway组件。 health 显示应用程序运行状况信息。 httptrace 显示HTTP跟踪信息默认情况下最近100个HTTP请求-响应。需要一个HttpTraceRepository组件。 info 显示应用程序信息。 integrationgraph 显示Spring integrationgraph 。需要依赖spring-integration-core。 loggers 显示和修改应用程序中日志的配置。 liquibase 显示已应用的所有Liquibase数据库迁移。需要一个或多个Liquibase组件。 metrics 显示当前应用程序的“指标”信息。 mappings 显示所有RequestMapping路径列表。 scheduledtasks 显示应用程序中的计划任务。 sessions 允许从Spring Session支持的会话存储中检索和删除用户会话。需要使用Spring Session的基于Servlet的Web应用程序。 shutdown 使应用程序正常关闭。默认禁用。 startup 显示由ApplicationStartup收集的启动步骤数据。需要使用SpringApplication进行配置BufferingApplicationStartup。 threaddump 执行线程转储。 如果您的应用程序是Web应用程序Spring MVCSpring WebFlux或Jersey则可以使用以下附加端点 ID 描述 heapdump 返回hprof堆转储文件。 jolokia 通过HTTP暴露JMX bean需要引入Jolokia不适用于WebFlux。需要引入依赖jolokia-core。 logfile 返回日志文件的内容如果已设置logging.file.name或logging.file.path属性。支持使用HTTPRange标头来检索部分日志文件的内容。 prometheus 以Prometheus服务器可以抓取的格式公开指标。需要依赖micrometer-registry-prometheus。
最常用的Endpoint
Health监控状况Metrics运行时指标Loggers日志记录2.2、Health Endpoint
健康检查端点我们一般用于在云平台平台会定时的检查应用的健康状况我们就需要Health Endpoint可以为平台返回当前应用的一系列组件健康状况的集合。
重要的几点
health endpoint返回的结果应该是一系列健康检查后的一个汇总报告很多的健康检查默认已经自动配置好了比如数据库、redis等可以很容易的添加自定义的健康检查机制2.3、Metrics Endpoint
提供详细的、层级的、空间指标信息这些信息可以被pull主动推送或者push被动获取方式得到
通过Metrics对接多种监控系统简化核心Metrics开发添加自定义Metrics或者扩展已有Metrics2.4、管理Endpoints
1、开启与禁用Endpoints
默认所有的Endpoint除过shutdown都是开启的。需要开启或者禁用某个Endpoint。配置模式为 management.endpoint.endpointName.enabled true
management:endpoint:beans:enabled: true
或者禁用所有的Endpoint然后手动开启指定的Endpoint
management:endpoints:enabled-by-default: false #关闭所有端点信息web:exposure:include: * #以web方式暴露endpoint:health:show-details: alwaysenabled: trueinfo:enabled: true #手动开启端点beans:enabled: truemetrics:enabled: true 2、暴露Endpoints
支持的暴露方式
HTTP默认只暴露health和info EndpointJMX默认暴露所有Endpoint除过health和info剩下的Endpoint都应该进行保护访问。如果引入SpringSecurity则会默认配置安全访问规则ID JMX Web auditevents Yes No beans Yes No caches Yes No conditions Yes No configprops Yes No env Yes No flyway Yes No health Yes Yes heapdump N/A No httptrace Yes No info Yes Yes integrationgraph Yes No jolokia N/A No logfile N/A No loggers Yes No liquibase Yes No metrics Yes No mappings Yes No prometheus N/A No scheduledtasks Yes No sessions Yes No shutdown Yes No startup Yes No threaddump Yes No 三、定制 Endpoint
3.1、定制 Health 信息
实现接口
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;Component
public class MyHealthIndicator implements HealthIndicator {Overridepublic Health health() {int errorCode check(); // perform some specific health checkif (errorCode ! 0) {return Health.down().withDetail(Error Code, errorCode).build();}return Health.up().build();}}构建Health
Health build Health.down().withDetail(msg, error service).withDetail(code, 500).withException(new RuntimeException()).build();
management:health:enabled: trueshow-details: always #总是显示详细信息。可显示每个模块的状态信息
继承类实现
Component
public class MyComHealthIndicator extends AbstractHealthIndicator {/*** 真实的检查方法* param builder* throws Exception*/Overrideprotected void doHealthCheck(Health.Builder builder) throws Exception {//mongodb。 获取连接进行测试MapString,Object map new HashMap();// 检查完成if(1 2){
// builder.up(); //健康builder.status(Status.UP);map.put(count,1);map.put(ms,100);}else {
// builder.down();builder.status(Status.OUT_OF_SERVICE);map.put(err,连接超时);map.put(ms,3000);}builder.withDetail(code,100).withDetails(map);}
} 3.2、定制info信息
常用两种方式
1、编写配置文件
info:appName: boot-adminversion: 2.0.1mavenProjectName: project.artifactId #使用 ... 可以获取maven的pom文件值mavenProjectVersion: project.version 2、编写InfoContributor
import java.util.Collections;import org.springframework.boot.actuate.info.Info;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.stereotype.Component;Component
public class ExampleInfoContributor implements InfoContributor {Overridepublic void contribute(Info.Builder builder) {builder.withDetail(example,Collections.singletonMap(key, value));}}
http://localhost:8080/actuator/info 会输出以上方式返回的所有info信息 3.3、定制Metrics信息
1、SpringBoot支持自动适配的Metrics
JVM metrics, report utilization of:Various memory and buffer pools Statistics related to garbage collection Threads utilization Number of classes loaded/unloaded
CPU metricsFile descriptor metricsKafka consumer and producer metricsLog4j2 metrics: record the number of events logged to Log4j2 at each levelLogback metrics: record the number of events logged to Logback at each levelUptime metrics: report a gauge for uptime and a fixed gauge representing the application’s absolute start timeTomcat metrics (server.tomcat.mbeanregistry.enabled must be set to true for all Tomcat metrics to be registered)Spring Integration metrics2、增加定制Metrics
class MyService{Counter counter;public MyService(MeterRegistry meterRegistry){counter meterRegistry.counter(myservice.method.running.counter);}public void hello() {counter.increment();}
}//也可以使用下面的方式
Bean
MeterBinder queueSize(Queue queue) {return (registry) - Gauge.builder(queueSize, queue::size).register(registry);
} 3.4、定制Endpoint
Component
Endpoint(id container)
public class DockerEndpoint {ReadOperationpublic Map getDockerInfo(){return Collections.singletonMap(info,docker started...);}WriteOperationprivate void restartDocker(){System.out.println(docker restarted....);}}
场景开发ReadinessEndpoint来管理程序是否就绪或者LivenessEndpoint来管理程序是否存活
当然这个也可以直接使用 Production-ready Features