Spring Boot Actuator 通过HTTP和JMX监控和管理

2020-04-24 0 By admin

一、通过HTTP监控和管理

如果你正在开发一个web应用程序,Spring Boot Actuator会自动配置通过HTTP公开的所有已启用的端点,默认约定是使用带有/actuator前缀的端点id作为URL路径,例如,health公开为/actuator/health。

1.1、自定义管理端点路径

有时,为管理端点定制前缀是有用的,例如,你的应用程序可能已经将/actuator用于其他目的,你可以使用management.endpoints.web.base-path属性,用于更改管理端点的前缀,如下面的示例所示:
management.endpoints.web.base-path=/manage
前面的application.properties示例将端点从/actuator/{id}更改为/manage/{id}(例如,/manage/info)。
PS:除非管理端口被配置为使用不同的HTTP端口来公开端点,management.endpoints.web.base-path是相对于server.servlet.context-path的,如果management.server.port被配置,management.endpoints.web.base-path是相对于management.server.servlet.context-path的。

1.2、自定义管理服务器端口

使用默认的HTTP端口公开管理端点是基于云的部署的明智选择,但是,如果你的应用程序运行在你自己的数据中心中,你可能倾向于使用不同的HTTP端口来公开端点。你可以设置management.server.port属性改变HTTP端口,如下例所示:
management.server.port=8081

1.3、配置管理特定SSL

当配置为使用自定义端口时,管理服务器还可以使用各种management.server.ssl.*属性配置自己的SSL,例如,这样做可以让管理服务器通过HTTP可用,而主应用程序使用HTTPS。

1.4、自定义管理服务器地址

你可以通过设置management.server.address属性来定制管理端点可用的地址,如果你希望只监听内部网络或面向操作系统的网络,或者只监听来自localhost的连接,那么这样做是很有用的。

1.5、禁用HTTP端点

如果不希望通过HTTP公开端点,则可以将管理端口设置为-1,如下例所示:
management.server.port=-1

二、通过JMX监控和管理

Java管理扩展(JMX)提供了一种监视和管理应用程序的标准机制,默认情况下,Spring Boot将管理端点公开为org.springframework.boot域中的JMX mbean。

2.1、自定义MBean的名字

MBean的名称通常是由端点的id生成的,例如,health端点公开为org.springframework.boot:type=Endpoint,name=Health
如果你的应用程序包含多个Spring ApplicationContext,你可能会发现名称冲突,要解决这个问题,可以设置management.endpoints.jmx.unique-names属性为true,这样MBean名称总是唯一的。
你还可以自定义在其中暴露端点的JMX域,下面的设置显示了application.properties中的一个示例:
management.endpoints.jmx.domain=com.example.myapp
management.endpoints.jmx.unique-names=true

2.2、禁用JMX端点

如果不希望在JMX上公开端点,您可以设置management.endpoints.jmx.exposure.exclude属性为*,如下例所示:
management.endpoints.jmx.exposure.exclude=*

2.3、使用Jolokia通过HTTP实现JMX

Jolokia是一个JMX-http桥梁,它提供了访问JMX bean的另一种方法,使用Jolokia,引入org.jolokia:jolokia-core的依赖。