この記事は Mackerel Advent Calendar 2019 2日目 の記事です。
あらすじ
今年の4月にMackerelの監視ルールをGitHubで管理するというブログ記事を書きました。
この記事を書いたときはまだ導入したばかりでしたが、半年以上経った今実際どの様に便利になったかという記事になります。
変更がわかるようになった
監視ルールの変更はSlack等に通知することができますが、変更されたこととと今の設定しか確認することができません。
そのため、経緯を忘れないようメモに経緯や前の設定を書くということでカバーしていたということがありました。
しかし、追従を忘れるなどでそのメモも古びてしまうことがありました。
今はコミットのURLを共有することで以前との設定の違いを確認できるようになってとても便利になりました。
バックアップが取られることになり変更がしやすくなった
バックアップがあるということですぐ元の状態に戻せるようになりました。
今ままではメモを取っていないと過去の設定に戻すのは大変でしたが、前に説明したとおり変更がわかるので前の値を参照して戻すことが出きます。
バックアップの取られていないものを変更するというのは抵抗があるという場合でも変えやすくなり、これによってSRE(インフラエンジニア)だけではなくアプリケーションエンジニアも積極的に監視ルールを変更してもらえるようになりました。
チェック監視の方を既にgitで管理してデプロイしている場合であれば、それに近い状態だと思ってもらえるとわかりやすいと思います。
複数の監視ルールを一気に変更したくて mkr monitors push
するという場合でもバックアップがあるため安心して実行できたという話もありました。
監視名自体を変えてしまった際もGitHub側のバックアップファイルには一意のidが振られているため探すことができます。
監視ルールの変更について様々な情報がわかるようになった
これが思っても見なかった効果で、今回紹介したかったものです。
そもそもとして、GitHubにバックアップを取る際のコミットメッセージにはこのような変更タイプ(作成・変更・削除)、監視ルールや変更した人が含まれています。
monitorUpdate: CPU % by cohalz
また監視ルールを変更したタイミングでコミットされるため時刻などもわかります。
そのため、git logを使って変更に関する情報を探したり集計して出すということもできるようになります。
いくつか便利なコマンドを紹介します。監視ルールを管理しているGitリポジトリ上で実行してください。
特定の監視ルールに関するgit logを出す
git log --grep="CPU %"
- 単純にコミットメッセージで検索しているのでユーザ名を入れることでその人が行った変更を探すこともできます。
監視ルールの変更内容(作成・変更・削除)ごとに回数を出す
git log --oneline --pretty=format:"%s" | awk 'match($0, /^([^:]*?): (.*?) by (.*?)/, a){print a[1]}' | sort | uniq -c
- 監視ルールが実際どういう変更が多いのか、どれくらい削除されているのか確認できます。
監視ルールを変更した人を変更回数の上位順に出す
git log --oneline --pretty=format:"%s" | awk 'match($0, /^([^:]*?): (.*?) by (.*?)/, a){print a[3]}' | sort | uniq -c | sort -nr
- 監視ルールを変更する人が偏っていないかどうかわかります。
月別に監視ルールの変更回数を出す
git log --oneline --pretty=format:'%cd' --date=format-local:'%Y/%m' | uniq -c
- 変更回数の多かった月に何があったのか振り返ってみても良いかも知れないです。
1時間ごとに監視ルールの変更回数を集計
git log --oneline --pretty=format:'%cd' --date=format-local:'%H' | sort | uniq -c
監視ルールがどの時間に変更されることが多いのか、深夜の時間帯にどのくらい変更されているのかがわかります。
終わりに
監視ルールをGitHubで管理することで変更がわかるようになり気軽に変更しやすくなったほか、git logを用いて統計を出すみたいなこともできるようになりました。
これで抜き出した統計情報をMackerelのグラフで見る、みたいなことも面白いかも知れないですね。
今回紹介したGitHub管理の仕組みは現在AWS Serverless Application Repositoryにて公開しており、簡単に使い始められるのでこの機会に是非使ってみてください。