我最近将我的 graphite 设置从单个 carbon-cache 实例重新配置为多个 carbon-cache 实例。由于我需要在新主机上完成此操作,而无需在设置时关闭旧的 graphite 服务器,因此我现在有一个 whisper 目录,其中包含来自旧服务器的历史指标,我需要通过新主机上的 webapp 提供这些指标。
我将目录复制到新主机,并在 webapp local_settings.py 中添加了一个条目:DATA_DIRS = ['/carbon1/whisper','/carbon2/whisper','/carbon3/whisper','/carbon4/whisper','/whisper-archive']
whisper-archive 就是我所说的目录。不幸的是,数据没有显示出来。我做错了什么吗?或者有更好的方法吗?
在 freebsd 10.0-RELEASE-p12 上运行 graphite 0.10.0 源安装
答案1
我认为它只是在这些地方查找并使用它找到的第一个地方的数据。如果你想让旧数据和新数据在同一张图表中,那么我认为你必须使用 whisper-dump 转储新旧指标中的数据,然后使用 whisper-merge 将它们合并起来。
答案2
最终,史蒂夫基本上是正确的。
问题是我将存档文件夹放在了数据目录列表的首位。当查询通过跨越转换的时间跨度时,Web 应用程序会从存档文件夹获得响应并停止进一步查找。
然而,修复方法并不像 Steve 解释的那样。相反,我必须将旧数据悄悄合并到新的悄悄文件中。由于我有 4 个 Carbon 缓存存储和 2 个副本,因此这比平常更棘手。
我最终编写了一个快速的 bash 脚本,以递归方式将数据合并到其匹配的较新的对应项中。以下是一段代码,希望它能对某些人有所帮助:
for l in $(find /whisper-archive -type f -name '*.wsp'); do
for c in {1..4}; do
echo -n "carbon$c: Checking whisper file: $l..."; #debug output
# I made a tmp file with the list of whisper files in each carbon instance
# for quick searching and handy list for validation
grep $l ./carbon$c.files.txt >/dev/null \
&& sudo /usr/local/bin/whisper-merge.py \
/whisper-archive/$l /carbon$c/whisper/$l;
echo 'done'; # debug output
done;
done;