Micrometer Ganglia
Ganglia 是一个老化的分层指标系统,在 Linux 系统监控中曾广受欢迎,并且在许多组织中仍然在使用。它起源于 2000 年代初的加州大学伯克利分校。
micrometer-registry-ganglia
模块使用了 gmetric4j 库,该库包含由 LGPL 许可的 remotetea 项目生成的类。
1. 安装 micrometer-registry-ganglia
建议使用 Micrometer(或您所使用的框架,如果有的话)提供的 BOM,您可以在此处查看如何配置 here。以下示例假设您正在使用 BOM。
1.1. Gradle
在配置好 BOM 之后,添加以下依赖项:
implementation 'io.micrometer:micrometer-registry-ganglia'
由于此依赖项的版本由 BOM 定义,因此不需要指定版本。
1.2. Maven
在 配置 完 BOM 之后,添加以下依赖:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-ganglia</artifactId>
</dependency>
由于此依赖项的版本由 BOM 定义,因此不需要指定版本。
2. 配置
以下示例配置了一个 Ganglia 实例:
GangliaConfig gangliaConfig = new GangliaConfig() {
@Override
public String host() {
return "mygraphitehost";
}
@Override
public String get(String k) {
return null; // accept the rest of the defaults
}
};
MeterRegistry registry = new GangliaMeterRegistry(gangliaConfig, Clock.SYSTEM);
Micrometer 使用 Dropwizard Metrics 作为底层仪表库,用于记录发送到 Ganglia 的指标。GangliaConfig
是一个带有默认方法的接口。如果在 get(String k)
的实现中,你将其绑定到一个属性源而不是返回 null
,则可以覆盖默认配置。例如,Micrometer 的 Spring Boot 支持将前缀为 management.metrics.export.ganglia
的属性直接绑定到 GangliaConfig
:
management.metrics.export.ganglia:
# The location of your Ganglia server
host: mygraphitehost
# You will probably want to conditionally disable Ganglia publishing in local development.
enabled: true
# The interval at which metrics are sent to Ganglia. The default is 1 minute.
step: 1m
3. 分层名称映射
Micrometer 提供了一个 HierarchicalNameMapper
接口,用于控制如何将维度化的仪表 ID 映射为扁平的层级名称。
默认的 (HierarchicalNameMapper.DEFAULT
) 会按字母顺序对标签的键进行排序,并将标签的键/值对附加到基础仪表名称后,使用 '.' 分隔 —— 例如,http_server_requests.method.GET.response.200
。名称和标签键会首先应用注册表的命名约定。
如果你的命名方案有特殊之处需要遵循,你可以提供自己的 HierarchicalNameMapper
实现。自定义映射器最常见的原因是需要在每个指标前面添加前缀(通常是类似 app.<name>.http_server_requests.method.GET.response.200
这样的格式)。
4. 图表绘制
本节旨在快速入门如何在 Ganglia 中渲染来自 Micrometer 的有用指标表示。
4.1. 计数器
Ganglia 计数器用于测量平均吞吐量以及 1 分钟、5 分钟和 15 分钟的指数加权移动平均吞吐量。
图 1. 随机游走计数器的 Ganglia 渲染图。