这是 CentOS 6.5 上一个相当新的 Graphite 安装。它通过 Sensu 的 AMQP (RabbitMQ) 接收指标。
作为概念验证,我有一个平均负载监视器,每 60 秒向 sensu/graphite 报告数据。我可以在 Graphite 的监听器日志中看到数据。
如果我选择一些数据作图,我只能看到我的周期在“过去 30 分钟”内的数据。(那么只有当我将线模式设置为“连接线”时它才可见,因为点消失了。)
如果我将时间段设置为“查看过去 31 分钟”,则所有数据都会从图表中消失。
我尝试过使用 storage-schemas.conf,但没有对此行为做出任何明显的改变。
如果我超过 30 分钟,数据是否会以某种方式被丢弃、过滤掉?我要检查什么?
这是 storage-schemas.conf:
[load_averages]
pattern = \.load_avg\.
retentions = 10s:14d,1m:90d
我很确定我现在明白这里发生了什么。
正如我所怀疑的,它与指标的采样率以及 Whisper 数据库所期望的采样率有关。
关键是 storage-schemas.conf 文件,它指定要存储的采样率。
我使用 echocat/graphite puppet 模块配置了石墨。这将前 30 分钟的默认频率设置为 1s,前 1d 为 1m,2 年为 5m。
我试图绘制的平均负载指标的采样周期为 1m 或 60s。因此,whisper 数据库每分钟将存储 59 个空值和一个值。当请求超过 30 分钟时,graphite 丢弃了真实数据。
有两件事必须发生:
首先,更改 storage-schemas.conf 中的初始采样率(使用 puppet),使存储箱与采样频率匹配。
其次,必须丢弃现有的 Whisper 数据库文件或调整其大小。
Whisper 有一个实用程序(whisper-resize.py),但就我而言,我没有有价值的数据要保留。我擦除了受影响的 Whisper DB 文件并让它们重新创建。