我正在尝试设置一个collectd配置,将指标发送到两个单独的http服务器端点。
我的设置有Client(C),上面运行了collectd插件。在它收集的所有指标中,所有指标都需要发送到服务器(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节点(作为“布鲁尔“规则”。这些匹配的指标也应该可以发送到http插件中的其他节点(因为“brule”规则中的目标“返回”)。
所有其他指标应由http插件中的其他节点处理和发送(因为“brule”规则之外的目标“返回”)。
我面临的问题是我无法按照我希望的方式运行功能。
什么工作:
什么不起作用:
任何有关分割目的地工作的解决方案或建议都将不胜感激。
PS: write_http插件和collectd流控制的文档似乎都表明我的方法是正确的。但是,对我来说,看起来像write_http插件只处理一次(即使它有多个节点),并且一旦在规则中引用了写插件,它就不会在规则之外处理。