あしたのチームコンピテンシークラウド開発チームでエンジニアをしております、kihaです。
最近気になっていることは、PayPay祭りに乗じて購入したMac mini (2018)特盛がまだ届かないことです届きました。割引率いいですもんねぇ、みんなMac欲しいんですねぇ...
今回は、コンピテンシークラウド開発チームで導入しているエラートラッキングサービスSentryのお話をしたいと思います。
Sentryとは
Sentry*1はオープンソースのエラートラッキングツールで、本番環境で発生したエラーを収集してコード中のどの箇所でエラーとなった(例外が発生したか)を記録してくれるツールです。
基本的にはSentryがホスティングしているサービスを利用するか
Dockerコンテナ構成が公開されているので*2これをおもむろにdocker-compose build
とかするとオンプレ運用できます。また、主流の言語やフレームワークにはおおよそ対応しているので安心です。
Railsならsentry-raven gemを導入し、ほんのちょっと設定してあげるだけですぐに利用することができます。
ところでエラートラッキングしてますか?
特に運用保守において、バグのある状態でリリースした場合に開発者がすぐに気付けるかどうか、調査の基礎となるエラー時の情報を得られるかどうかが非常に肝心だと思います。大きな機能のリリース直後では、テストでは担保できなかったバグの発見につながったりします。
また、大規模なリファクタリングを本番に適用する際にも、テストはパスしていたが、プログラム的な構造の変化によって不幸にも落ちてしまう部分にいち早く気づき修正リリースをすることができます。導入して気づいた点としては、Sentryはこれらのことを実現するための機能が優れています。
Slack連携
Slackで監視し、いち早くエラーに気づくことが大切です。致命的なエラーが発生した際にはチケットを追加し、調査修正PRを出します。また、大きな機能のリリース直後に不具合に気づくきっかけとなります。
リリースバージョン毎の発生エラーを確認できる
Sentryは本番環境にデプロイされたリリースバージョンを認識するので、どのリリースからどのようなバグが発生したかといったことや、やけにエラーが発生し始めたリリースを追いやすくなっています。
バッチサーバで発生したエラーもトラックできる
Sentryでトラックできるのはアプリサーバで起きたエラーだけではありません。バッチサーバで起きたエラーも特に設定せずともしっかりトラックしてくれるので、調査に役立ちます。Sidekiqアダプターでもトラックできるのか、導入前の懸念点だったのですが、バッチリでした。
センシティブな情報は個別にfilterできたり、カスタムアラートを設定できたりと他にもいろいろあるのですが、この辺で。
まとめ
あしたのチームでは、一緒に日夜発生するバグと戦ってくれるエンジニアを募集しています!
*2:インストール手順のドキュメントも詳しい https://docs.sentry.io/server/installation/docker/