先日のOSO2020で、はてなの吉田さん(id:syou6162)がカラムのコメント数をMackerelのサービスメトリックとして登録して可視化したという話をして感銘を受けたので早速rake taskを作ってみた。
なお、先日の記事。
言及されていたのは、スライドのここ。一番下に書いてありますね。
ところで私はMackerel初心者です
会社ではMackerel使っているし、私自身も一応恩恵は受けているのですが、Herokuを使っているから外形監視くらいなもんで、じゃあどうやって可視化したらええねん?っていうところで、早速家にあるMackerelサーバ監視入門を引っ張り出したわけです。1回は読んだんですよ!なかなか使う機会がないだけで!
これによると、サービスメトリックを登録すればいいということがわかったのだけれど、実際にグラフを作る方法がいまいちよくわからなかったので、本にあるcurlのサンプルを見ながら、RubyMineのhttp clientでサービスメトリックを登録するAPIに投げてみました。
POST https://mackerel.io/api/v0/services/<サービス名>/tsdb Content-Type: application/json X-Api-Key: <MackerelのAPI Key> [{"name": "Sample.bar", "time": {{$timestamp}}, "value": 30}]
すると、グラフができました。なるほど。時間をおいて、値を変えながら投げてみました。
とりあえず登録してしまえば、グラフができるっていうことですね。
rake taskを作る
グラフの作り方はわかったので、さっきのグラフは削除しておいて、あとはrake taskでデータを投げるだけです。 gistでコードを公開しておきます。
2021-02-17 追記
(追記ここから)
Viewのことを考慮できていなかったため、Viewも追加しました。gistのほうも修正済みです。 PostgreSQLが使っているシステムビューは除外しています。
(追記ここまで)
環境変数を設定した上で、 bin/rake mackerel:service_metric:database:post
を実行すると、
- テーブル数 + ビュー数
- カラム数
- コメント数
がグラフになります。
また、development環境でmigration系のタスクが実行されたら自動で実行されるようにしておきました。
Post custom metrics(table count, column count, an…
苦労した点は、db:migrate
が行われたら自動で実行されるようにしたのですが、テストを流すとdb:migrate
がないと言われて落ちました。db:migrate
後に実行されるgem のannotateはどうしてるんだ?と思って調べてみたら、id:onk さんが出しているPRが出てきて、対応方法がわかったので丸々拝借しました。
参考にしたコードはこれ。
結果
こんな感じでグラフが出るようになりました!ちなみにコメントは0です。こ、これから追加していくぞ!😇
2021-02-18 追記
楽にコメントを追加したかったので、I18nを利用して追加する方法を記事にしました。