自動でMackerelの監視設定をGitHub上に管理してどうなったか

この記事は Mackerel Advent Calendar 2019 2日目 の記事です。

qiita.com

あらすじ

今年の4月にMackerelの監視ルールをGitHubで管理するというブログ記事を書きました。

developer.hatenastaff.com

この記事を書いたときはまだ導入したばかりでしたが、半年以上経った今実際どの様に便利になったかという記事になります。

変更がわかるようになった

監視ルールの変更は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にて公開しており、簡単に使い始められるのでこの機会に是非使ってみてください。

developer.hatenastaff.com

iOS ショートカットで画像プレビューをする

「クイックルック」を使えば画像プレビューができる。

最近の写真を一枚プレビューするにはこういうショートカットを書けば良い。

アクションから「写真」とか「イメージ」で検索して全然見つからないし日本語で全然目的の情報も見つからないので、「ios shortcuts show photo」とか英語で検索したらredditがヒットしてたどり着くことができた。

www.reddit.com

Envoy で HTTP Keep-Alive を無効にする

Envoyではデフォルトで Keep-Alive が有効になっているが、これを無効化したい場面があったので調べた。

方法

max_requests_per_connectionの値を1にすれば良い。

公式ドキュメントにはSetting this parameter to 1 will effectively disable keep alive.*1と書いてあるように、 keepalive に関するパラメータがあってそこをいじるのかと思いきやそういう設定はなくイディオムのようになっている。

余談

Envoy からコネクションが残っているかは統計のupstream_cx_active*2から確認できる。

コネクション周り結構調査が難しくて特にコンテナだとコネクション残ってるのかどうか判断がしにくいけど、 Envoy の統計情報をから確認できるの結構便利だった。

このタイミングでIngressの話をしたい

今いいタイミングだと思ったのでIngressのことを書く。

自分の場合

  • 2014年の10月に始めてから毎日必ずプレイしている
  • 歩いた距離 5000km
  • 出会ったポータルは3万4千
  • Swarmチェックイン履歴

f:id:cohalz:20190927081807p:plain:w300

どうしてこんなに続けられているのか

遊び方は人それぞれなのが良いと思う。例えばイベントに参加しまくる人もいれば地元でしか活動しない人もいる。

あと、やりたいときに思いっきりやれるというのも大きくて、スマホゲーでありがちなスタミナ制、メンテナンス、ダウンロードの待ち時間...などがない。

変わったこと

一番は旅行に行くようになったということで、海外を含め行くようになった。

イベントがいろんな地域で開催されるのでついでに旅行計画を立てていくとかもできる。

Ingressの実績の中に色んな所に行く必要があるものがあるので、特に行ったことない場所に行きたくなった。

あとは身近な場所に何があるか興味を持つようになったとか。

ポケモンGoについて

ポケモンGoもそこそこやっている。

f:id:cohalz:20190927094221p:plain:w300

もともとポケモンはかなりやっていたので結構楽しめているし、モンスターボールPlusなど使えばIngressと同時プレイも可能なのは嬉しい。

そもそもIngressと同じ会社なので信頼があるし、ポケモンGoで実装されているものはIngressでも実装されるかもという期待も持てる。

様々な思い出

  • 目的地への電車が人身事故で行けなくなり、途中下車してその場所で歩き回った。

  • 大学の先生(埼玉)と大阪で偶然出会う。

  • 石巻・女川に行って復旧の状態を目にした。

  • ソウルで現地の知り合いと偶然居合わせたボカロPと三人で一緒に中指立ててる写真を撮った。

 

京都での思い出

2015年の3月に京都で大きなイベントがあり、自分がIngressで初めて遠出した場所でもある。

それ移行もいくつか京都でイベントなどがあり、毎回参加していた。

例えばBivi京都二条にIngressの自販機があったり、

三条珍遊がイベントの協賛をしていてカードを配っていたりと結構思い出がある。

f:id:cohalz:20190927093053j:plain:w400

今のIngress

今のIngressはこんな感じの画面になっている。

f:id:cohalz:20190927092223p:plain:w300

昔と比べて結構UI変わっているけれど、これは現在進行中のリプレースに伴ってUIが変わっている。

リプレースはチート・スパム対策、周辺技術のサポート切れや新機能を追加しやすくするためにしばらく前から行っているもので、今月末についに移行が完了する。

いろいろな位置情報ゲームが出ている今、昔やってたという人も結局やらなかったという人も今がいいタイミングだと思う。

いい感じのタイトル

やあ (´・ω・`) ようこそ、バーボンハウスへ。 このテキーラはサービスだから、まず飲んで落ち着いて欲しい。

うん、「また」なんだ。済まない。 仏の顔もって言うしね、謝って許してもらおうとも思っていない。

でも、このスレタイを見たとき、君は、きっと言葉では言い表せない 「ときめき」みたいなものを感じてくれたと思う。 殺伐とした世の中で、そういう気持ちを忘れないで欲しい そう思って、このスレを立てたんだ。

じゃあ、注文を聞こうか。

社用PCと私用PCでChromeのprofileを別にした

今までは利便性のために社用PCと私用PC両方ともGoogleの個人アカウントと社内アカウント両方ログインしていたのだけれど,最近社用PCには個人アカウントをログインしないようにした.

最初はオンオフをしっかり切り分けたいという意図があったのだけれど,意外といろいろな気づきがあった.

例えば,

  • ブックマークを分離できる
    • 今まではTwitterやらGitHubやら仕事と趣味でアクセス頻度の高いものが両方ブックマークされていたけれど,仕事・趣味で分けられる
  • 社用PCでデフォルトのGoogleアカウントを仕事用にできる
    • 権限周りとかたまにハマることがあったのがなくなる
  • 閲覧履歴が混ざらない
    • 私用PCに会社関連の履歴が残らない
    • 社用PCに趣味活動の履歴が残らない

などなど結構メリットがある.

あとブックマークの他に拡張もリセットされるので結構新鮮な気持ちでセットアップできるというのも面白かった.

社用PCのブクマからTwitterを消したのでますますTLを見る機会は減りそうという話もあったりする.

とここまで書いて世の中の人間は当たり前にprofile分けているんだろうかと思ったけどどうなんだろうか.