その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

ltsv_exporter書いた

ltsv_exporterというPrometheusのexporterを書いた.

その名の通り,LTSV形式のテキストを読み込んでPrometheusが解釈できる形式に吐き出すexporter.

利用方法としては2つのパターンを想定している.

1つはリモートで配信されているLTSVを読むというスタイル.

$ ltsv_exporter --url https://example.com/sample.ltsv

このようにすると https://example.com/sample.ltsv で配信されているLTSVを読み込んでそれをPrometheus形式で出力するようになる.

もう1つはローカルに設置されているLTSVを読むというスタイル.

$ ltsv_exporter --file /path/to/sample.ltsv

このようにすると /path/to/sample.ltsv に設置されているLTSVを読み込んでPrometheusの形式で出力するようになる.

Exporterの出力としてはこのような感じ.

# HELP ltsv_value LTSV value
# TYPE ltsv_value gauge
ltsv_value{key="duration"} 4.097
ltsv_value{key="size"} 123

key というラベルにLTSVのkeyが入り,値の部分にはそのままLTSVのvalueが入る.なお,LTSVのvalueが数値ではなかった場合は,exporterはその値を出力に含めずに読み飛ばす.
あとはこのexporterのhttp越しの出力をPrometheusで収集すれば良い.


というわけでメトリクスを取りたいものがあったり監視したいものがあった時は,雑にサーバでLTSVとして配信したり,もっと雑にLTSVとしてローカルファイルに吐き出したりするだけでltsv_exporterで読み込んでPrometheus形式で出力できるようになった.
LTSVはシリアライズ(?)する時に特別なシリアライザが不要で,シンプルに文字列組み立てだけで作れるので楽で良いですね.


今後としては,最後の1行だけ読み込んでパーズするモードなんかがあると便利なのかな〜と思っている.