🕌

sentry-goのcaptureはclientの初期化を前提にしている

2024/12/31に公開

背景

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