我正在使用带有 snmp 和 write_graphite 插件的 collectd。我希望某些指标以前缀 A 发送到 Graphite,其他指标以前缀 B 发送到 Graphite,以使 Graphite/Whisper 中的数据井然有序。
例如,我想像这样划分事物:
网络.交换机.xxxx 电源.pdu.xxxxxx
我的 write_graphite 配置如下所示:
<Plugin write_graphite>
<Node "mygraphitehost">
Host "mygraphitehost"
Port "2003"
Protocol "tcp"
LogSendErrors true
Prefix "network."
Postfix "-collectd"
</Node>
</Plugin>
这导致我使用 snmp 插件收集的所有内容都显示在 Graphite Web 界面的“网络”文件夹下。运行具有不同配置/初始化脚本的多个 collectd 是解决此问题的唯一方法吗?
答案1
看起来 collectD Hashed Match 可能就是您正在寻找的:
https://collectd.org/wiki/index.php/Match:Hashed/Config
您显然没有多个石墨服务器,但看起来您可以使用模式匹配将指标发送到不同的服务器,在您的情况下,这些服务器具有相同的“主机”值,但前缀值可能不同。
答案2
使用“高级模式“在您准确指定路径的地方,将设置EscapeCharacter
为"."
。
<Plugin write_graphite>
EscapeCharacter "."
</Plugin>
警告:当您执行此操作时,您实际上是在为该主机上的所有内容编写新密钥。
为了确保主机的密钥保持不变,请在/etc/collectd.conf
Hostname "thishost_mydomain_net"
然后,您可以编辑您的所有主机/etc/collectd.d/snmp.conf
(或存储它们的任何位置),以将它们放置在树中的您想要的位置。
<Host "network.switches.core-router">
Address "10.1.1.1"
Version 2
Community "public"
Collect "snmp_dataset1"
</Host>
<Host "network.switches.accounting">
Address "10.1.1.2"
Version 2
Community "public"
Collect "snmp_dataset2"
</Host>