🕌
sentry-goのcaptureはclientの初期化を前提にしている
背景
Sentry の Cron Monitoring を触った時のメモ書き
環境
v0.30.0
内容
Sentry には Cron Monitoring というスケジュールジョブをモニタリングする機能がある。
Cron Monitoring では sentry.io(webブラウザ)でモニターを設定した上で、アプリケーションにおいて起動や失敗・例外時に Sentry に通知するシンプルな設計になっている。
Go のアプリケーションでの公式SDKは sentry-go が紹介されている。
Cron Monitoring の実装は Set Up Crons にあるように簡単に実装できる。
ただし、 CaptureCheckIn 関数は error 型を返さないので、注意が必要である。内部では hub#CaptureCheckIn が実行されるが、パッケージグローバルなHTTPクライアントが初期化されていない場合は EventID がnilを返す。
HTTPクライアントが初期化されるのは通常、Error Tracking 用途では Init 関数を使うことが多いはずだ。つまり、CaptureCheckIn の前にはInit が実行されている前提がある(※ hub自体を初期化する方法もある)
CaptureCheckInを使ってスケジュールバッチの起動を Sentry に通知する場合には、HTTPクライアントが初期化されているか、あるいはEventIDがnilの場合の考慮が必要ということである。
Discussion