跳到主要内容

Micrometer SignalFx

这是一个关于 Micrometer SignalFx 的文档。

DeepSeek V3 中英对照 SignalFx Micrometer SignalFx

SignalFx 是一个基于推送模型的维度监控系统 SaaS,拥有完整的用户界面。它提供了一套丰富的警报“检测器”。

1. 安装 micrometer-registry-signalfx

建议使用 Micrometer(或您的框架,如果有的话)提供的 BOM,您可以在此处查看如何配置它此处。以下示例假设您正在使用 BOM。

1.1. Gradle

配置 好 BOM 之后,添加以下依赖:

implementation 'io.micrometer:micrometer-registry-signalfx'
groovy
备注

此依赖项的版本号不需要指定,因为它由 BOM 定义。

1.2. Maven

配置 了 BOM 之后,添加以下依赖:

<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-signalfx</artifactId>
</dependency>
xml
备注

此依赖项的版本不需要指定,因为它由 BOM 定义。

2. 配置

以下示例配置了 SignalFx:

SignalFxConfig signalFxConfig = new SignalFxConfig() {
@Override
public String accessToken() {
return "MYTOKEN";
}

@Override
public String get(String k) {
return null; // accept the rest of the defaults
}
};

MeterRegistry registry = new SignalFxMeterRegistry(signalFxConfig, Clock.SYSTEM);
java

在 SignalFx 中有两个不同的 API 密钥来源。

SignalFxConfig 是一个带有一组默认方法的接口。如果在 get(String k) 的实现中,你不返回 null,而是将其绑定到一个属性源,那么你可以覆盖默认配置。例如,Micrometer 的 Spring Boot 支持将前缀为 management.metrics.export.signalfx 的属性直接绑定到 SignalFxConfig

management.metrics.export.signalfx:
access-token: MYTOKEN

# The interval at which metrics are sent to Ganglia. See Duration.parse for the expected format.
# The default is 1 minute.
step: 1m
yml

3. 绘图

本节旨在快速入门如何在 SignalFx 中呈现来自 Micrometer 的指标的有用表示。有关 SignalFx 中可能实现的功能的更完整参考,请参阅 SignalFx 文档

3.1. 定时器

在每个发布间隔期间,SignalFx 的 Timer 会在 SignalFx 中生成多个时间序列:

  • ${name}.avg:发布间隔的平均延迟。

  • ${name}.count:发布间隔内每秒的吞吐量。

  • ${name}.totalTime:发布间隔内每秒的总时间(与 count 一起使用)以创建可聚合的平均值。

  • ${name}.percentiles:Micrometer 计算的发布间隔百分位数。每个百分位数生成一个时间序列,带有一个范围在 [0,1] 的 phi 标签。

  • ${name}.histogram:每个 SLO 边界生成一个事件,带有一个 le 标签,表示它代表发布间隔内小于或等于 SLO 边界的事件的累积计数。

要在 SignalFx 中生成可聚合的延迟视图,将 totalTime 除以 count

SignalFx 可聚合延迟查询

这是通过为 ${name}.totalTime${name}.count 添加信号,添加一个将它们相除的公式,并隐藏公式的输入来实现的。

SignalFx 渲染的计时器

图 1. 定时器延迟。

要生成吞吐量图表,请使用 ${name}.count 信号:

SignalFx 渲染的计时器吞吐量

图 2. 计时器吞吐量。

要生成客户端百分位数的图表,请使用 ${name}.percentiles 信号:

SignalFx 渲染的百分位数

图 3. 定时器百分位数。

请注意,这些百分位数是不可聚合的。您为计时器添加的维度越多,这些值的用处就越小。

最后,如果您使用 Timer 的流式构建器定义了 SLO 边界,您可以通过 ${name}.histogram 信号查看低于特定 SLO 边界的吞吐量。在这个示例中,我们为模拟的 Timer 设置了 SLO 边界,分别为 275 毫秒(绿色)、300 毫秒(蓝色)和 500 毫秒(紫色),该 Timer 记录的样本围绕 250 毫秒呈正态分布。这些计数表示每秒小于或等于每个 SLO 边界的样本速率。

SignalFx 渲染的 SLO 边界

图 4. 计时器 SLO 边界。

在各个线条交汇的点上,很明显没有任何样本超过了 275 毫秒的 SLO 边界。