SpringCloudマイクロサービスXiaobaiも利用できます(Hoxton.SR8)(5)ダッシュボード/タービン|サーキットブレーカーモニタリング

開始して直接コピーするだけで、マイクロサービスを構築できます(Hoxton.SR8)2020.8.28がリリースされ、SpringCloudによって構築された記事が整理されています。乾物をお見逃しなく

概要

Hystrix Dashboardは、Spring CloudでHystrixインスタンスの実行を表示するためのダッシュボードコンポーネントであり、個々のインスタンスの表示とクラスターインスタンスの表示をサポートします。Hystrixは、HystrixCommandメソッドの実行をリアルタイムで監視するHystrixダッシュボードを提供します。Hystrixダッシュボードは、各Hystrixインスタンスの実行ステータスを効果的に反映できるため、システムの問題をすばやく発見し、対応する対策を講じることができます。

1.hystrix-dashboardサービスを作成します

  

1.1pom.xmlの新しいダッシュボードの依存関係

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!-- 包含了web -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
</dependencies>

 1.2スタートアップクラスに@EnableCircuitBreakerと@EnableDiscoveryClientを追加しました

package com.zqh.www;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.core.env.Environment;

/**
 * 开启服务发现客户端
 *
 * @EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。
 */
@EnableDiscoveryClient
/**
 * 开启监控
 */
@EnableHystrixDashboard
@SpringBootApplication
public class HystrixDashboardApplication {

    private final static Logger logger = LoggerFactory.getLogger(HystrixDashboardApplication.class);

    public static void main(String[] args) {
        Environment env = SpringApplication.run(HystrixDashboardApplication.class, args).getEnvironment();
        logger.info(
                "\n----------------------------------------------------------\n\t"
                        + "Application '{}' is running! Access URLs:\n\t"
                        + "Local: \t\thttp://localhost:{}{}"
                        + "\n----------------------------------------------------------",
                env.getProperty("spring.application.name"), env.getProperty("server.port"),
                env.getProperty("server.servlet.context-path") != null ? env.getProperty("server.servlet.context-path") : "");
    }
}

1.3マール

server:
  port: 8089
spring:
  application:
    name: hystrix-dashboard
eureka:
  client:
    service-url:
      #注册地址
      defaultZone: http://root:root@localhost:8081/eureka/
  #显示服务器IP加端口
  instance:
    hostname: localhost
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}

# is not in the allowed list of proxy host names.  If it should be allowed add it to hystrix.dashboard.proxyStreamAllowList.
hystrix:
  dashboard:
    proxy-stream-allow-list: "localhost"

1.4サービスを開始する

訪問:クリックしてダッシュボードサービスにアクセス:http:// localhost:8089 / hystrix

注:httpsを使用していないため、入力するときにhttpを入力します

1.5hystrix-serviceサービスのHystrixServiceApplicationにリスナーを追加します

注:これはhystrix-serviceサービスにあります

package com.zqh.www;

import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;

/**
 * 开启断路器功能
 */
@EnableCircuitBreaker
/**
 * 开启服务发现客户端
 * @EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。
 */
@EnableDiscoveryClient
@SpringBootApplication
/**
 * 可以取代上面三个
 */
@SpringCloudApplication
public class HystrixServiceApplication {

    private final static Logger logger = LoggerFactory.getLogger(HystrixServiceApplication.class);

    public static void main(String[] args) {
        Environment env = SpringApplication.run(HystrixServiceApplication.class, args).getEnvironment();
        logger.info(
                "\n----------------------------------------------------------\n\t"
                        + "Application '{}' is running! Access URLs:\n\t"
                        + "Local: \t\thttp://localhost:{}{}"
                        + "\n----------------------------------------------------------",
                env.getProperty("spring.application.name"), env.getProperty("server.port"),
                env.getProperty("server.servlet.context-path") != null ? env.getProperty("server.servlet.context-path") : "");
    }

