发布网友 发布时间:2024-09-29 09:49
共1个回答
热心网友 时间:2024-11-19 01:50
怎么给springboot接入cat监控首先我们需要找到Tomcat目录下面的Conf文件夹。找到server.xml文件,将其打开。找到这句话只需要将这个8080修改为80即可修改成功后,重新启动服务器。看看,只需要输入localhost即可访问Tomcat主页了。
Springboot——*
*(Listener)是servlet规范中定义的一种特殊类。用于监听servletContext、HttpSession和servletRequest等域对象的创建和销毁事件;监听域对象的属性发生修改的事件;用于在事件发生前后做一些必要的处理。
其主要可用于以下方面:
1、统计在线人数和在线用户
2、系统启动时加载初始化信息
3、统计网站访问量
4、记录用户访问路径。
Servlet中的*的分类:
(1)监听三个域对象的创建和销毁的*
(2)监听三个域对象的属性变更(属性添加、移除、替换)的*
(3)监听HttpSession中JavaBean的状态改变(钝化、活化、绑定、解除绑定)的监听
*相关术语:
事件源:被监听者
*:监听者
事件源和*绑定:在事件源上安装*
事件:指的是事件源对象的改变——主要功能获得事件源对象。
统计在线人数
方式1、使用自带的ServletListenerRegistrationBean完成设置
(1)首先创建一个MyHttpSessionListener类
(2)使用@Configuration注解替代web.xml对*进行配置
(3)创建一个控制器UserController
方式2、使用@WebListener注解完成设置
(1)创建一个MyHttpSessionListener类
(2)在入口类(Listenerdemo2Application)中加入@ServletComponentScan注解,开启对注解@WebListener的支持
(3)创建一个控制器UserController(同方式1)
!注:(1)使用@ServletComponentScan配合@WebListener后,就不用创建MyMvcConfig这个类。二者选其一即可。
(2)springboot默认会检索启动类所在包和子包下的所有spring容器相关的注解(比如@Controller、@Component等),但是像@WebFilter和@WebListener之类的不会。
关于spring-boot-actuator的httptrace端点不生效问题解决办法通过使用spring-boot-actuator的httptrace监控端点来监控http请求响应情况,但是我使用过程中发现访问该端点出现404的情况
GET/actuator/httptrace
经过一番查询,发现spring-boot2.2以上版本默认不启用HttpTraceRepository,需要使用者在工程中显示声明才可以正常使用,而我用的是spring-boot2.5.4版本,所以得修改配置才行
这是官方说明:
解决办法:修改spring-boot工程,增加HttpTraceRepository类型的bean声明
此时再启动工程访问httptrace端点,发现已经可以正常访问了
示例工程:
需要说明的是,spring官方建议在开发环境下才可以使用InMemoryHttpTraceRepository来存储信息,在生产环境下建议使用成熟的链路追踪方案如Zipkin/SpringCloudSleuth等,或者创建自己的HttpTraceRepository实现来满足需要~
SpringBoot2对接prometheus该监控特点:
prometheus
Kibana
范围监控数据接口:,结果如下:
Springboot2.0Actuator的健康检查在当下流行的ServiceMesh架构中,由于Springboot框架的种种优点,它特别适合作为其中的应用开发框架。
说到ServiceMesh的微服务架构,主要特点是将服务开发和服务治理分离开来,然后再结合容器化的Paas平台,将它们融合起来,这依赖的都是互相之间默契的配合。也就是说各自都暴露出标准的接口,可以通过这些接口互相交织在一起。
ServiceMesh的架构设计中的要点之一,就是全方位的监控,因此一般我们选用的服务开发框架都需要有方便又强大的监控功能支持。在Springboot应用中开启监控特别方便,监控面也很广,还支持灵活定制。
在Springboot应用中,要实现可监控的功能,依赖的是spring-boot-starter-actuator这个组件。它提供了很多监控和管理你的springboot应用的HTTP或者JMX端点,并且你可以有选择地开启和关闭部分功能。当你的springboot应用中引入下面的依赖之后,将自动的拥有审计、健康检查、Metrics监控功能。
具体的使用方法:
“*”号代表启用所有的监控端点,可以单独启用,例如,health,info,metrics等。
一般的监控管理端点的配置信息,如下:
上述配置信息仅供参考,具体须参照官方文档,由于springboot的版本更新比较快,配置方式可能有变化。
今天重点说一下Actuator监控管理中的健康检查功能,随时能掌握线上应用的健康状况是非常重要的,尤其是现在流行的容器云平台下的应用,它们的自动恢复和扩容都依赖健康检查功能。
当我们开启health的健康端点时,我们能够查到应用健康信息是一个汇总的信息,访问时,我们获取到的信息是{"status":"UP"},status的值还有可能是DOWN。
要想查看详细的应用健康信息需要配置management.endpoint.health.show-details的值为always,配置之后我们再次访问,获取的信息如下:
从上面的应用的详细健康信息发现,健康信息包含磁盘空间、redis、DB,启用监控的这个springboot应用确实是连接了redis和oracleDB,actuator就自动给监控起来了,确实是很方便、很有用。
经过测试发现,details中所有的监控项中的任何一个健康状态是DOWN,整体应用的健康状态也是DOWN。
Springboot的健康信息都是从ApplicationContext中的各种HealthIndicator
Beans中收集到的,Springboot框架中包含了大量的HealthIndicators的实现类,当然你也可以实现自己认为的健康状态。
默认情况下,最终的springboot应用的状态是由HealthAggregator汇总而成的,汇总的算法是:
Springboot框架自带的HealthIndicators目前包括:
有时候需要提供自定义的健康状态检查信息,你可以通过实现HealthIndicator的接口来实现,并将该实现类注册为springbean。你需要实现其中的health()方法,并返回自定义的健康状态响应信息,该响应信息应该包括一个状态码和要展示详细信息。例如,下面就是一个接口HealthIndicator的实现类:
另外,除了Springboot定义的几个状态类型,我们也可以自定义状态类型,用来表示一个新的系统状态。在这种情况下,你还需要实现接口HealthAggregator,或者通过配置management.health.status.order来继续使用HealthAggregator的默认实现。
例如,在你自定义的健康检查HealthIndicator的实现类中,使用了自定义的状态类型FATAL,为了配置该状态类型的严重程度,你需要在application的配置文件中添加如下配置:
在做健康检查时,响应中的HTTP状态码反应了整体的健康状态,(例如,UP对应200,而OUT_OF_SERVICE和DOWN对应503)。同样,你也需要为自定义的状态类型设置对应的HTTP状态码,例如,下面的配置可以将FATAL映射为503(服务不可用):
下面是内置健康状态类型对应的HTTP状态码列表:
本文主要介绍了Springboot中提供的应用健康检查功能的使用方法和原理,顺带介绍了一点Actuator的内容。主要的内容来自springboot2.0.1的官方文档和源码,还有一些自己的想法,希望多多支持。