2

我正在尝试设置一个 collectd 配置,将指标发送到两个单独的 http 服务器端点。

我的设置有运行 collectd 插件的客户端 (C)。它收集的所有指标中,所有指标都需要发送到服务器(A);并且部分指标也需要发送到服务器(B)。

设置:

我正在为 write_http 插件使用以下配置:

<Plugin write_http>
    <Node "serverA">
            URL "http://servera/collectd-post"
            Format "JSON"
            StoreRates false
    </Node>
    <Node "serverB">
            URL "http://serverb/collectd-post"
            Format "JSON"
            StoreRates false
    </Node>
</Plugin>

此外,为了有选择地发送指标,我尝试使用以下流控制配置:

  PostCacheChain "bchain"
  <Chain "bchain">
    <Rule "brule">
      <Match "regex">
        Plugin "(load|interface|disk|cpu|memory|df|swap|processes)"
      </Match>
      <Target "write">
        Plugin "write_http/serverB"
      </Target>
      <Target "return">
      </Target>
    </Rule>
     <Target "return">
     </Target>
   </Chain>

根据我对流控制规则的理解,上述配置应将指标从插件(负载、接口、磁盘、cpu、内存、df、交换和进程)发送到 write_http 插件的 serverb 节点(作为“brule”规则的一部分)。这些匹配的指标也应该可用于发送到 http 插件中的其他节点(因为“brule”规则中的目标“return”)。

所有其他指标都应由 http 插件中的其他节点处理和发送(因为目标“返回”在“brule”规则之外)。

我面临的问题是我无法让功能按照我想要的方式工作。

什么工作:

  • 如果我删除 PostCacheChain 配置,所有指标都复制到服务器 A 和服务器 B。
  • 如果保留 PostCacheChain 配置,选定的指标仅发送到服务器 B。
  • 如果使用另一个写入插件,则在使用 PostCacheChain 配置时,发送到该插件的所有指标和仅发送到服务器 B 的 SELECTED 指标

什么不起作用:

  • 当使用列出的 PostCacheChain 时,没有指标发送到服务器 A

任何使拆分目标工作的解决方案或建议将不胜感激。

ps:write_http 插件和 collectd 流控制的文档似乎都表明我的方法是正确的。但是,对我来说,一个 write_http 插件似乎只被处理一次(即使它有多个节点),并且一旦在规则中引用了 write 插件,它就不会在规则之外被处理。

4

0 回答 0