微服务-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
 
并启动项目进行测试,其他服务的效果都一样就不展示了

 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2022-02-24 19:56  郎小乐  阅读(601)  评论(0)    收藏  举报