SREチームの藤原です。
このエントリは KAYAC Advent Calendar 2021 兼 Mackerel Advent Calendar 2021 の9日目の記事です。
カヤックとMackerelとわたし
カヤックで運用している自社サービスやソーシャルゲームでは、サーバの監視に Mackerel を利用しています。弊社と Mackerel さんとのお付き合いは相当古くからあり、最初期の2014年からトライアルをはじめて、2015年から多数のサービスで利用してきました。もう7年になるんですね。
以来、自社で便利に使うために Mackerel 関連の OSS を書いたり、mackerel-agent や mackerel-plugin にコントリビュートをしてきました。イベントで登壇させて頂いたことも何回もあり、そのようなご縁もあって、藤原は2019年に「Mackerelアンバサダー」に選んで頂きました。
ということで年末ですので、2021年に Mackerel 関連で藤原がやったことを振り返るエントリです。
mkr dashboard migrate の現行カスタムダッシュボード対応
Mackerel にはレガシーダッシュボード(現在は利用できません)と現行のダッシュボードの2種類のダッシュボードがあります。
レガシーダッシュボードが廃止されるに当たって、現行のダッシュボードへ移行する必要があったのですが、CLI ツールである mkr には現行のダッシュボードを扱う機能や、レガシーダッシュボードを現行のダッシュボードに migrate する機能がありませんでした。
ということで、その機能追加をしました。社内にもいくつかレガシーダッシュボードが残っていたので、一発で変換できてよかったですね。
- add dashboard list, pull, push, and migrate commands for current dashboards. by fujiwara · Pull Request #353 · mackerelio/mkr · GitHub
- no omitempty for dashboard elements. by fujiwara · Pull Request #118 · mackerelio/mackerel-client-go · GitHub
mackerel-plugin-fluentd への機能追加
fluentd 1.6 以降で追加されたメトリックを取得するための機能追加です。emit されたレコード数や回数が取りたくて作りました。
mackerel-webhook-incident-manager
AWS Systems Manager の新機能である Incident Manager がリリースされています。これはインシデント管理を AWS で行えるものですが、Mackerel でアラートが発生したらインシデントマネージャーにインシデントを登録できると便利では? と思って作ったものです。
Mackerel の WebHook の送信先として HTTP サーバーで動かしておくと、アラートの WebHook 受信を契機にインシデントマネージャーにインシデントを作成する、というものです。
あくまで PoC だったのと、リリース当初のインシデントマネージャーの機能がユースケースにそぐわなかったため、利用はしていません。(READMEも空白ですね…)
ただ、こういうのをさっと作って検証できる機動力は常に持っておきたいですね。素振りみたいなものです。
terraform-provider-mackerel に機能追加
クラウドリソースの管理は Terraform を主に使用しています。Mackerel でも Terraform Provider が公式でリリースされたということで、喜んで使い始めています。そこでひとつほしい機能があったので、機能追加を PR しました。
Mackerel のサービスメトリックに対する監視設定は、サービスメトリックに対してひとつずつ設定する必要があり、一括でワイルドカード的な設定はできません。
しかし、死活を 0 or 1 で送信している複数(わりと大量)のサービスメトリックに対して = 0 の時のアラートを定義したかったり、サービスメトリック自体がちゃんと送信されているかを検知するために途切れ監視を設定したい、というユースケースがあります。
となると Terraform の for_each でサービスメトリック名を列挙して…となるわけですが、メトリック名はだれかから送信されると増えるので、静的に Terraform に書いていくとメンテナンスが面倒、ということがありました。
Mackerel API 的にはサービスメトリックの一覧を取得する API があるので、それを Terraform の data resource として扱って、メトリック名の一覧を簡単に取得できるようにしたものです。
まとめ
なにしろ毎日のように Mackerel の画面を見ているので、配色がちょっと変更されたのもすぐ気が付くぐらいなのですが、並べてみると1年で4個程度のコントリビュートしかなかったですね……もうちょっと頑張ろうと思いました。来年もよろしくお願いします。
Mackerelの配色、ちょっと彩度上がりました?
— fujiwara (@fujiwara) 2021年10月21日