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,因此它们都是 UNKNOWN
或 NaN
。
(无效的 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 中访问它等等
感谢您的帮助!
我正在使用 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,因此它们都是 UNKNOWN
或 NaN
。
(无效的 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 中访问它等等
感谢您的帮助!