微服务-8 健康检查Actuator(推荐K8s+Docker来管理)
健康检查Actuator(推荐K8s+Docker来管理)
为什么需要健康检查?
我们需要监控每一个服务的健康状况,是否可以对外提供服务,以及当前服务的健康指数,内部运行是否已经存在过多的野线程 占用工作线程,是否存在没有必要的垃圾对象导致内存占用过多,是否存在某些计算行为影响系统的整体性能,而Actuator给我们暴漏出来的接口正好可以被K8s的探针监控到,如果当前服务存在不健康行为,那么K8s就会重启,并且管理的妥妥当当,K8s+Docker 整合文档 成本太高,我们后续在整合
Skywalking与Acyuator的区别
我们上一节 刚刚整合的分布式架构的链路追踪Skywalking,同样也有 服务请求性能监控,统计指标,但是Skywalking只是根据请求链 聚合统计,侧重与业务的可用性分析,而健康检查一般是秒级别的,也可能使毫秒级别的,所以两个组件不是同一个东西
添加健康检查依赖
actuator很好集成的,只要添加了 jar包自己就集成进去了
<!-- Web查看 返回参数-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--健康检测actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
这里我们用上几节的项目集成,同时 我们需要在项目的 application.properties 配置文件中配置
# actuator健康检查 关闭权限限制
management.security.enabled= false
# 开启所有端点能被访问
management.endpoints.web.exposure.include=*
#显示健康状态详细信息
management.endpoint.health.show-details=always
如果在文件中未添加配置,将会导致部分监控地址访问受限 报401错误
注意: 微服务架构中 我为什么可以关闭 management.security.enabled=false 因为我的服务都是内网,不存在外网攻击行为,但是建议你开启,并且引入SpringSecurity 安全组件

Actuator的监控项
下面包含了Actuator提供的主要配置项

下面逐个对部分监控项进行举例介绍
列出全部列表:

/health
用于监控各种服务健康,还可以监控tomcat,mq,redis等 status=UP 说明程序健康

/beans 查看所有bean

/heapdump示例

/metrics 示例:
系统信息:包括处理器数量processors、运行时间uptime和instance.uptime、系统平均负载systemload.average。
mem.*:内存概要信息,包括分配给应用的总内存数量以及当前空闲的内存数量。这些信息来自java.lang.Runtime。
heap.*:堆内存使用情况。这些信息来自java.lang.management.MemoryMXBean接口中getHeapMemoryUsage方法获取的java.lang.management.MemoryUsage。
nonheap.*:非堆内存使用情况。这些信息来自java.lang.management.MemoryMXBean接口中getNonHeapMemoryUsage方法获取的java.lang.management.MemoryUsage。
threads.*:线程使用情况,包括线程数、守护线程数(daemon)、线程峰值(peak)等,这些数据均来自java.lang.management.ThreadMXBean。
classes.*:应用加载和卸载的类统计。这些数据均来自java.lang.management.ClassLoadingMXBean。
gc.*:垃圾收集器的详细信息,包括垃圾回收次数gc.ps_scavenge.count、垃圾回收消耗时间gc.ps_scavenge.time、标记-清除算法的次数gc.ps_marksweep.count、标记-清除算法的消耗 时间gc.ps_marksweep.time。这些数据均来自java.lang.management.GarbageCollectorMXBean。
httpsessions.*:Tomcat容器的会话使用情况。包括最大会话数httpsessions.max和活跃会话数httpsessions.active。该度量指标信息仅在引入了嵌入式Tomcat作为应用容器的时候才会提供。
gauge.*:HTTP请求的性能指标之一,它主要用来反映一个绝对数值。比如上面示例中的gauge.response.hello: 5,它表示上一次hello请求的延迟时间为5毫秒。
counter.*:HTTP请求的性能指标之一,它主要作为计数器来使用,记录了增加量和减少量。如上示例中counter.status.200.hello: 11,它代表了hello请求返回200状态的次数为11。

集成Actuator到项目中
本次 需要集成的项目如下:

我们分别增加 pom配置
<!--健康检测actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
配置文件
# actuator健康检查 关闭权限限制
management.security.enabled= false
# 开启所有端点
management.endpoints.web.exposure.include=*
#显示健康状态详细信息
management.endpoint.health.show-details=always
并启动项目进行测试,其他服务的效果都一样就不展示了


浙公网安备 33010602011771号