koudenpaのブログ

趣味のブログです。職業柄IT関連の記事が多いと思います。

mysql へのSelectクエリの結果をMackerelに投稿したい

と思ったので、雑にプラグインとして実行できそうなスクリプトを書いた。

[plugin.metrics.querytest]
command = "/path/to/script/metric.sh"

↓のようなスクリプトを↑のようにmackerel-agentに指定してやれた最低限やりたいことはできそうだった。

#!/bin/sh

# クエリは1行を返して value 'key1.key2.value' のように列名が . 二つで区切られるようにする
 mysql -u ${username} -p${password} ${dbname}  -B \
 -e "${query}" \
 > /tmp/metric.tsv

# メトリックな形式に行列を転置してタイムスタンプを付与して出力する
awk '
{ for (i=1; i<=NF; i++)  { a[NR,i] = $i } } NF>p { p = NF }
END {
for(j=1; j<=p; j++) { 
print(a[1,j], "\t", a[2,j], "\t", systime())
}
}' /tmp/metric.tsv

f:id:koudenpa:20180417012830p:plain

Success!!

なお、僕にはシェル力(ちから)は備わっていないので以下の記事を参考におパクりしています。

orebibou.com


↓経緯。