https://docs.sentry.io/platforms/go/
- Sentryからプロジェクトを作成してDSN Keyをメモる
- AlertsからSlack通知の設定
- GoのPath設定とSentry SDKのインストール
1 2 3 4 5 6 7 8 9 10 11 12 |
$ vim ~/.zshrc export GOROOT=/opt/homebrew/opt/go/libexec export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin $ go version go version go1.22.3 darwin/arm64 $ mkdir sentry-test $ cd sentry-test $ go mod init sentry-test $ go get github.com/getsentry/sentry-go |
- sentry-test/main.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
package main import ( "errors" "log" "os" "time" "github.com/getsentry/sentry-go" ) func main() { // 環境変数からDSNを取得 dsn := os.Getenv("SENTRY_DSN") if dsn == "" { log.Fatalf("SENTRY_DSN environment variable is not set") } // 初期化 err := sentry.Init(sentry.ClientOptions{ Dsn: dsn, }) if err != nil { log.Fatalf("sentry.Init: %s", err) } // エラーのキャプチャとタイムアウト defer sentry.Flush(2 * time.Second) // エラー発動 myError := errors.New("error!") // タグを追加してエラーをキャプチャ sentry.WithScope(func(scope *sentry.Scope) { scope.SetTag("environment", "test") scope.SetTag("module", "main") sentry.CaptureException(myError) }) log.Println("test ok: ", myError) } |
- 環境変数にDSNを登録する
1 |
$ export SENTRY_DSN=https://xxxx@xxxx.ingest.us.sentry.io/xxxx |
- 実行
1 2 |
$ go run main.go 2024/05/16 12:10:05 test ok: error! |
既存のアプリケーションからエラー出すのめんどうなのと、Sentryのアラートルールの挙動を確認する時にローカルでサクッとテストできるのが良き。
Was this helpful?
0 / 0
1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。