Mackerelのチェック監視結果をPrometheusにexportするmackerel-checks-exporterをリリースした

今日はこのあとクアラルンプールに行くのでもう気持ちはoverseaことP山です。

ペパボにおけるコンテナベースへのアーキテクチャ刷新と、費用面のあれこれからPrometheusへ監視を一部移行していくに当たり、ホストのメトリクスはnode_exporterはじめ、既存のexporterで必要要件を満たすのですが、ノードごとに動いているngios-pluginやmackerel-check-pluginsを利用した監視の移行がネックになっていました。

今回実装したのはmackerel-agent.confを読み込み、チェック監視を行い、その結果をexportするexporterを実装しました。

使い方としては、起動するだけで、TCP:9111でexporterが起動するので /metrics を突くと下記のようにチェック監視の結果が取得できます。

  • mackerel-agent.conf
[plugin.checks.echo1]
command = ["echo", "1"]

[plugin.checks.ng1]
command = ["exit", "1"]

$ curl http://localhost:9111/metrics |grep check_name
mackerel_checks_exporter_check_status{check_name="echo1",message="1\n",status="OK"} 1
mackerel_checks_exporter_check_status{check_name="ng1",message="exit code: 127, exec: \"exit\": executable file not found in $PATH",status="UNKNOWN"} 0

このexporterを使うと、mackerelの設定を特に書き換えることなく、スムーズに移行できると思います。また引数で mackerel.config-path にコンフィグパスを渡してやるとそのファイルを設定として読み込めるのでmackerel-agentを利用しなくなったあともそのまま利用が可能です。

個人的にはOSSにするかどうか多少悩んだのですが、別にそもそもMackerelの開発者も日々他の監視ソフトウェア、サービスと競争してるわけだから変に気遣うことも無かろうと思って公開した感じです。

もし僕と同じようなことをやろうとしている方の生産性に少しでも寄与できれば嬉しいです。