由於 hystrix 對流量的監控狀態的監控是單應用的。有的時候我們需要全面查看整個系統的監控狀態,那麼我們可能需要引入turbine 的監控檢查。在spring boot admin 已經有spring-boot-admin-server-ui-turbine 這個插件
turbine 是一個hystrix 的集合。裏面展示所有的hystrix的效果。我們這裏用的spring cloud的版本是
<spring-boot.version>1.5.3.RELEASE</spring-boot.version> <spring-cloud.version>Dalston.SR1</spring-cloud.version> <spring-boot-admin.version>1.5.0</spring-boot-admin.version>
1、配置turbine 的包依賴
<dependencies> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server</artifactId> <version>${spring-boot-admin.version}</version> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui</artifactId> <version>${spring-boot-admin.version}</version> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui-turbine</artifactId> <version>${spring-boot-admin.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-turbine</artifactId> </dependency> </dependencies>
2、配置啓動類
//www.1b23.com @SpringBootApplication @EnableAdminServer @EnableDiscoveryClient @EnableTurbine open class YkbBootAdminServerApplication { companion object { @JvmStatic fun main(args: Array<String>) { SpringApplication.run(YkbBootAdminServerApplication::class.java, *args) } } }
啓動類配置了@EnableTurbine
3、配置啓動項:(application.properties)
spring.boot.admin.routes.endpoints= env,metrics,trace,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,loggers,auditevents,hystrix.stream,turbine.stream spring.boot.admin.turbine.location=TGS-SPRING-BOOT-ADMIN management.security.enabled=false security.basic.enabled=false turbine.clusterNameExpression=new String("default") turbine.appConfig=YKB-ACCOUNT-MOBILE turbine.combineHostPort=true
其中endpoints 配置hystrix.stream,turbine.stream
配置了spring.boot.admin.turbine.location=TGS-SPRING-BOOT-ADMIN
代表是由TGS-SRPING-BOOT-ADMIN實例來管理所有的監控
springcloud 項目案例 www.1b23.com
最後
turbine.appConfig=YKB-ACCOUNT-MOBILE
代表你可以監控的應用有哪些,可以用逗號隔開
4、配置hystrix
ykb-account-mobile 配置熔斷機制 這裏採用 @SpringCloudApplication裏面包含了熔斷機制
@SpringCloudApplication @EnableZuulProxy @EnableFeignClients open class AccountMobileApplication { //www.1b23.com @LoadBalanced @Bean open fun restTemplate(): RestTemplate { return RestTemplate() } companion object { @JvmStatic fun main(args: Array<String>) { SpringApplication.run(AccountMobileApplication::class.java, *args) } } }
需要引入的jar包爲
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</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-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </dependency>
其中application的配置爲
server.port=7180 management.port=7181 eureka.instance.prefer-ip-address = true eureka.instance.lease-renewal-interval-in-seconds=10 eureka.instance.lease-expiration-duration-in-seconds=30 eureka.client.service-url.defaultZone= http://eureka.ejuda.net:8761/eureka/ eureka.client.fetch-registry=true eureka.instance.metadata-map.management.port= ${management.port} 其中eureka.instance.metadata-map.management.port=${management.port}
是必須的。因爲管理端口跟服務端口不一樣