序
最近有点空闲,回头来处理一些没有的注释,然后,是不是换换脑子,给springboot加点东西。几天来说说开启监控acuator的问题。不废话,看招。
一、maven引入jar
<!-- actuator支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
这里之前引入过spring-boot-starter-web,所以就不重复写了
二、actuator配置
#actuator配置
#管理端口,不设置默认与server的端口一致
#management.port=54001
#jmx排除监控点
#management.endpoints.jmx.exposure.exclude=*
#jmx包含监控点
management.endpoints.jmx.exposure.include=*
#使用web端测试,配置监控点,exclude排除,include包含,配置*所有的意思,可单独配置health、info
#management.endpoints.web.exposure.exclude=*
management.endpoints.web.exposure.include=*
#actuator开关配置
#management.health.db.enabled=true
#management.health.mail.enabled=true
#management.health.security.enabled=true
三、可能回遇到的异常
No converter for [class org.springframework.boot.actuate.health.SystemHealth] with preset Content-Type ‘null’
这个意思就是缺少转换器,我这里的WebMvcConfigurer是实现的WebMvcConfigurationSupport。有博友说实现这个确实会有一些问题。我这里就是出现了这个问题,首先我是怀疑静态资源不能被访问导致,后来在addInterceptors里各种加,就是无效。后来想想,这前后端分离的,我这里就没有静态资源。然后想都我这里是用的fastjson做的HttpMessageConverter,有可能就是这里的问题。
/**
* 使用阿里 FastJson 作为JSON MessageConverter
*/
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
config.setSerializerFeatures(
SerializerFeature.DisableCircularReferenceDetect,
SerializerFeature.PrettyFormat,
SerializerFeature.WriteNullStringAsEmpty,
SerializerFeature.WriteNullListAsEmpty);
converter.setFastJsonConfig(config);
converter.setDefaultCharset(Charset.forName("UTF-8"));
converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON_UTF8));
converters.add(0, converter);
//super.addDefaultHttpMessageConverters(converters);
}
原始我就是这样的,可能大家已经看到问题了。super.addDefaultHttpMessageConverters(converters);注释掉的,都没有把fastjson加到默认HttpMessageConverters里。
于是放开这一行,重新请求:http://localhost:8099/actuator/health,结果:
四、返回自定义结果
那就需要自己实现HealthIndicator 、InfoIndicator等相关监测器。
剩下的大家就自己发挥吧,是单独搭建一个服务定时请求、还是其他方式,都是ok的。