【问题标题】:How to send custom metric from collectd (stackdriver agent) to stackdriver如何将自定义指标从 collectd(stackdriver 代理)发送到 stackdriver
【发布时间】:2018-09-20 07:41:40
【问题描述】:

我无法向 strackdriver 发送数据。这是一个简单的例子。 我正在使用我在 collectd 示例中找到的语法。 Stackdriver 文档没有关于如何从 exec 模块发送自定义数据的信息。 我做错了什么?

这是collectd.conf

LoadPlugin exec
<Plugin "exec">
    Exec "apache" "/etc/stackdriver/collectd.d/dir.sh"
</Plugin>

这是 dir.sh

#!/bin/bash
FOLDER="/var/www/"
while true; do
  DU=$(du -shm ${FOLDER} | awk '{print $1}')
  echo "PUTVAL \"projects/project_name/custom.googleapis.com/folder/completesolar\" interval=60 N:${DU}"
  sleep 60
done

脚本输出

$/etc/stackdriver/collectd.d/dir.sh
PUTVAL "projects/project_name/custom.googleapis.com/folder/completesolar" interval:60 N:1155

我开启了调试模式,发现这个错误:

[2018-09-21 00:45:55] utils_cmd_putval: handle_putval (fh = 0x3e71d8f040, buffer = PUTVAL "projects/project_name/custom.googleapis.com/folder/completesolar" interval=60 N:1155);
[2018-09-21 00:45:55] No such dataset registered: custom.googleapis.com/folder/completesolar

我创建了这个指标并在 stackdriver 控制台中找到了它: http://joxi.ru/a2XlPGvi1VzJL2

这是用于创建我的指标的 json:

{
  "name": "projects/project_name/metricDescriptors/custom.googleapis.com/folder/completesolar",
  "metricKind": "GAUGE",
  "valueType": "DOUBLE",
  "unit": "By",
  "description": "Folder bytes used",
  "displayName": "Folder usage",
  "type": "custom.googleapis.com/folder/completesolar",
  "metadata": {
    "launchStage": "GA",
    "samplePeriod": "60s",
    "ingestDelay": "0s"
    }
}

【问题讨论】:

  • 如果添加过滤器链并设置元数据,它会起作用吗? # 指定指标描述符名称:MetaData "stackdriver_metric_type" "custom.googleapis.com/folder/completesolar"

标签: stackdriver collectd


【解决方案1】:

这应该可行。

/etc/stackdriver/collectd.d/dir.conf

LoadPlugin exec
<Plugin "exec">
    Exec "apache" "/path/to/dir.sh"
</Plugin>

LoadPlugin target_set
PreCacheChain "PreCache"
<Chain "PreCache">
  <Rule "dir">
    <Match regex>
      Plugin "^exec$"
      PluginInstance "^dir$"
    </Match>
    <Target "set">
      MetaData "stackdriver_metric_type" "custom.googleapis.com/folder/completesolar"
      # MetaData "stackdriver_metric_type" "custom.googleapis.com/%{plugin_instance}/%{type_instance}"
      # MetaData "label:name" "dir usage"
    </Target>
  </Rule>
</Chain>

/path/to/dir.sh

#!/bin/bash
INTERVAL="$COLLECTD_INTERVAL"
HOSTNAME="$COLLECTD_HOSTNAME"
FOLDER="/var/www/"

while true; do
  DU=$(du -sm ${FOLDER} | awk '{print $1}')

  # https://collectd.org/documentation/manpages/collectd-exec.5.shtml
  # PUTVAL Identifier [OptionList] Valuelist
  # Identifier: <host>/<plugin>-<plugin_instance>/<type>-<type_instance>
  # Type: See /opt/stackdriver/collectd/share/collectd/types.db
  echo "PUTVAL ${HOSTNAME}/exec-dir/gauge-usage/ interval=${INTERVAL} N:${DU}"
  sleep "${INTERVAL}"
done

如果您想(预先)创建或删除指标,请参阅下文。
https://cloud.google.com/monitoring/custom-metrics/creating-metrics

【讨论】:

    【解决方案2】:

    看起来您正在关注 this guide 以获取 exec 指标。我认为重写规则不起作用,因此指标最终通过常规代理指标路径被摄取,该路径拒绝无法识别的指标。您可能需要使用 filter chain 为您的指标 modify the metadata。我建议您重新访问troubleshooting guide

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-14
      • 2017-12-02
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多