と思ったので、雑にプラグインとして実行できそうなスクリプトを書いた。
[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
Success!!
なお、僕にはシェル力(ちから)は備わっていないので以下の記事を参考におパクりしています。
↓経緯。
“定期的にSQLを実行して集計し、サービスメトリックへ結果をポストするスクリプトを社内で動かしています。” https://t.co/XwH7MR3LI6
— 光電/7474 (@koudenpa) 2018年4月16日
SQLの結果をMackerelに投げるってのをどっかで見た記憶があったのだけれど、プラグインじゃなかった。