zoukankan      html  css  js  c++  java
  • SpringCloud(十一)使用actuator和dashborad、turbine对微服务进行监控

    @author:QYX 最近在赶开源项目,随缘搬运~

    对Feign的支持

    引入依赖(feign中已经继承了Hystrix)

    在feign中开启配置

     feign:
      client:
        config:
          service-product: #需要调用的服务名称
            loggerLevel: FULL

    自定义一个接口的实现类,这个实现类就是熔断触发的降级逻辑

     package com.qqq.fegin;
     
     import com.qqq.entity.Product;
     import org.springframework.stereotype.Component;
     
     @Component
     public class ProductFeignClientCallback implements ProductFeginClient {
         /**
          * 熔断降级方法
          * @param id
          * @return
          */
         @Override
         public Product findById(Long id) {
             Product product=new Product();
             product.setProductName("feign调用触发熔断降级方法");
             return product;
        }
     }
     

    修改feignClient接口添加降级方法

     package com.qqq.fegin;
     
     import com.qqq.entity.Product;
     import org.springframework.cloud.openfeign.FeignClient;
     import org.springframework.web.bind.annotation.PathVariable;
     import org.springframework.web.bind.annotation.RequestMapping;
     import org.springframework.web.bind.annotation.RequestMethod;
     
     /**
      * @FeginClient
      * name:服务提供者的名称
      * fallback:配置熔断发送降级方法
      *         实现类
      * 声明需要调用的微服务名称
      *
      */
     
     @FeignClient(name = "service-product",fallback = ProductFeignClientCallback.class)
     public interface ProductFeginClient {
         /**
          * 配置需要调用的微服务接口
          */
         @RequestMapping(value = "/product/{id}",method = RequestMethod.GET)
         public Product findById(@PathVariable("id") Long id);
     }
     

    Hystrix设置监控信息:

    actuator

    一、简介 spring-boot-starter-actuator模块是一个spring提供的监控模块。我们在开运行发过程中,需要实时和定时监控服务的各项状态和可用性。Spring Boot的spring-boot-starter-actuator 模块(健康监控)功能提供了很多监控所需的接口,可以对应用系统进行配置查看、相关功能统计等。

    引入坐标

             <!--Hystrix的监控和dashborad控制台-->
             <dependency>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter-actuator</artifactId>
             </dependency>
             <dependency>
                 <groupId>org.springframework.cloud</groupId>
                 <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
             </dependency>

    在启动类上配置:

     //激活hystrix
     @EnableCircuitBreaker

    暴露所有actuator监控的端点

     management:
      endpoints:
        web:
          exposure:
            include: '*'

    在页面上进行访问:

    http://localhost:9003/actuator/hystrix.stream

    Hystrix Dashboard是什么:

    Hystrix提供了对于微服务调用状态的监控信息,但是需要结合spring-boot-actuator模块一起使用。Hystrix Dashboard是Hystrix的一个组件,Hystrix Dashboard提供一个断路器的监控面板,可以使我们更好的监控服务和集群的状态,仅仅使用Hystrix Dashboard只能监控到单个断路器的状态,实际开发中还需要结合Turbine使用。

    Hystrix Dashboard作用:

    Hystrix Dashboard主要用来实时监控Hystrix的各项指标信息。通过Hystrix Dashboard反馈的实时信息,可以帮助我们快速发现系统中存在的问题。

    Hystrix Dashboard使用:

    eg:使用基于Hystrix的提供者访问数据库表数据,每访问一次都会记录是否成功以及最近10s错误百分比、超时数、熔断数、线程拒绝数、错误请求数、失败/异常数、服务请求频率等相关信息

    使用dashborad监控平台监控

    引入坐标:

     <!--Hystrix的监控和dashborad控制台-->
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>
     <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
     </dependency>

    在启动类上配置注解:

     //激活hystrix的web监控平台
     @EnableHystrixDashboard

    输入网址:

    localhost:9003/hystrix

    在文本框中输入要监控的spring-boot-actuator模块的地址:即上面的http://localhost:9003/actuator/hystrix.stream

    开始监控。

     

    Hystrix Turbine简介

    看单个的Hystrix Dashboard的数据并没有什么多大的价值,要想看这个系统的Hystrix Dashboard数据就需要用到Hystrix Turbine。Hystrix Turbine将每个服务Hystrix Dashboard数据进行了整合。Hystrix Turbine的使用非常简单,只需要引入相应的依赖和加上注解和配置就可以了。

    配置一个turbineServer

    引入坐标

     <?xml version="1.0" encoding="UTF-8"?>
     <project xmlns="http://maven.apache.org/POM/4.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
         <parent>
             <artifactId>spring_cloud_demo</artifactId>
             <groupId>cn.qyx</groupId>
             <version>1.0-SNAPSHOT</version>
         </parent>
         <modelVersion>4.0.0</modelVersion>
     
         <artifactId>hystrix_turbine</artifactId>
     
     <dependencies>
         <!--引入hystrix-->
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
         </dependency>
         <!--Hystrix的监控和dashborad控制台-->
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
         </dependency>
     </dependencies>
     </project>

    配置turbine

     server:
      port: 8031
     eureka:
      client:
        service-uri:
          defaultZone: http://localhost:9000/eureka/
      instance:
        prefer-ip-address: true
     turbine:
       #要监控的微服务列表用,多个用,分割
      app-config: service-order
       # 1. clusterNameExpression指定集群名称,默认表达式appName;此时:turbine.aggregator.clusterConfig需要配置想要监控的应用名称
       # 2. 当clusterNameExpression: default时,turbine.aggregator.clusterConfig可以不写,因为默认就是default
       # 3. 当clusterNameExpression: metadata['cluster']时,假设想要监控的应用配置了eureka.instance.metadata-map.cluster: ABC,
       #则需要配置,同时turbine.aggregator.clusterConfig: ABC
      cluster-name-expression: "'default'"

    在启动类上使用@EnableHystrixDashboard和@EnableTurbine注解

     package com.itcast.TurbinA;
     
     import org.springframework.boot.SpringApplication;
     import org.springframework.boot.autoconfigure.SpringBootApplication;
     import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
     import org.springframework.cloud.netflix.turbine.EnableTurbine;
     
     @SpringBootApplication
     //开启turbine
     @EnableHystrixDashboard
     @EnableTurbine
     public class TurbinApplication {
         public static void main(String[] args) {
             SpringApplication.run(TurbinApplication.class,args);
        }
     }
     
     

    访问之前配置的端口

    localhost:8031/hystrix

    输入localhost:8031/turbine.stream查看监控信息

  • 相关阅读:
    第 4 章 容器
    第 4 章 容器
    第 4 章 容器
    第 4 章 容器
    第 3 章 镜像
    第 3 章 镜像
    seekbar拖动条控件
    OnClick,onLongClick,OnTouch调用机制
    在TextView文本中实现activity跳转
    TextView显示html图片方法
  • 原文地址:https://www.cnblogs.com/qyx66/p/12393200.html
Copyright © 2011-2022 走看看