跳到主要内容

执行器

DeepSeek V3 中英对照 Actuator

Spring Boot 包含了 Spring Boot Actuator。本节将解答在使用过程中经常出现的问题。

更改 Actuator 端点的 HTTP 端口或地址

在独立应用程序中,Actuator HTTP 端口默认与主 HTTP 端口相同。要使应用程序在不同的端口上监听,可以设置外部属性:management.server.port。要在一个完全不同的网络地址上监听(例如,当你有一个用于管理的内部网络和一个用于用户应用程序的外部网络时),你还可以将 management.server.address 设置为服务器能够绑定的有效 IP 地址。

更多详情,请参阅 ManagementServerProperties 源码以及“生产就绪特性”部分中的自定义管理服务器端口

自定义脱敏处理

为了控制数据的清理过程,您可以定义一个 SanitizingFunction Bean。调用该函数时会传入一个 SanitizableData 对象,该对象提供了对键、值以及它们来源的 PropertySource 的访问。这使您能够实现例如对来自特定属性源的每个值进行清理的功能。每个 SanitizingFunction 会按顺序被调用,直到某个函数改变了可清理数据的值为止。

将健康指标映射到 Micrometer 指标

Spring Boot 的健康指标返回一个 Status 类型,用于指示系统的整体健康状况。如果你想监控或针对特定应用程序的健康状态进行告警,可以使用 Micrometer 将这些状态导出为指标。默认情况下,Spring Boot 使用状态码 “UP”、“DOWN”、“OUT_OF_SERVICE” 和 “UNKNOWN”。要导出这些状态,你需要将这些状态转换为一些数字,以便它们可以与 Micrometer 的 Gauge 一起使用。

以下示例展示了编写此类导出器的一种方式:

import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;

import org.springframework.boot.actuate.health.HealthEndpoint;
import org.springframework.boot.actuate.health.Status;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = false)
public class MyHealthMetricsExportConfiguration {

public MyHealthMetricsExportConfiguration(MeterRegistry registry, HealthEndpoint healthEndpoint) {
// This example presumes common tags (such as the app) are applied elsewhere
Gauge.builder("health", healthEndpoint, this::getStatusCode).strongReference(true).register(registry);
}

private int getStatusCode(HealthEndpoint health) {
Status status = health.health().getStatus();
if (Status.UP.equals(status)) {
return 3;
}
if (Status.OUT_OF_SERVICE.equals(status)) {
return 2;
}
if (Status.DOWN.equals(status)) {
return 1;
}
return 0;
}

}
java