的 解决方案1 强> :为避免这种情况从一开始就发生,请设置 tsd.storage.fix_duplicates 国旗到 true 在你的 opentsdb.conf 。
tsd.storage.fix_duplicates
true
opentsdb.conf
的 解决方案2 强> :如果您已经将重复值写入Hbase(基础数据存储区),并且无法查询openTSDB - 请使用 fsck 效用:在里面 opentsdb/build/
fsck
opentsdb/build/
的 具体查询 强> :
./tsdb fsck --fix-all 1h-ago now sum <metric-name> tag1=val1
的 对于指标 强> :
./tsdb fsck --threads=2 --fix-all --resolve-duplicates 15d-ago sum <metric name>
的 全表 强> :Hbase的'tsdb'表中的所有数据(一个表openTSDB存储数据)
./tsdb fsck --full-scan --threads=8 --fix-all --resolve-duplicates --compact
乐于助人 的 fsck 强> 标志:
--fix-all
--compact
--delete-bad-compacts
--resolve-duplicates
--last-write-wins
--full-scan
--threads
我无法获得fsck来修复我的重复项,但将其添加到配置文件并重新启动OpenTSDB确实对我有用:
tsd.storage.fix_duplicates = true
找到解决方案: https://github.com/OpenTSDB/opentsdb/issues/430
OpenTSDB是HBase支持的非常特殊的时间序列数据库。 tsdb中的数据必须按时间/日期顺序排列,不得一式两份。超出时间/日期顺序的数据点可能由tcollectors或系统主机上的过时系统时钟引起。重复数据通常是由API或TCP套接字上的手动PUT引起的。您的例外显示单元格-35,87一式两份。您是手动将此数据提交给TSDB还是直接将其输入HBase?
要解决这个问题,你可以尝试'tsdb fsck'。
'tsdb fsck --fix'需要一个时间段,一个运算符和一个度量标准名称。如果--fix未找到错误,则表示您未提供具有重复数据的时间段或度量标准名称。
例如:
/ usr / local / opentsdb / build / tsdb fsck --fix 9d-ago sum http.hits --config /usr/local/opentsdb/opentsdb.conf
从版本1.0开始处理TSDB,并且在2014年夏天添加了许多'fsck'功能之前,我已经找到了一个很酷的黑客'fsck'所有数据点。这个shell脚本快速列出所有指标,然后shell发送到tsdb到fsck该指标的所有数据点:
#!/bin/bash list=`/usr/local/opentsdb/build/tsdb uid grep '' --config /usr/local/opentsdb/opentsdb.conf | cut -d" " -f2 | cut -d ":" -f1` for i in $list do echo "Fixing metric $i" && /usr/local/opentsdb/build/tsdb fsck --fix 9d-ago sum $i --config /usr/local/opentsdb/opentsdb.conf & done
在TSDB 2.1中,执行fsck要容易得多。不幸的是,截至24AUG14,它尚未发布,只能通过“下一个”分支的代码控制结账:
git clone https://github.com/OpenTSDB/opentsdb.git cd opentsdb git checkout接下来 bash ./build.sh #Wait为它编译 #到FSCK而不改变指标 build / tsdb fsck --full-scan --threads = 16 #向FSCK解决重复/修复指标 build / tsdb fsck --full-scan --threads = 16 --fix --resolve-duplicates --compact
git clone https://github.com/OpenTSDB/opentsdb.git
cd opentsdb
git checkout接下来
bash ./build.sh
#Wait为它编译
#到FSCK而不改变指标
build / tsdb fsck --full-scan --threads = 16
#向FSCK解决重复/修复指标
build / tsdb fsck --full-scan --threads = 16 --fix --resolve-duplicates --compact
祝好运!