RRDTool - 不是有效的 vname

RRDTool - Not a valid vname

我正在使用 RRDTool 来管理和绘制我的性能数据。
目前,我正在从 bash 脚本调用 RRDTool,但出现错误,我无法修复。
我的 Bash 脚本如下所示:

# Call RRDTool and save the output
output=$(rrdtool graph --width 4000 \
DEF:data=/usr/local/pnp4nagios/var/perfdata/FM/win_tcpu.rrd:proc:AVERAGE \
VDEF:slope=data,LSLSLOPE \
PRINT:slope:'%lf')

echo "Output: " $output

我试图用这个简单的例子在 y = m*x + b 中求解 m
我的性能数据看起来像这样:

<NAGIOS>
<DATASOURCE>
  <TEMPLATE>nrpe_win_tcpu</TEMPLATE>
  <RRDFILE>/usr/local/pnp4nagios/var/perfdata/FM/win_tcpu.rrd</RRDFILE>
  <RRD_STORAGE_TYPE>SINGLE</RRD_STORAGE_TYPE>
  <RRD_HEARTBEAT>8460</RRD_HEARTBEAT>
  <IS_MULTI>0</IS_MULTI>
  <DS>1</DS>
  <NAME>proc</NAME>
  ...
</DATASOURCE>
...

如您所见,文件名是正确的,数据源名称也是正确的。
我的问题是 DEF 似乎不起作用。我收到以下错误消息:

ERROR: Not a valid vname: data in line VDEF:slope=data,LSLSLOPE

当尝试像这样访问保存在变量 data 中的数据时,只是为了检查问题是否出在我的 VDEF 行中:

LINE1:data#0000FF:"data" \

我收到以下错误:

ERROR: parameter 'data' does not represent a number in line LINE1:data#0000FF:data

这表明问题出在 DEF 行中,但我不知道为什么会这样。

有人知道为什么我会收到这些错误消息以及如何解决这个问题吗?

感谢任何帮助。提前致谢。

你不能做一行 VDEF - 它是一个值,并且只对聚合函数有效。

发件人:http://oss.oetiker.ch/rrdtool/doc/rrdgraph_rpn.en.html LSLSLOPE 有效。

不过您应该能够绘制图表 data,例如

LINE1:data#00CC00:data

你不能 - 并得到 'does not represent a number' 让我想知道你的数据源中有什么。我建议您查看 xport 以转储 RRD 并查看其中的内容。

您可能没有获得足够的输入数据来在您的 RRD 中构建 CDP,因此它们都是 UNKNOWNNaN

(无效的 VNAME 确实让我感到疑惑 - 您是否尝试将其更改为 data 以外的其他内容 - 这似乎是一个保留字。)

我发现了问题。这只是我犯的一个非常愚蠢的错误。 我在打电话:

rrdtool graph --width 4000 \
DEF:data=/usr/local/pnp4nagios/var/perfdata/FM/win_tcpu.rrd:proc:AVERAGE \
VDEF:slope=data,LSLSLOPE \
...

再看RRDTool graph的使用说明,发现是这样的:

rrdtool graph filename [-s|--start seconds] [-e|--end seconds] ...

我只是缺少文件名。当像上面提到的那样调用它时,RRDTool 将我的 DEF 行解释为文件名。这会在将结果写入此文件时导致错误,但 RRDTool 退出并在 VDEF 行上显示错误,因为从未定义 data

感谢所有评论。我只是想澄清一些我测试过的事情:
- 变量名称数据不会造成任何问题
- 拥有一个名为 1 的 DS 是完全可行的,您也可以在 CDEF 中访问它等等

感谢您的帮助!