• 服务容错保护断路器Hystrix之四:断路器监控(Hystrix Dashboard)-turbine集群监控


    turbine 英[ˈtɜ:baɪn] n. 汽轮机; 涡轮机; 透平机;

    OK,上文我们看了一个监控单体应用的例子,在实际应用中,我们要监控的应用往往是一个集群,这个时候我们就得采取Turbine集群监控了。Turbine有一个重要的功能就是汇聚监控信息,并将汇聚到的监控信息提供给Hystrix Dashboard来集中展示和监控。那我们就来看看Turbine集群监控如何使用。本文通过引入Turbine来聚合ribbon-consumer服务的监控信息,并输出给hystrix dashboard来进行展示。

    先上部署拓扑图:

    构建turbine项目:

    1、添加依赖,pom文件:主要是:spring-cloud-starter-turbine和spring-boot-starter-actuator

    <?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">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.dxz.turbine</groupId>
        <artifactId>turbine</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>hystrix-dashboard</name>
        <description>dashboard project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.3.5.RELEASE</version>   <!--配合spring cloud版本 -->
            <relativePath /> <!-- lookup parent from repository -->
        </parent>
        <properties>
            <!--设置字符编码及java版本 -->
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <!--增加turbine的依赖 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-turbine</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <!--用于测试的,本例可省略 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <!--依赖管理,用于管理spring-cloud的依赖 -->
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-parent</artifactId>
                    <version>Brixton.SR3</version>   <!--官网为Angel.SR4版本,但是我使用的时候总是报错 -->
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <!--使用该插件打包 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>

    2、添加注解

    启动类TurbineApplication

    package com.dxz.turbine;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.netflix.turbine.EnableTurbine;
    
    @EnableTurbine
    @EnableDiscoveryClient
    @SpringBootApplication
    public class TurbineApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(TurbineApplication.class, args);
        }
    }

    3、修改配置   配置信息

    spring.application.name=turbine
    server.port=2260
    management.port=8990
    
    eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
    
    turbine.app-config=ribbon-consumer
    turbine.cluster-name-expression="default"
    turbine.combine-host-port=true

    其中说明:

    1.turbine.app-config=ribbon-consumer指定了要监控的应用名字为ribbon-consumer 
    2.turbine.cluster-name-expression="default",表示集群的名字为default 
    3.turbine.combine-host-port=true表示同一主机上的服务通过host和port的组合来进行区分,默认情况下是使用host来区分,这样会使本地调试有问题

    查看监控图

    OK,监控服务创建成功之后,我们再次依次启动eureka-server、provider和consumer,其中consumer启动两个实例,两个实例的端口不一致,再分别启动hystrix-dashboard和turbine,

    启动turbine项目,

    http://127.0.0.1:2260/turbine.stream

    将http://127.0.0.1:2260/turbine.stream填入dashboard里,

    然后在hystrix监控地址栏输入如下地址(监控之前要记得先访问一下服务中的任意一个接口):http://localhost:2002/turbine...,访问结果如下:

    结果:小伙伴们可以看到,集群下的主机报告一栏显示已经有所不同了。

     与消息代理结合

     详细见《spring cloud微服务实战》

    2.2 turbine AMQP

    在某些环境中(如在PaaS),典型的turbine模型的指标从所有分布式Hystrix命令不起作用。在这种情况下,你可能想要你Hystrix命令推动指标turbine,和spring cloud,就要使用AMQP消息传递。所有您需要做的是在客户端添加一个依赖spring-cloud-netflix-hystrix-amqp并确保代rabbitmq可用。(有关详细信息,请参阅弹簧引导文档如何配置客户端凭据,但它应该工作的当地代理或云计算)。

  • 相关阅读:
    Spring导出可以运行的jar包
    sed 多行处理详细总结
    Shell获取某目录下所有文件夹的名称
    linux 删除换行符
    linux 切分文件
    jdbctemplate 获取数据表结构的方法&注意事项
    linux 使用ifstat查看网络使用情况
    postgresql 函数获取多个字段的数字大小值
    vim 正则替换功能
    jstl 格式化
  • 原文地址:https://www.cnblogs.com/duanxz/p/7525753.html
Copyright © 2020-2023  润新知