GoとかPythonでOpenCensusでいちいち書くのが煩わしすぎるので、手軽にシェルでstackdriverでメトリクスを送信する方法です。
元ネタ
/home/testuser/test.sh
duした値を出力するだけです。
#!/bin/bash INTERVAL=10 HOSTNAME=test FOLDER="/home/testuser" 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
testuserのディレクトリに置いてますが好きなところに置いてください。
/etc/stackdriver/collectd.d/dir.conf
LoadPlugin exec <Plugin "exec"> # userはrootにすると怒られるので注意 Exec "testuser" "/home/testuser/test.sh" </Plugin> LoadPlugin target_set PreCacheChain "PreCache" <Chain "PreCache"> # 名前はなんでもok <Rule "dir"> <Match regex> # PUTVALの exec-dir のところを指定 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>
ファイルを配置したあとに systemctl restart stackdriver-agent
を実行。
確認する
しばらくしてから以下のリンク先の Metrics に custom と入力することでMetadata
で設定した名前のメトリクスが閲覧できるようになります。
いつまでも出てこない場合は値が送れていないので systemctl status stackdriver-agent
などをしてみてください。(エラーがでてるはず)
あとはPUTVAL
の出力とかですね。以下が正しい出力です。
PUTVAL test/exec-dir/gauge-usage/ interval=10 N:929