    /**
     * 解决问题:Dashboard显示Unable to connect to Command Metric Stream。
     *
     * @return
     */
    @Bean
    public ServletRegistrationBean getServlet() {
        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
        registrationBean.setLoadOnStartup(1);
        registrationBean.addUrlMappings("/actuator/hystrix.stream");
        registrationBean.setName("HystrixMetricsStreamServlet");
        return registrationBean;
    }
}

1.6Hystrixダッシュボードページのコンテンツを入力します

注:
パラメーター最初の行は、監視する必要があるサービスリンクを入力することです

パラメータの2行目は、サービス名を入力することです。入力できます。これは単なる名前です。監視する必要のあるサービス名と同じにすることをお勧めします。

 

2.Hystrixダッシュボードチャート分析

3.Hystrixクラスターインスタンスの監視

サービスがクラスター化されている場合はどうなりますか?Turbineはhystrix-serviceサービスの監視情報を集約でき、次にhystrix-dashboardサービスはTurbineから集約された監視情報を取得できます。

3.1タービンサービスモジュールを作成する

  

3.2pom.xmlの新しいタービン依存関係

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
        </dependency>
    </dependencies>

 3.3@EnableTurbineと@EnableDiscoveryClientをスタートアップクラスに追加します

package com.zqh.www;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;
import org.springframework.core.env.Environment;

/**
 * 开启服务发现客户端
 *
 * @EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。
 */
@EnableDiscoveryClient
/**
 * 开启监控
 */
@EnableTurbine
@SpringBootApplication
public class TurbineHystrixApplication {

    private final static Logger logger = LoggerFactory.getLogger(TurbineHystrixApplication.class);

    public static void main(String[] args) {
        Environment env = SpringApplication.run(TurbineHystrixApplication.class, args).getEnvironment();
        logger.info(
                "\n----------------------------------------------------------\n\t"
                        + "Application '{}' is running! Access URLs:\n\t"
                        + "Local: \t\thttp://localhost:{}{}"
                        + "\n----------------------------------------------------------",
                env.getProperty("spring.application.name"), env.getProperty("server.port"),
                env.getProperty("server.servlet.context-path") != null ? env.getProperty("server.servlet.context-path") : "");
    }
}

3.4戻る

server:
  port: 8090
spring:
  application:
    name: turbine-service
eureka:
  client:
    service-url:
      #注册地址
      defaultZone: http://root:root@localhost:8081/eureka/
  #显示服务器IP加端口
  instance:
    hostname: localhost
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}

turbine:
  # 指定需要收集信息的服务名称
  app-config: hystrix-service
  # 指定服务所属集群
  cluster-name-expression: new String('default')
  # 以主机名和端口号区分服务
  combine-host-port: true

3.5サービスの開始

注:サービスクラスターであるため、複数のサービスに対して同じサービスを有効にする必要があります。監視するサービスはhystrix-serviceであるため、2つ以上のhystrix-servicesを有効にする必要があります。ロード操作が有効になっていない場合は、SpringCloudマイクロサービスにアクセスしてください。Xiaobaiは(Hoxton.SR8)(2)リボン|消費者にサービスを提供することもできます

 

アクセス:します。http:// localhost:8089 /ダッシュボードサービスにアクセスするためにクリックして 
hystrixの引数の最初の行を再入力します。:注は、先ほど作成したアドレス宛に、タービン・サービスアクセス埋めるためであるHTTP:// localhostを:8090 / turbine.streamを

クラスター内の数は2になります。当初は、パラメーターの最初の行を使用してhystrix-serviceを直接指していましたが、その後、指定されたサービスに関する情報を収集するためにターボサービスサービスを追加しました。パラメーターの最初の行はターボに変更されました。 -サービス

4.まとめ

  1. hystrix-dashboardを使用してhystrixを監視します
  2. タービンを使用してダッシュボード情報を収集し、均一に管理します

5.giteeアドレス

ソースリファレンス

おすすめ

転載: blog.csdn.net/itjavaee/article/details/109099840