如果请求的时间超过 30 分钟,Graphite 数据将消失

Moj*_*ojo 3 graphite

这是 CentOS 6.5 上一个相当新的 Graphite 安装。它通过 AMQP (RabbitMQ) 从 Sensu 接收指标。

作为概念验证,我有一个负载平均监视器每 60 秒向 sensu/graphite 报告数据。我可以看到数据到达 Graphite 的监听器日志。

如果我选择一些数据进行绘图,我只能看到我的经期在“过去 30 分钟”内的数据。(然后只有当我将线模式设置为“连接线”时它才可见,因为点消失了。)

如果我将时间段设置为“查看过去 31 分钟”,则所有数据都会从图表中消失。

我试过使用 storage-schemas.conf 但没有对这种行为做出任何明显的改变。

如果我超过 30 分钟,数据是否会以某种方式被丢弃、过滤掉?我要检查什么?

这是 storage-schemas.conf:

[load_averages]
pattern = \.load_avg\.
retentions = 10s:14d,1m:90d
Run Code Online (Sandbox Code Playgroud)

Moj*_*ojo 5

我很确定我现在明白这里发生了什么。

正如我所怀疑的,它与指标的采样率以及 Whisper 数据库预期的采样率有关。

关键是 storage-schemas.conf 文件,它指定要存储的采样率。

我使用 echocat/graphite puppet 模块配置了石墨。这将设置前 30 分钟的默认频率为 1s,前 1d 为 1m,2 年为 5m。

我试图绘制的平均负载指标的采样周期为 1m 或 60s。因此,耳语数据库每分钟将存储 59 个空值和一个值。当请求超过 30 分钟时,graphite 丢弃了真实数据。

有两件事必须发生:

首先,更改 storage-schemas.conf 中的初始采样率(使用 puppet),以便存储箱匹配采样频率。

其次,现有的 Whisper 数据库文件必须被丢弃或调整大小。

Whisper 有一个实用程序(whisper-resize.py),但就我而言,我没有有价值的数据要保留。我擦除了受影响的 Whisper DB 文件并让它们重新创建。