collectd是否支持指标的任意嵌套?

时间:2017-03-27 17:07:26

标签: metrics graphite collectd

根据collectd naming schema - 从collectd插件中转出的指标需要遵循此结构

host / plugin - plugin_instance / type - type_instance

适用于cpu,内存等系统指标,但对于通过健康URL公开其健康状态的应用程序,可以使用任意形式嵌套

的参数
{"datacenter": {"region": {"server": {"service": {"parameter": value } } } } }

当被collectd调度时,应该转换为

的石墨模式
$datacenter.$region.$server.$service.$parameter = $value

但是当前的collectd命名架构不允许这样做。如何在collectd中实现这一目标?

1 个答案:

答案 0 :(得分:0)

其他人如前面提到的那样here

我发现了一种迂回的方式:

  1. 使用collectd-python plugin
  2. 代替collectd exec plugin
  3. write_graphite插件更改为 EscapeCharacter 为"。"
  4. 重新开始收集。
  5. 现在,如果我写一个exec插件:

    #!/bin/bash
    
    HOSTNAME="${COLLECTD_HOSTNAME:-localhost}"
    INTERVAL="${COLLECTD_INTERVAL:-10}"
    
    function gen_random() {
      echo $RANDOM  % 10 + 1 | bc
    }
    
    while sleep "$INTERVAL"; do
      VALUE=$(do_magic)
      echo "PUTVAL \"$HOSTNAME/region.datacenter.rack.cluster.server.service/gauge-service_parameter\" interval=$INTERVAL N:$VALUE" | tee -a /var/tmp/test.log; 
    done
    

    这将在石墨中创建以下层次结构:

    region/
    region/datacenter
    region/datacenter/rack
    region/datacenter/rack/cluster
    region/datacenter/rack/cluster/server
    region/datacenter/rack/cluster/server/service
    region/datacenter/rack/cluster/server/service/gauge-service_parameter.wsp
    

    请注意前缀" gauge"很重要,因为collectd需要知道被推送的值的类型。