欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringCloud学习笔记(5):Hystrix Dashboard可视化监控数据

程序员文章站 2022-10-25 18:59:15
简介 上篇文章中讲了使用Hystrix实现容错,除此之外,Hystrix还提供了近乎实时的监控。本文将介绍如何进行服务监控以及使用Hystrix Dashboard来让监控数据图形化。 项目介绍 1. sc parent,父模块(请参照 "SpringCloud学习笔记(1):Eureka注册中心" ......

简介

上篇文章中讲了使用hystrix实现容错,除此之外,hystrix还提供了近乎实时的监控。本文将介绍如何进行服务监控以及使用hystrix dashboard来让监控数据图形化。

项目介绍

  1. sc-parent,父模块(请参照springcloud学习笔记(1):eureka注册中心)
  2. sc-eureka,注册中心(请参照springcloud学习笔记(1):eureka注册中心)
  3. sc-consumer-hystrix-ribbon,使用hystrix+ribbon的消费者(请参照springcloud学习笔记(4):hystrix容错机制)
  4. sc-consumer-hystrix-feign,使用hystrix+feign的消费者(请参照springcloud学习笔记(4):hystrix容错机制)
  5. sc-hystrix-dashboard,用于可视化监控数据
  6. sc-turbine,用于聚合监控数据

开启消费者服务监控

1.修改消费者sc-consumer-hystrix-ribbon和sc-consumer-hystrix-feign的pom.xml,新增如下依赖:

    <dependency>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-actuator</artifactid>
    </dependency>

2.修改消费者sc-consumer-hystrix-ribbon和sc-consumer-hystrix-feign的application.yml,新增如下配置:

management:
  endpoints:
    web:
      exposure:
        include: 'hystrix.stream'  #暴露hystrix.stream端点

3.测试访问消费者sc-consumer-hystrix-feign的监控数据

依次启动注册中心sc-eureka和消费者sc-consumer-hystrix-feign,并访问http://localhost:8084/actuator/hystrix.stream,结果显示如下:
SpringCloud学习笔记(5):Hystrix Dashboard可视化监控数据

出现上图是因为消费者服务没有被访问,所以这里先调用下消费者服务:http://localhost:8084/feign/getbooklist,然后再访问http://localhost:8084/actuator/hystrix.stream:

SpringCloud学习笔记(5):Hystrix Dashboard可视化监控数据

可以看到监控数据是以文字的形式展示的,并不直观,下面将介绍使用hystrix dashboard可视化监控数据。

使用hystrix dashboard可视化监控数据

1.在父模块下创建子模块项目sc-hystrix-dashboard,pom.xml:

<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">
  <modelversion>4.0.0</modelversion>
  <parent>
    <groupid>com.cf</groupid>
    <artifactid>sc-parent</artifactid>
    <version>0.0.1-snapshot</version>
  </parent>
  <artifactid>sc-hystrix-dashboard</artifactid>
  
  <dependencies>
    <dependency>
        <groupid>org.springframework.cloud</groupid>
        <artifactid>spring-cloud-starter-netflix-hystrix-dashboard</artifactid>
    </dependency>
  </dependencies>
</project>

2.创建启动类dashboard.dashboardapplication:

package dashboard;
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
import org.springframework.cloud.netflix.hystrix.dashboard.enablehystrixdashboard;

@springbootapplication
@enablehystrixdashboard
public class dashboardapplication {
    public static void main(string[] args) {
        springapplication.run(dashboardapplication.class, args);
    }
}

3.创建application.yml:

server:
  port: 8086

spring:
  application:
    name: sc-hystrix-dashboard

4.测试

启动sc-hystrix-dashboard后,访问http://localhost:8086/hystrix将会显示hystrix dashboard的主界面:

SpringCloud学习笔记(5):Hystrix Dashboard可视化监控数据

然后需要将消费者sc-consumer-hystrix-feign的监控数据添加到hystrix dashboard中。依次启动注册中心sc-eureka和消费者sc-consumer-hystrix-feign,将监控数据的地址输入到hystrix dashboard主界面的文本框中,点击monitor stream,然后重复访问消费者服务http://localhost:8084/feign/getbooklist,hystrix dashboard显示如下:

SpringCloud学习笔记(5):Hystrix Dashboard可视化监控数据

关于界面上指标表示的内容可以参考下图:
SpringCloud学习笔记(5):Hystrix Dashboard可视化监控数据

使用turbine聚合监控数据

/hystrix.stream端点只能监控到单个服务实例,如果需要查看其他服务实例监控信息则需要在hystrix dashboard切换想要监控的地址。通过turbine可以将所有/hystrix.stream端点的数据聚合到一个组合的/turbine.stream中,然后在hystrix dashboard中就可以查看所有服务的监控信息。

1.修改消费者sc-consumer-hystrix-ribbon和sc-consumer-hystrix-feign的application.yml,将registerwitheureka设为true或者直接去掉该配置(默认为true)。因为turbine需要从eureka上获取服务的地址信息,然后才能获取到服务的监控数据,所以消费者服务需要到eureka注册中心注册。

eureka:
  client:
    #registerwitheureka: false 
    serviceurl:
      defaultzone: http://localhost:8080/eureka/  

2.在父模块下创建子模块项目sc-turbine,pom.xml:

<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">
  <modelversion>4.0.0</modelversion>
  <parent>
    <groupid>com.cf</groupid>
    <artifactid>sc-parent</artifactid>
    <version>0.0.1-snapshot</version>
  </parent>
  <artifactid>sc-turbine</artifactid>
  
  <dependencies>
    <dependency>
        <groupid>org.springframework.cloud</groupid>
        <artifactid>spring-cloud-starter-netflix-turbine</artifactid>
    </dependency>
  </dependencies>
</project>

3.创建启动类turbine.turbineapplication:

package turbine;
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
import org.springframework.cloud.netflix.turbine.enableturbine;

@springbootapplication
@enableturbine
public class turbineapplication {
    public static void main(string[] args) {
        springapplication.run(turbineapplication.class, args);
    }
}

4.创建application.yml:

server:
  port: 8087

spring:
  application:
    name: sc-turbine
    
eureka:
  client:
    registerwitheureka: false
    serviceurl:
      defaultzone: http://localhost:8080/eureka/    

turbine:
  appconfig: sc-consumer-hystrix-ribbon,sc-consumer-hystrix-feign #指定要监控的服务名
  clusternameexpression: "'default'"

5.测试

依次启动注册中心sc-eureka、消费者sc-consumer-hystrix-feign、消费者sc-consumer-hystrix-ribbon、sc-turbine、sc-hystrix-dashboard,访问http://localhost:8086/hystrix进入到hystrix dashboard主界面中,然后在hystrix dashboard主界面的文本框中输入http://localhost:8087/turbine.stream,点击monitor stream进入监控界面,重复访问两个消费者服务,监控界面上将显示两个消费者的监控信息:

SpringCloud学习笔记(5):Hystrix Dashboard可视化监控数据