SpringCloud Turbine
从系统的整体运行状况来看,查看单个实例的Hystrix数据不是很有用。Turbine是一个应用程序,它将所有相关的/hystrix.stream
端点聚合到一个组合的/turbine.stream
中,以便在Hystrix仪表板中使用。个别实例通过Eureka定位。运行Turbine需要使用@EnableTurbine
注释对您的主类进行注释(例如,通过使用spring-cloud-starter-netflix-turbine设置类路径)。
Turbine 1 Wiki中记录的所有配置属性均适用。唯一的区别是turbine.instanceUrlSuffix
不需要预先添加的端口,因为除非turbine.instanceInsertPort=false
,否则它将自动处理。
默认情况下,Turbine通过在Eureka中查找其
hostName
和port
条目,然后将/hystrix.stream
附加到已注册实例上来查找/hystrix.stream
端点。如果实例的元数据包含management.port
,则使用它代替/hystrix.stream
端点的port
值。默认情况下,名为management.port
的元数据条目等于management.port
配置属性。可以使用以下配置覆盖它:
eureka: instance: metadata-map: management.port: ${management.port:8081}
turbine.appConfig
配置密钥是Eureka serviceId的列表,涡轮使用它们来查找实例。然后,在Hystrix仪表板中使用涡轮流,其URL类似于以下内容:
https://my.turbine.server:8080/turbine.stream?cluster=CLUSTERNAME
如果名称为default
,则可以省略cluster
参数。cluster
参数必须与turbine.aggregator.clusterConfig
中的条目匹配。从Eureka返回的值是大写的。因此,如果存在一个向Eureka注册的名为customers
的应用程序,则以下示例可用:
turbine: aggregator: clusterConfig: CUSTOMERS appConfig: customers
如果您需要自定义Turbine应该使用哪些集群名称(因为您不想在turbine.aggregator.clusterConfig
配置中存储集群名称),请提供类型为TurbineClustersProvider
的bean。
clusterName
可以通过turbine.clusterNameExpression
中的SPEL表达式进行自定义,其中根目录为InstanceInfo
的实例。默认值为appName
,这意味着Eureka serviceId
成为群集密钥(即,客户的InstanceInfo
的appName
为CUSTOMERS
)。一个不同的示例是turbine.clusterNameExpression=aSGName
,它从AWS
ASG名称获取集群名称。以下清单显示了另一个示例:
turbine: aggregator: clusterConfig: SYSTEM,USER appConfig: customers,stores,ui,admin clusterNameExpression: metadata['cluster']
在前面的示例中,来自四个服务的群集名称是从它们的元数据映射中拉出的,并且期望其值包括SYSTEM
和USER
。
要将“ 默认 ”群集用于所有应用程序,您需要一个字符串文字表达式(如果在YAML中,也要使用单引号和双引号进行转义):
turbine: appConfig: customers,stores clusterNameExpression: "'default'"
Spring Cloud提供了spring-cloud-starter-netflix-turbine
,它具有运行Turbine服务器所需的所有依赖关系。要添加Turbine,请创建一个Spring Boot应用程序并使用@EnableTurbine
对其进行注释。
默认情况下,Spring Cloud允许Turbine使用主机和端口以允许每个主机,每个集群多个进程。如果你想建立在本地Netflix的行为Turbine,以不使每台主机的多个进程,每簇(关键实例ID是主机名),集合
turbine.combineHostPort=false
。
更多建议: