标签: rrdtool

绘制超过200万行平面文件数据的最快速,最灵活的方式?

我在flatfile中收集一些系统数据,其格式如下:

YYYY-MM-DD-HH24:MI:SS DD1 DD2 DD3 DD4
Run Code Online (Sandbox Code Playgroud)

其中DD1-DD4是四项数据.该文件的一个示例是:

2011-02-01-13:29:53 16 8 7 68
2011-02-01-13:29:58 13 8 6 110
2011-02-01-13:30:03 26 25 1 109
2011-02-01-13:30:08 13 12 1 31
2011-02-01-13:30:14 192 170 22 34
2011-02-01-13:30:19 16 16 0 10
2011-02-01-13:30:24 137 61 76 9
2011-02-01-13:30:29 452 167 286 42
2011-02-01-13:30:34 471 177 295 11
2011-02-01-13:30:39 502 192 309 10
Run Code Online (Sandbox Code Playgroud)

该文件超过200万行,每五秒钟有一个数据点.

我需要绘制这些数据,以便能够从中获得意义.

我试过的

目前我已尝试使用各种unix工具gnuplot和rrdtool(awk,sed等).这两种方法都有效,但每次我想以不同的方式查看数据时,似乎都需要大量的切割和重新编辑数据.我的直觉是rrdtool是正确的方法,但目前我正在努力将数据快速地加入其中,部分原因是因为我必须将我的时间戳转换为Unix时代.我的理解是,如果我决定我想要一个新的聚合粒度,我必须重建rrd(这对于实时收集是有意义的,但不是像这样的追溯加载).这些事情让我觉得我可能正在使用错误的工具.

将数据收集到平面文件是固定的 - 例如,我无法将集合直接传递到rrdtool.

我的问题

我希望人们对制图的最佳方式有所了解.我有这些要求:

  1. 它应该尽可能快地创建一个图形(不仅仅是渲染,而是设置为渲染)
  2. 它应该尽可能灵活 - 我需要使用图表来计算出数据的最佳粒度(5秒可能过于细化)
  3. 它应该能够在必要时聚合(MAX/AVG/etc)
  4. 它应该是可重复的,并且当它们进入时会有新的数据文件
  5. 理想情况下,我希望能够在本周与DD1重叠DD1与DD2或DD1
  6. Unix或Windows,不在乎.首选*nix虽然:-)

有什么建议?

r graph gnuplot flat-file rrdtool

29
推荐指数
3
解决办法
4414
查看次数

是否有RRDTool .net等价物

我需要监控大量数据,我知道RRDTool是一个不错的选择,但是整个应用程序都是c#,所以我更喜欢微软的方式或.net端口.

是否有.net方式与RRDTool一样?

.net monitoring rrdtool

8
推荐指数
2
解决办法
4552
查看次数

rrdtool y轴值"200m"而不是"0.2"

我有一个rrd主要包含0到1的值(linux load avarage).

有时图表显示在y轴=>"0.1 0.2 ... 0.9".这就是我想要的方式.

但其他时候,我看到以下"100m 200m ......".

有没有办法强制显示为"0.1等" 值?

graph rrdtool rrd

8
推荐指数
1
解决办法
6779
查看次数

如何设置RRD存储2年?

我正在监控超过300台服务器,因为我正在使用Ganglia.其中RRD用作数据库来收集和存储与每个服务器的资源相关的数据.我想有2年或更长的历史,所以阅读这篇文章,我认为我的RRA配置应该是:

RRAs "RRA:AVERAGE:0.5:1:17520"
Run Code Online (Sandbox Code Playgroud)

17520 =(365天[年] x 2)*24 [小时]

这是Ganglia默认配置,今天正在运行:

#
# Round-Robin Archives
# You can specify custom Round-Robin archives here (defaults are listed below)
#
# RRAs "RRA:AVERAGE:0.5:1:244" "RRA:AVERAGE:0.5:24:244" "RRA:AVERAGE:0.5:168:244" "RRA:AVERAGE:0.5:672:244" \
#      "RRA:AVERAGE:0.5:5760:374"
#
Run Code Online (Sandbox Code Playgroud)

这是我的思维方式还是我在这里遗漏了什么?

database linux rrdtool rrd ganglia

8
推荐指数
1
解决办法
6966
查看次数

rrd工具替代大批量

我有兴趣知道rrdtool是否有任何替代方法来记录时间序列数据.我正在寻找可以扩展以监控大量设备的东西.

根据我在这个主题上阅读的内容,当你用大量数据点击时,rrdtool就会受到I/O限制.由于我设想这可以扩展到大量要监控的设备,我很好奇是否有任何不会阻塞I/O的替代方案.优先使用SQL,但不一定.

谢谢

sql time-series rrdtool opentsdb

7
推荐指数
2
解决办法
1万
查看次数

将新数据源添加到现有RRD

我有几百个rrds,我想为所有这些rrds添加5个额外的数据源.

  1. 这样做是否可取
  2. 什么是最好的方式和最快的方式

- 索恩 -

David OBrien在邮件列表中回复

在搜索档案(你应该先做的)和谷歌搜索后,我发现有几个人使用这个......

与perl.安装RRD:简单

#!/usr/local/bin/perl 

use strict; 
use RRD::Simple (); 

my $rrd = RRD::Simple->new(); 
my $rrdfile=$ARGV[0]; 
my $source=$ARGV[1]; 
my $type=$ARGV[2]; 
chomp($type); 
$rrd->add_source($rrdfile, $source => $type); 
Run Code Online (Sandbox Code Playgroud)

用法:

./addSource.pl file.rrd ds GAUGE 
Run Code Online (Sandbox Code Playgroud)

或者不管是什么类型..

请享用.

rrdtool rrd

7
推荐指数
1
解决办法
9775
查看次数

从rrdtool图中获取可分析的数据

我想从rrdtool数据库中提取一些每小时数据,以便在仪表板系统中创建一些图形.

这些数据库没有每小时的数据源,最接近的是30分钟的数据源(它们是由munin生成的)

现在,我可以使用rrdfetch,但这并不能做到很好的平均rrdgraph,所以这样的事情

rrdtool fetch xxx-apache_accesses-accesses80-d.rrd AVERAGE \
   --resolution 3600 -s 1328458200 -e 1328544600
Run Code Online (Sandbox Code Playgroud)

可能会给我这样的30分钟数据点

2012-Feb-05 16:30:00 3.5376357135e+00
2012-Feb-05 17:00:00 3.4655067194e+00
2012-Feb-05 17:30:00 4.0483210375e+00
2012-Feb-05 18:00:00 4.3210061422e+00
....
Run Code Online (Sandbox Code Playgroud)

可以平均那些,但似乎rrdgraph可以输出可解析的文本,但我无法弄清楚正确的咒语.这是我尝试过的

 rrdtool graph dummy.png -s 1328523300 -e 1328609700 \
     DEF:access=xxx-apache_accesses-accesses80-d.rrd:42:AVERAGE \
     "PRINT:access:AVERAGE: %5.1lf %S"
Run Code Online (Sandbox Code Playgroud)

输出

0x0
   4.7
Run Code Online (Sandbox Code Playgroud)

现在我认为这只是给定期间的平均值,但是有没有办法可以rrdtool吐出特定块或步长的平均值?我试过--step但这没有改变输出.

我可以调用rrdtool graph我需要的每个数据点,但这似乎相当浪费.

graph rrdtool

6
推荐指数
1
解决办法
8296
查看次数

从RRDTool中删除数据

我有几个由RRDTool创建的图表,它们在几个小时的时间段内收集了错误的数据.

如何在该时间段内从RRD中删除数据,使其不再显示?

rrdtool rrd

5
推荐指数
1
解决办法
2万
查看次数

RRDTool GPRINT使用printf格式化

与此问题密切相关:Bash printf前缀

我有以下使用RRDTool生成RRDGraph的Bash脚本。

#!/bin/bash

now=$(date +%s)
now_formatted=$(date +%s | awk '{printf "%s\n", strftime("%c",$1)}' | sed -e 's/:/\\:/g')

# create power graph for last week
/usr/bin/rrdtool graph /var/www/power-week.png \
--start end-7d --width 543 --height 267 --end $now-1min --slope-mode \
--vertical-label "Watts" --lower-limit 0 \
--alt-autoscale-max \
--title "Power: Last week vs. week before" \
--watermark "(©) $(date +%Y) Alyn R. Tiedtke" \
--font WATERMARK:8 \
DEF:Power=/root/currentcost/ccdata.rrd:Power:AVERAGE \
DEF:Power2=/root/currentcost/ccdata.rrd:Power:AVERAGE:end=$now-7d1min:start=end-7d \
VDEF:Last=Power,LAST \
VDEF:First=Power,FIRST \
VDEF:Min=Power,MINIMUM \
VDEF:Peak=Power,MAXIMUM \
VDEF:Average=Power,AVERAGE \
CDEF:kWh=Power,1000,/,168,* …
Run Code Online (Sandbox Code Playgroud)

linux bash printf sed rrdtool

5
推荐指数
1
解决办法
1万
查看次数

如何将rrd文件存储到influxdb中

ganglia用于监听。ganglia将其数据存储为rrd文件。

它是rrd在上存储指标数据的文件gmetad。通常,默认路径是/var/lib/ganglia/rrds/<cluster-name>/<node-name>/每个指标存储在单个rrd文件(如)中的位置bytes_in.rrd

有什么办法可以使用这些rrd数据influxdb吗?

rrdtool rrd ganglia influxdb

5
推荐指数
0
解决办法
1276
查看次数

标签 统计

rrdtool ×10

rrd ×5

graph ×3

ganglia ×2

linux ×2

.net ×1

bash ×1

database ×1

flat-file ×1

gnuplot ×1

influxdb ×1

monitoring ×1

opentsdb ×1

printf ×1

r ×1

sed ×1

sql ×1

time-series ×1