我想知道如果有任何替代它制对记录的时间系列数据。我看到的东西,可能的规模大数量的设备,以监测。

从什么我读了关于这个问题,它制I/O定,当你打它有大量的数据。因为我设想这个比例非常大量的监控设备,我很好奇如果有任何替代,也不会窒息I/O.最好SQL的基础,但不一定。

感谢

有帮助吗?

解决方案

如果I / O性能是主要担心,那么你想看看像 rrdcached ,可在RRDTools的当前版本(1.4)中找到。

在每个数据源的每个值8个字节之后,I / O开销不是正在写入的数据的函数。 I / O带宽来自于在写出之前需要读入整个扇区(通常为4k)的事实。突然写入8个字节,你已经读/写了8k字节。

rrdcached将所有这些写入合并在一起,因此当更新RRD时,有用数据(实际DS值)与浪费数据(扇区中的备用字节)的比率会降低。

当所有RRDTools检测到它运行时(通过环境变量),它将自动与rrdcached一起使用。这允许他们在需要时触发刷新,例如从数据生成图表时。

虽然切换到基于SQL的解决方案可能有助于考虑支持SQL所需的额外I / O.考虑到你不倾向于在那种随机访问模式中使用RRD数据,数据库对于这个问题来说是一个大锤。虽然坚持使用RRDTool可以访问所有理解并可以处理文件的生态系统工具,这在您已经熟悉的情况下非常有用。

其他提示

有一些时间序列数据库,其中有高级酒店和/或扩展为目标。

也许看看

  • rrdcached, 一缓层之上的当纳利
  • 耳语, 该数据库引擎后面 石墨
  • opentsdb 是一个分布式、可扩展的时间系列数据库(TSDB)的书面上的能
  • 侦察 尽管其重点是更多的监测

我的一位朋友不久前在SQL后端做了一些工作来存储循环数据: http:// rrs .decibel.org

但是,我怀疑,由于您询问的是“要监控的设备”,您可能正在寻找更完整的解决方案。

如果每秒I / O操作是您的主要瓶颈并且您正在使用Linux,那么只需要花费大量内存就可以轻松入侵。使用tmpfs mount来暂存RRD写入。

所有i / o操作都将在内存中完成,不会产生执行磁盘i / o时遇到的任何瓶颈(这比使用固态磁盘更快)。然后,您可以使用cron作业和rsync每隔几分钟将更改的RRD复制到磁盘一次。


创建目录

bash-4.2# mkdir /mnt/rrd-reads
bash-4.2# mkdir /mnt/rrd-writes

使用适当的选项创建一个500MB最大的RAM文件系统

bash-4.2# mount -t tmpfs -o size=500m,mode=0750,uid=collectd,gid=collectd none /mnt/rrd-writes
bash-4.2# echo "none /mnt/rrd-writes tmpfs size=500m,mode=0750,uid=collectd,gid=collectd 1 2" >> /etc/fstab

将旧的RRD文件复制到新的挂载点

bash-4.2# cp -a /var/lib/collectd/rrd/* /mnt/rrd-writes

配置您的rrd-writing应用程序以写入新的挂载点

bash-4.2# sed -i -e 's/DataDir "\/var\/lib\/collectd\/rrd"/DataDir "\/mnt\/rrd-writes"/' /etc/collectd/collectd.conf

设置一个cron作业,每2分钟只将已更改的RRD同步到磁盘

bash-4.2# echo "*/2 * * * * collectd rsync -a /mnt/rrd-writes/* /mnt/rrd-reads/ ; sync" > /etc/cron.d/rrd-sync

在启动rrd-writing应用程序之前,不要忘记将已保存的RRD文件复制到挂载点中!您可能需要编辑该服务的init脚本,以确保文件在启动之前就在那里。如果它在没有文件的情况下启动,则会创建新的裸文件,一旦读取目录被空RRD覆盖,您将会非常困惑。

如果在某些时候你需要调整tmpfs mount的大小,你可以动态地执行此操作:

bash-4.2# mount -t tmpfs -o remount,size=850m /mnt/rrd-writes
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top