54.3配置管理特定的SSL
配置为使用自定义端口时,还可以使用各种 management.server.ssl.* 属性为管理服务器配置自己的SSL。例如,这样做可以让主应用程序使
用HTTPS时管理服务器通过HTTP可用,如以下属性设置所示:
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
或者,主服务器和管理服务器都可以使用SSL但具有不同的密钥库,如下所示:
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
54.4自定义管理服务器地址
您可以通过设置 management.server.address 属性来自定义管理端点可用的地址。如果您只想在内部或面向运行的网络上侦听或仅侦听来
自 localhost 的连接,这样做非常有用。
仅当端口与主服务器端口不同时,才能侦听不同的地址。
以下示例 application.properties 不允许远程管理连接:
management.server.port=8081
management.server.address=127.0.0.1
54.5禁用HTTP端点
如果您不想通过HTTP公开端点,可以将管理端口设置为 -1 ,如以下示例所示:
management.server.port=-1
这也可以使用 management.endpoints.web.exposure.exclude 属性来实现,如以下示例所示:
management.endpoints.web.exposure.exclude=*
55.对JMX的监测和管理
Java Management Extensions(JMX)提供了一种监视和管理应用程序的标准机制。默认情况下,Spring Boot将管理端点公开
为 org.springframework.boot 域下的JMX MBean。
55.1自定义MBean名称
MBean的名称通常是从端点的 id 生成的。例如, health 端点公开为 org.springframework.boot:type=Endpoint,name=Health 。
如果您的应用程序包含多个Spring ApplicationContext ,您可能会发现名称发生冲突。要解决此问题,可以将 spring.jmx.unique-names
属性设置为 true ,以便MBean名称始终是唯一的。
您还可以自定义公开端点的JMX域。以下设置显示了在 application.properties 中执行此操作的示例:
spring.jmx.unique-names=true
management.endpoints.jmx.domain=com.example.myapp
55.2禁用JMX端点
如果您不想通过JMX公开端点,可以将 management.endpoints.jmx.exposure.exclude 属性设置为 * ,如以下示例所示:
management.endpoints.jmx.exposure.exclude=*
55.3通过HTTP使用Jolokia for JMX
Jolokia是一个JMX-HTTP桥,它提供了一种访问JMX beans的替代方法。要使用Jolokia,请在 org.jolokia:jolokia-core 中包含依赖项。例
如,使用Maven,您将添加以下依赖项:
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
然后,可以通过向 management.endpoints.web.exposure.include 属性添加 jolokia 或 * 来公开Jolokia端点。然后,您可以在管理HTTP服
务器上使用 /actuator/jolokia 来访问它。