sentry-go-sdk
Goアプリケーションへの完全なSentry SDK導入を支援するスキル。「GoにSentryを追加したい」「sentry-goをインストールしたい」「Goでエラー監視を設定したい」といった要望や、トレーシング・ロギング・メトリクス・cronの設定時に使用します。net/http、Gin、Echo、Fiber、FastHTTP、Iris、Negroni、gRPCに対応しています。
description の原文を見る
Full Sentry SDK setup for Go. Use when asked to "add Sentry to Go", "install sentry-go", "setup Sentry in Go", or configure error monitoring, tracing, logging, metrics, or crons for Go applications. Supports net/http, Gin, Echo, Fiber, FastHTTP, Iris, Negroni, and gRPC.
SKILL.md 本文
All Skills>SDK Setup> Go SDK
Sentry Go SDK
Go プロジェクトをスキャンして、Sentry の完全なセットアップをガイドする実用的なウィザードです。
このスキルを呼び出すタイミング
- ユーザーが Go アプリで「Sentry を追加」または「Sentry をセットアップ」を希望
- ユーザーが Go でエラーモニタリング、トレーシング、ログ、メトリクス、またはクローン機能を必要とする
- ユーザーが
sentry-go、github.com/getsentry/sentry-go、または Go Sentry SDK について言及 - ユーザーが Go でパニック、HTTP ハンドラー、またはスケジュール済みジョブを監視したい
注記: 以下の SDK バージョンと API は、執筆時点の Sentry ドキュメント (sentry-go v0.43.0+) を反映しています。 v0.33.0+ 以降、SDK は Go 1.25 以降 が必要です (最新の 2 つの Go メジャーバージョンをサポート)。 実装前に必ず docs.sentry.io/platforms/go/ で確認してください。
フェーズ 1: 検出
推奨事項を提示する前に、これらのコマンドを実行してプロジェクトを理解します:
# Check existing Sentry dependency
grep -i sentry go.mod 2>/dev/null
# Detect web framework
grep -E "gin-gonic/gin|labstack/echo|gofiber/fiber|valyala/fasthttp|kataras/iris|urfave/negroni" go.mod 2>/dev/null
# Detect gRPC
grep "google.golang.org/grpc" go.mod 2>/dev/null
# Detect logging libraries
grep -E "sirupsen/logrus|go.uber.org/zap|rs/zerolog|log/slog" go.mod go.sum 2>/dev/null
# Detect cron / scheduler patterns
grep -E "robfig/cron|go-co-op/gocron|jasonlvhit/gocron" go.mod 2>/dev/null
# Detect OpenTelemetry usage
grep "go.opentelemetry.io" go.mod 2>/dev/null
# Check for companion frontend
ls frontend/ web/ client/ ui/ 2>/dev/null
確認すべき点:
sentry-goは既にgo.modにありますか? ある場合は、フェーズ 2 (機能構成) にスキップします。- どのフレームワークが使用されていますか? (インストールするサブパッケージとミドルウェアを決定します)
- どのログライブラリですか? (自動ログキャプチャを有効にします)
- クローン/スケジューラーパターンが存在しますか? (クローン推奨をトリガーします)
- コンパニオンフロントエンドディレクトリはありますか? (フェーズ 4 クロスリンクをトリガーします)
フェーズ 2: 推奨
見つけたものに基づいて、具体的な推奨事項を提示します。オープンエンドの質問をしないでください — 提案から始めてください:
推奨 (コアカバレッジ):
- ✅ エラーモニタリング — 常に; パニックと未処理エラーをキャプチャ
- ✅ トレーシング — HTTP ハンドラー、gRPC、または DB 呼び出しが検出された場合
- ✅ ログ — logrus、zap、zerolog、または slog が検出された場合
オプション (強化された可観測性):
- ⚡ メトリクス — ビジネス KPI / SLO のカスタムカウンターとゲージ
- ⚡ クローン — スケジュール済みジョブのサイレント障害を検出
- ⚠️ プロファイリング — sentry-go v0.31.0 で削除; 代替案については
references/profiling.mdを参照
推奨ロジック:
| 機能 | 推奨タイミング... |
|---|---|
| エラーモニタリング | 常に — 交渉不可のベースライン |
| トレーシング | net/http、gin、echo、fiber、gRPC、または DB 呼び出しが検出された場合 |
| ログ | logrus、zap、zerolog、または log/slog インポートが検出された場合 |
| メトリクス | ビジネスイベント、SLO トラッキング、またはカウンターが必要な場合 |
| クローン | robfig/cron、gocron、またはスケジュール済みジョブパターンが検出された場合 |
| プロファイリング | ⚠️ v0.31.0 で削除 — 推奨しないでください; references/profiling.md を参照 |
提案: 「エラーモニタリング + トレーシング [該当する場合はログ] をセットアップすることをお勧めします。メトリクスまたはクローンも追加しましょうか?」
フェーズ 3: ガイド
インストール
# Core SDK (always required)
go get github.com/getsentry/sentry-go
# Framework sub-package — install only what matches detected framework:
go get github.com/getsentry/sentry-go/http # net/http
go get github.com/getsentry/sentry-go/gin # Gin
go get github.com/getsentry/sentry-go/echo # Echo
go get github.com/getsentry/sentry-go/fiber # Fiber
go get github.com/getsentry/sentry-go/fasthttp # FastHTTP
# Logging sub-packages — install only what matches detected logging lib:
go get github.com/getsentry/sentry-go/logrus # Logrus
go get github.com/getsentry/sentry-go/slog # slog (stdlib, Go 1.21+)
go get github.com/getsentry/sentry-go/zap # Zap
go get github.com/getsentry/sentry-go/zerolog # Zerolog
# gRPC interceptors (only if google.golang.org/grpc is detected):
go get github.com/getsentry/sentry-go/grpc
# OpenTelemetry bridge (only if OTel is already in use):
go get github.com/getsentry/sentry-go/otel
クイックスタート — 推奨初期化
他のコードより前に main() に追加します。この設定は、バランスの取れたデフォルト値で最も多くの機能を有効にします:
import (
"log"
"os"
"time"
"github.com/getsentry/sentry-go"
)
err := sentry.Init(sentry.ClientOptions{
Dsn: os.Getenv("SENTRY_DSN"),
Environment: os.Getenv("SENTRY_ENVIRONMENT"), // "production", "staging", etc.
Release: release, // inject via -ldflags at build time
SendDefaultPII: true,
AttachStacktrace: true,
// Tracing (adjust sample rate for production)
EnableTracing: true,
TracesSampleRate: 1.0, // lower to 0.1–0.2 in high-traffic production
// Logs
EnableLogs: true,
})
if err != nil {
log.Fatalf("sentry.Init: %s", err)
}
defer sentry.Flush(2 * time.Second)
ビルド時に Release を注入する (推奨):
var release string // set by -ldflags
// go build -ldflags="-X main.release=my-app@$(git describe --tags)"
フレームワークミドルウェア
sentry.Init の後、フレームワーク用の Sentry ミドルウェアを登録します:
| フレームワーク | インポートパス | ミドルウェア呼び出し | Repanic | WaitForDelivery |
|---|---|---|---|---|
net/http | .../sentry-go/http | sentryhttp.New(opts).Handle(h) | true | false |
| Gin | .../sentry-go/gin | router.Use(sentrygin.New(opts)) | true | false |
| Echo | .../sentry-go/echo | e.Use(sentryecho.New(opts)) | true | false |
| Fiber | .../sentry-go/fiber | app.Use(sentryfiber.New(opts)) | false | true |
| FastHTTP | .../sentry-go/fasthttp | sentryfasthttp.New(opts).Handle(h) | false | true |
| Iris | .../sentry-go/iris | app.Use(sentryiris.New(opts)) | true | false |
| Negroni | .../sentry-go/negroni | n.Use(sentrynegroni.New(opts)) | true | false |
注記: Fiber と FastHTTP は
valyala/fasthttpの上に構築されており、組み込み回復がありません。これらの場合はRepanic: false, WaitForDelivery: trueを使用します。
ハンドラーでのハブアクセス:
// net/http, Negroni:
hub := sentry.GetHubFromContext(r.Context())
// Gin:
hub := sentrygin.GetHubFromContext(c)
// Echo:
hub := sentryecho.GetHubFromContext(c)
// Fiber:
hub := sentryfiber.GetHubFromContext(c)
gRPC 統合
gRPC サーバーとクライアントの場合、代わりに sentrygrpc インターセプターを使用します:
import sentrygrpc "github.com/getsentry/sentry-go/grpc"
// Server: register interceptors when creating the gRPC server
server := grpc.NewServer(
grpc.UnaryInterceptor(sentrygrpc.UnaryServerInterceptor()),
grpc.StreamInterceptor(sentrygrpc.StreamServerInterceptor()),
)
// Client: register interceptors when dialing
conn, err := grpc.NewClient(
address,
grpc.WithUnaryInterceptor(sentrygrpc.UnaryClientInterceptor()),
grpc.WithStreamInterceptor(sentrygrpc.StreamClientInterceptor()),
)
// Hub access inside a gRPC handler:
hub := sentry.GetHubFromContext(ctx)
合意した各機能について
機能を 1 つずつウォークスルーします。各機能の参考ファイルを読み込み、ステップに従い、次に進む前に検証します:
| 機能 | 参考ファイル | 読み込むタイミング... |
|---|---|---|
| エラーモニタリング | ${SKILL_ROOT}/references/error-monitoring.md | 常に (ベースライン) |
| トレーシング | ${SKILL_ROOT}/references/tracing.md | HTTP ハンドラー / 分散トレーシング |
| プロファイリング | ${SKILL_ROOT}/references/profiling.md | パフォーマンス重視の本番アプリ |
| ログ | ${SKILL_ROOT}/references/logging.md | logrus / zap / zerolog / slog が検出された場合 |
| メトリクス | ${SKILL_ROOT}/references/metrics.md | ビジネス KPI / SLO トラッキング |
| クローン | ${SKILL_ROOT}/references/crons.md | スケジューラー / クローン ジョブパターンが検出された場合 |
各機能について: ${SKILL_ROOT}/references/<feature>.md を読み、ステップに従い、動作を確認します。
設定リファレンス
キー ClientOptions フィールド
| オプション | 型 | デフォルト | 目的 |
|---|---|---|---|
Dsn | string | "" | 空の場合は SDK は無効化; env: SENTRY_DSN |
Environment | string | "" | 例: "production"; env: SENTRY_ENVIRONMENT |
Release | string | "" | 例: "my-app@1.0.0"; env: SENTRY_RELEASE |
SendDefaultPII | bool | false | IP、リクエストヘッダーを含める |
AttachStacktrace | bool | false | CaptureMessage 呼び出しにスタックトレースを追加 |
SampleRate | float64 | 1.0 | エラーイベントサンプルレート (0.0 は 1.0 として扱われます) |
EnableTracing | bool | false | パフォーマンストレーシングを有効化 |
TracesSampleRate | float64 | 0.0 | トランザクションサンプルレート |
TracesSampler | TracesSampler | nil | カスタムトランザクション単位のサンプリング (レートをオーバーライド) |
EnableLogs | bool | false | Sentry ログ機能を有効化 |
MaxBreadcrumbs | int | 100 | イベント単位の最大ブレッドクラム数 |
MaxErrorDepth | int | 100 | エラーチェーンアンラップの最大深さ |
Debug | bool | false | SDK デバッグ出力の詳細表示 |
BeforeSend | func | nil | エラーイベントを変更/ドロップするフック |
BeforeSendTransaction | func | nil | トランザクションイベントを変更/ドロップするフック |
IgnoreErrors | []string | nil | ドロップするエラーの正規表現パターン |
IgnoreTransactions | []string | nil | ドロップするトランザクションの正規表現パターン |
環境変数
| 変数 | マップ先 | 目的 |
|---|---|---|
SENTRY_DSN | Dsn | Data Source Name |
SENTRY_RELEASE | Release | アプリバージョン (例: my-app@1.0.0) |
SENTRY_ENVIRONMENT | Environment | デプロイメント環境 |
HTTP_PROXY / HTTPS_PROXY | HTTPProxy / HTTPSProxy | アウトバウンドプロキシ |
ClientOptions で設定されたオプションは、環境変数を オーバーライド します。
検証
Sentry がイベントを受け取っていることをテストします:
// In a handler or test — triggers a real error event:
sentry.CaptureMessage("Sentry Go SDK test")
// Or trigger a captured panic (with recovery middleware in place):
panic("sentry test panic")
数秒以内に Sentry ダッシュボードを確認します。何も表示されない場合:
ClientOptionsでDebug: trueを設定します — SDK の内部を stdout に出力- DSN が正しく、プロジェクトが存在することを確認
sentry.Flush(2 * time.Second)が呼び出されていることを確認 (デフォルトではイベントは非同期)
フェーズ 4: クロスリンク
Go セットアップを完了した後、Sentry カバレッジが欠けているコンパニオンフロントエンドをチェックします:
ls frontend/ web/ client/ ui/ 2>/dev/null
cat frontend/package.json web/package.json 2>/dev/null | grep -E '"react"|"svelte"|"vue"|"next"'
Sentry が構成されていないフロントエンドディレクトリが存在する場合、一致するスキルを提案します:
| フロントエンド検出 | スキルを提案 |
|---|---|
| React / Next.js | sentry-react-sdk |
| Svelte / SvelteKit | sentry-svelte-sdk |
| Vue | @sentry/vue を使用 — docs.sentry.io/platforms/javascript/guides/vue/ を参照 |
| その他 JS/TS | sentry-react-sdk (汎用ブラウザ JS パターンをカバー) |
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| イベントが表示されない | Debug: true を設定、DSN を確認、sentry.Flush() が呼び出されていることを確認 |
sentry.Init がエラーを返す | 形式が不正な DSN — 形式を確認: https://<key>@o<org>.ingest.sentry.io/<project> |
| パニックがキャプチャされない | フレームワークミドルウェアがハンドラーの前に登録されていることを確認 |
defer sentry.Flush が実行されない | os.Exit() は defer をスキップします — os.Exit() の前に sentry.Flush() を明示的に呼び出す |
| スタックトレースが見つかない | CaptureMessage に AttachStacktrace: true を設定; CaptureException では自動的に機能 |
| ゴルーチンイベントがコンテキストを失う | ゴルーチンを生成する前にハブをクローン: hub := sentry.CurrentHub().Clone() |
| トランザクションが多すぎる | TracesSampleRate を低下させるか、TracesSampler を使用してヘルスチェック / メトリクスエンドポイントをドロップ |
| Fiber/FastHTTP が回復しない | fasthttp ベースのフレームワークに Repanic: false, WaitForDelivery: true を使用 |
SampleRate: 0.0 がすべてのイベントを送信 | 0.0 は 1.0 として扱われます; すべてをドロップするには、代わりに Dsn: "" を設定 |
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- getsentry
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/getsentry/sentry-for-ai / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。