【问题标题】:RRDTool - Not a valid vnameRRDTool - 不是一个有效的 vname
【发布时间】:2015-01-29 20:14:10
【问题描述】:

我正在使用 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 行的某处,但我不知道为什么会发生这种情况。

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

任何帮助表示赞赏。提前致谢。

【问题讨论】:

    标签: bash rrdtool


    【解决方案1】:

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

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

    再次查看RRDTool图的使用说明,向我展示了这个:

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

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

    感谢所有 cmets。我只是想澄清一些我测试过的东西:
    - 变量名称 data 不会导致任何问题
    - 拥有一个名为 1 的 DS 完全可以工作,您也可以在 CDEF 等中访问它

    感谢您的帮助!

    【讨论】:

      【解决方案2】:

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

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

      你应该可以绘制data,例如

      LINE1:data#00CC00:data
      

      你不能 - 并且得到“不代表数字”让我想知道你的数据源中有什么。我建议您查看xport 转储 RRD 并查看其中的内容。

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

      (不过,无效的 VNAME 确实让我想知道 - 您是否尝试将其更改为 data 以外的其他名称 - 这似乎是一个保留字。)

      【讨论】:

      • 我试图做一行我的 DEF,只是为了测试我的 VDEF 是否工作以及我的 DEF是问题所在。
      • 那么,您的数据源中确定有 AVERAGE RRA 吗?
      • 我尝试使用 xport 进行此操作,但我的 RRD 中似乎没有名为“proc”的 DS。我打电话给 xport:rrdtool xport DEF:data=/usr/local/pnp4nagios/var/perfdata/FM/win_tcpu.rrd:proc:AVERAGE 知道这一点后,我将我的 RRD 转储为 XML。数据源的名称似乎是 1。使用 DS 名称 1 导出会抛出以下错误:错误:找不到 XPORT,无事可做而且我的转储显示此 RRD 中保存了数据。
      • 查看我的转储,我的 RRD 中有一个名为 1 的数据源,它还包含 AVERAGE。在我的 DEF 中将 DS 名称更改为 1 并不能解决问题。
      • 您没有说您使用的是哪个版本的 rrdtool,这可能会有所帮助。似乎您的 DEF 行不正确,因此未定义“数据”系列,但 RRDTool 解析器并未为此提供错误消息,而是继续并为您提供有关 VDEF 的错误。修复当然是纠正您的 DEF,但如果您使用的是最新的 RRDTool 版本,将错误报告给 Tobi 可能会有所帮助,以便修复错误消息以提供更多帮助。
      猜你喜欢
      • 2019-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      相关资源
      最近更新 更多