通过 HTTP 进行监控和管理
如果您正在开发 Web 应用程序,Spring Boot Actuator 会自动将所有启用的端点配置为通过 HTTP 公开。
默认约定是使用前缀为 的端点作为 URL 路径。
例如,公开为 .id
/actuator
health
/actuator/health
Spring MVC、Spring WebFlux 和 Jersey 原生支持 Actuator。 如果 Jersey 和 Spring MVC 都可用,则使用 Spring MVC。 |
Jackson 是必需的依赖项,以便获得 API 文档中记录的正确 JSON 响应。 |
自定义管理终端节点路径
有时,自定义管理终端节点的前缀非常有用。
例如,您的应用程序可能已用于其他目的。
您可以使用该属性更改管理终端节点的前缀,如下例所示:/actuator
management.endpoints.web.base-path
-
Properties
-
YAML
management.endpoints.web.base-path=/manage
management:
endpoints:
web:
base-path: "/manage"
前面的示例将 endpoint 从 更改为 (例如 )。application.properties
/actuator/{id}
/manage/{id}
/manage/info
除非已将管理端口配置为使用不同的 HTTP 端口公开端点,否则它是相对于 (对于 servlet Web 应用程序) 或 (对于反应式 Web 应用程序) 的。
如果已配置,则 是相对于 的。management.endpoints.web.base-path server.servlet.context-path spring.webflux.base-path management.server.port management.endpoints.web.base-path management.server.base-path |
如果要将终端节点映射到其他路径,可以使用该属性。management.endpoints.web.path-mapping
以下示例重新映射到 :/actuator/health
/healthcheck
-
Properties
-
YAML
management.endpoints.web.base-path=/
management.endpoints.web.path-mapping.health=healthcheck
management:
endpoints:
web:
base-path: "/"
path-mapping:
health: "healthcheck"
自定义管理服务器端口
对于基于云的部署,使用默认 HTTP 端口公开管理终端节点是一个明智的选择。 但是,如果您的应用程序在您自己的数据中心内运行,您可能更喜欢使用不同的 HTTP 端口来公开终端节点。
您可以设置该属性以更改 HTTP 端口,如下例所示:management.server.port
-
Properties
-
YAML
management.server.port=8081
management:
server:
port: 8081
在 Cloud Foundry 上,默认情况下,应用程序仅在端口 8080 上接收 HTTP 和 TCP 路由的请求。 如果要在 Cloud Foundry 上使用自定义管理端口,则需要显式设置应用程序的路由以将流量转发到自定义端口。 |
配置特定于管理的 SSL
当配置为使用自定义端口时,您还可以使用各种属性使用自己的 SSL 配置 Management Server。
例如,这样做可以让 Management 服务器通过 HTTP 可用,而主应用程序使用 HTTPS,如以下属性设置所示:management.server.ssl.*
-
Properties
-
YAML
server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:store.jks
server.ssl.key-password=secret
management.server.port=8080
management.server.ssl.enabled=false
server:
port: 8443
ssl:
enabled: true
key-store: "classpath:store.jks"
key-password: "secret"
management:
server:
port: 8080
ssl:
enabled: false
或者,主服务器和管理服务器都可以使用 SSL,但使用不同的密钥存储,如下所示:
-
Properties
-
YAML
server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:main.jks
server.ssl.key-password=secret
management.server.port=8080
management.server.ssl.enabled=true
management.server.ssl.key-store=classpath:management.jks
management.server.ssl.key-password=secret
server:
port: 8443
ssl:
enabled: true
key-store: "classpath:main.jks"
key-password: "secret"
management:
server:
port: 8080
ssl:
enabled: true
key-store: "classpath:management.jks"
key-password: "secret"
自定义管理服务器地址
您可以通过设置属性来自定义管理终端节点可用的地址。
如果您只想侦听内部网络或面向运营的网络,或者只想侦听来自 的连接,则这样做会很有用。management.server.address
localhost
只有当端口与主服务器端口不同时,您才能侦听其他地址。 |
以下示例不允许远程管理连接:application.properties
-
Properties
-
YAML
management.server.port=8081
management.server.address=127.0.0.1
management:
server:
port: 8081
address: "127.0.0.1"
禁用 HTTP 端点
如果您不想通过 HTTP 公开终端节点,则可以将管理端口设置为 ,如下例所示:-1
-
Properties
-
YAML
management.server.port=-1
management:
server:
port: -1
您还可以使用 property 来实现此目的,如下例所示:management.endpoints.web.exposure.exclude
-
Properties
-
YAML
management.endpoints.web.exposure.exclude=*
management:
endpoints:
web:
exposure:
exclude: "*"