二、 微服务集群监控
1. 监控指标
a) 指标接入说明
b) 指标体系设计
Dubbo的指标体系,总共涉及三块,指标收集、本地聚合、指标推送
• 指标收集:将Dubbo内部需要监控的指标推送至统一的Collector中进行存储。
• 本地聚合:指标收集获取的均为基础指标,而一些分位数指标则需通过本地聚合计算得出。
• 指标推送:收集和聚合后的指标通过一定的方式推送至第三方服务器,目前只涉及Prometheus。
c) 结构设计
• 移除原来与Metrics相关的类。
• 创建新模块dubbo-metrics/dubbo-metrics-api、dubbo-metrics/dubbo-metrics-prometheus,MetricsConfig作为该模块的配置类。
• 使用micrometer,在Collector中使用基本类型代表指标,如Long、Double等,并在dubbo-metrics-api中引入micrometer,由micrometer对内部指标进行转换。
d) 数据流转
e) 目标
指标接口将提供一个MetricsService,该Service不仅提供柔性服务所的接口级数据,也提供所有指标的查询方式,其中方法级指标的查询的接口可按如下方式声明。
public interface MetricsService { /** * Default {@link MetricsService} extension name. */ String DEFAULT_EXTENSION_NAME = "default"; /** * The contract version of {@link MetricsService}, the future update must make sure compatible. */ String VERSION = "1.0.0"; /** * Get metrics by prefixes * * @param categories categories * @return metrics - key=MetricCategory value=MetricsEntityList */ Map<MetricsCategory, List<MetricsEntity>> getMetricsByCategories(List<MetricsCategory> categories); /** * Get metrics by interface and prefixes * * @param serviceUniqueName serviceUniqueName (eg.group/interfaceName:version) * @param categories categories * @return metrics - key=MetricCategory value=MetricsEntityList */ Map<MetricsCategory, List<MetricsEntity>> getMetricsByCategories(String serviceUniqueName, List<MetricsCategory> categories); /** * Get metrics by interface、method and prefixes * * @param serviceUniqueName serviceUniqueName (eg.group/interfaceName:version) * @param methodName methodName * @param parameterTypes method parameter types * @param categories categories * @return metrics - key=MetricCategory value=MetricsEntityList */ Map<MetricsCategory, List<MetricsEntity>> getMetricsByCategories(String serviceUniqueName, String methodName, Class<?>[] parameterTypes, List<MetricsCategory> categories); }
其中MetricsCategory设计如下:
MetricsEntity设计如下:
《Apache Dubbo微服务开发从入门到精通》——可视化监测服务状态——二、 微服务集群监控(2):https://developer.aliyun.com/article/1224286