Spring Actuator业务

Spring Actuator业务

Spring Actuator官方文档: Production-ready Features (spring.io)

Actuator API 文档 :Spring Boot Actuator Web API Documentation

Spring Gateway 的 Actuator 文档: Spring Cloud Gateway

自定义路径

如果你想为 Spring Actuator 自定义监控路径,可以在 application.properties 文件中使用以下配置:

1
management.endpoints.web.base-path=/your-custom-path

其中,”/your-custom-path” 即为你自定义的监控路径。例如,如果将该配置设置为 “/monitor”,则访问应用的 “/monitor” 路径,就可以查看到 Spring Actuator 实现的系统信息监控了。

其他监控信息

Spring 的环境抽象 API 可以很容易的获取系统信息和资源使用情况。可以使用 Spring 的 ApplicationContext 接口的实现类 ConfigurableApplicationContext 来获取运行环境信息。

  1. 获取 OS 的运行时信息:
1
2
3
4
5
6
import org.springframework.context.ConfigurableApplicationContext;

ConfigurableApplicationContext appContext = ...;
String osName = appContext.getEnvironment().getProperty("os.name");
String osVersion = appContext.getEnvironment().getProperty("os.version");
String osArch = appContext.getEnvironment().getProperty("os.arch");
  1. 获取当前 JVM 实例的信息:
1
2
3
4
5
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
String jvmName = runtimeMXBean.getName();
String jvmVersion = System.getProperty("java.version");
String jvmVendor = System.getProperty("java.vendor");
String jvmUptime = runtimeMXBean.getUptime();
  1. 获取系统的资源使用情况:
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
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedResource;

@ManagedResource(objectName = "com.example.service:name=MyService")
public class MyService {
@ManagedAttribute(description = "Return the amount of free memory in the JVM")
public long getMemoryFree() {
return Runtime.getRuntime().freeMemory();
}

@ManagedAttribute(description = "Return the total memory for the JVM")
public long getMemoryTotal() {
return Runtime.getRuntime().totalMemory();
}

@ManagedAttribute(description = "Return the maximum memory for the JVM")
public long getMemoryMax() {
return Runtime.getRuntime().maxMemory();
}

@ManagedAttribute(description = "Return the number of processors available for the JVM")
public int getProcessors() {
return Runtime.getRuntime().availableProcessors();
}
}

这里使用了 Spring JMX 导出自定义 MBean,以获取 JVM 的内存、线程和 CPU 使用情况。需要注意的是,在使用 ManagedAttribute 注解时,需要将 get 方法名称前面的首字母转换为小写,并且需要确保 MBean 的名称和属性名称是唯一的。

使用这些 API 可以实现服务自省是的信息获取和监视。同时,还可以使用其他库,如 Micrometer,来进行指标记录和指标聚合,以监控应用程序的性能和健康状况。


Spring Actuator业务
http://example.com/2023/06/01/业务/Spring Actuator业务/
作者
where
发布于
2023年6月1日
许可协议