Spring Cloud (8) —— Dashboard

關於

hystrix

生成運行數據。
Hystrix 只監控 @HystrixCommand ,只要想對服務進行監控,就必須加 @HystrixCommand,沒有降級方法也要加。web

actuator

收集運行數據。spring

dashboard

展現運行數據。併發

部署 dashborad

  1. 新建模塊 spring-cloud.s06.dashboard
  2. pom中添加依賴app

    <dependencies>
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <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</artifactId>
        </dependency>
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
      </dependencies>
  3. 添加配置文件
    application.ymlspring-boot

    server:
      port: 35001
    spring:
      application:
        name: hystrix-dashboard
      profiles:
        active: dev
    eureka:
      instance:
        hostname: localhost
        instance-id: ${spring.cloud.client.ip-address}:${server.port}
      client:
        serviceUrl:
          defaultZone: http://user:123123@localhost:34001/eureka/
  4. 建立啓動類 ..HystrixDashboardspa

    @SpringBootApplication
    @EnableHystrixDashboard
    public class HystrixDashboard {
      public static void main(String[] args) {
        SpringApplication.run(HystrixDashboard.class, args);
      }
    }
  5. 啓動項目,訪問 http://localhost:35001/hystrix 可見控制檯。

監控數據的來源

HystrixDashboard 只能展現被 @HystrixCommand 標記的方法的運行數據。這裏使用 store-hystrix 項目提供。想要向外提供hystrix 的監控數據,還須要完成一些讓工做。線程

  1. 完善項目 store-hystrix 的啓動類 ..StoreHystrix ,增長code

    @Bean
      public ServletRegistrationBean getServlet(){
        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();    //監控實例
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);    //servlet註冊接口
        registrationBean.setLoadOnStartup(1);
        registrationBean.addUrlMappings("/actuator/hystrix.stream");   //路徑
        registrationBean.setName("HystrixMetricsStreamServlet");
        return registrationBean;
      }

    這樣,該項目的 /actuator/hystrix.stream 端點才能夠輸入數據。server

  2. 訪問 http://localhost:31003/actuator/hystrix.stream 能夠看到 ping 信息不停刷新。
    ping
  3. 訪問一個標記了 @HystrixCommand 的方法 http://localhost:31003/hystrix/isolation/thread ,再從新回到 http://localhost:31003/actuator/hystrix.stream 能夠看到 data 一同刷新。
    image

在 dashboard 查看監控數據

運行正常

  1. http://localhost:31003/actuator/hystrix.stream 輸入到對話框,點擊 Monitor Stream 後能夠看到一個空的運行曲線。
  2. 接下來訪問 http://localhost:31003/hystrix/isolation/thread 讓標記 @HystrixCommand 的程序運行,能夠看到監控數據的變化。
    監控數據blog

    左邊圖標中,不一樣意義的數字用不一樣的顏色顯示,具體的含義對照右邊的說明。

運行發生降級

  1. 可能產生異常的訪問

    • http://localhost:31003/hystrix/cf/always-exception 100% 會觸發服務降級
    • http://localhost:31003/hystrix/isolation/thread 併發超過 10 時,超出的部分會引起服務降級
    • http://localhost:31003/hystrix/isolation/semaphore 併發超過 10 時,超出的部分會引起服務降級
  2. 使用 1 個線程,不間斷的想三個地址發起壓測
    壓測環境下的 dashboard 面板信息
  3. 在上面3個方法中添加了延遲代碼,使用100 個線程進行壓測
    壓測
相關文章
相關標籤/搜索