New Relic
パフォーマンスモニタリングに New Relic を使っています。
Python Agent と、newrelic_sysmond を入れるだけでアプリケーションとサーバ両方のモニタリングをしてくれて、性能問題やトラブルが手早く解決できるようになりました。
iOS App もあり、いつでもサーバの状態がチェックできて心理的な安心感も得られます。
そんな使いだすと離れられない New Relic ですが、サーバへのデプロイ時刻を記録する機能があります。メリットは大きく分けて二点。
- ダッシュボードにデプロイした時刻がプロットされる(チームメンバーへの自然な共有)
- デプロイ前後のパフォーマンスを比較できる(デプロイの影響を測定)
導入も簡単なのでオススメです。
New Relic Deployment API
デプロイの記録は New Relic Deployment API を叩くだけです。
標準的な REST API なのでここではお手軽な curl を使います。
curl -H "x-api-key:REPLACE_WITH_YOUR_API_KEY" -d "deployment[app_name]=REPLACE_WITH_YOUR_APP_NAME" https://api.newrelic.com/deployments.xml
上記だけでも単純な記録は可能ですが、デプロイした人以外が確認したときに何をしたのかわかるように設定値を工夫してみました。
POST パラメータ | 概要 |
---|---|
deployment[description] | デプロイにかかった時間とデプロイ前後のコミットの GitHub Compare View の URL |
deployment[revision] |
git rev-parse --short HEAD で取得した commit-ish |
deployment[changelog] |
git --no-pager log --format=%s -1 HEAD で取得した commitlog |
deployment[user] | デプロイユーザー名 |
デプロイユーザー名の取得は (trap 'osascript -e "long user name of (system info)"' EXIT; getent passwd $USER | cut -d: -f5 | cut -d, -f1) || whoami
みたいな豪快ワンライナーで Linux, OSX 両対応しつつチームメンバーのフルネームを取得しています。
また、デプロイ時にほぼ同等の情報を HipChat にも通知してカジュアルな共有も行っています。