- エラートラッキングの仕組み
- インテグレーションされたエラートラッキング
- エラー追跡リスト
- エラー追跡の詳細
- エラーの送信
- 使用例
- 生成されたDSNを回転
- SDKの問題のデバッグ
- Sentryエラー追跡
- トラブルシューティング
エラートラッキング
エラートラッキングにより、開発者はアプリケーションで発生したエラーを発見し、表示することができます。エラー情報はコードが開発されている場所に表示されるため、効率と認識が向上します。ユーザーはGitLabインテグレーションエラー追跡と Sentryベースのバックエンドのどちらかを選択できます。
エラートラッキングの仕組み
エラートラッキングが機能するためには、以下のものが必要です:
-
Sentry SDKで設定されたアプリケーション:エラーが発生すると、Sentry SDKはその情報を取得し、ネットワーク経由でバックエンドに送信します。バックエンドはすべてのエラーに関する情報を保存します。
-
エラートラッキングバックエンド:バックエンドはGitLab自身かSentryのどちらかになります。GitLabの場合、別のバックエンドをセットアップする必要がないため、_エラートラッキングを_インテグレーションと名付けます。それはすでに製品の一部だからです。
- GitLabバックエンドを使うには、統合エラートラッキングをご覧ください。
- Sentryをバックエンドとして使うには、Sentryエラートラッキングをご覧ください。
どのバックエンドを選んでも、エラートラッキングの UIは同じです。
インテグレーションされたエラートラッキング
このガイドでは、プロジェクトにエラートラッキングを設定するための基本を、さまざまな言語の例を用いて説明します。
GitLab Observabilityが提供するエラートラッキングはSentry SDKに基づいています。あなたのアプリケーションでSentry SDKをどのように使うか、より詳細な例についてはSentry SDKのドキュメントを確認してください。
Sentryデータモデルによると、アイテムタイプは以下の通りです:
- イベント
- トランザクション
- アタッチメント
- セッション
- セッション
- ユーザーフィードバック(ユーザーレポーターとも呼ばれます)
- クライアントレポート
プロジェクトのエラートラッキングの有効化
使用するプログラミング言語に関わらず、まずはGitLabプロジェクトのエラートラッキングを有効にする必要があります。
このガイドでは、GitLab.com
インスタンスを使用します。
前提条件:
- エラートラッキングを有効にしたいプロジェクトがあること。新しいプロジェクトを作成する方法については、プロジェクトを作成するを参照してください。
GitLab をバックエンドとしてエラートラッキングを有効にするには:
- プロジェクトで、Settings > Monitor に進みます。
- Error Trackingを展開します。
- エラートラッキングを有効にする]で、[アクティブ]チェックボックスを選択します。
- Error tracking backend]で[GitLab]を選択します。
-
変更を保存を選択します。
- Data Source Name(DSN) 文字列をコピーします。SDK 実装の設定に必要です。
エラー追跡リスト
アプリケーションがSentry SDKを通じてエラー追跡APIにエラーを送信した後、それらは、[モニター] > [エラー追跡]タブ/セクションで利用できるようになります。
エラー追跡の詳細
エラーの詳細] ビューでは、発生回数、影響を受けたユーザー、最初に発生した日、最後に発生した日など、エラーの詳細を確認できます。
スタックトレースをレビューすることもできます。
エラーの送信
サポートされている言語SDKとSentryタイプ
次の表は、Sentry SDKで利用可能なすべてのイベントタイプと、GitLabエラートラッキングでサポートされているかどうかの一覧です。
対応言語 | テスト済みのSDKクライアントとバージョン | エンドポイント | 対応アイテムタイプ |
---|---|---|---|
Go | sentry-go/0.20.0 | store |
exception ,message
|
Java | sentry.java:6.18.1 | envelope |
exception ,message
|
ノードJS | sentry.javascript.node:7.38.0 | envelope |
exception ,message
|
PHP | sentry.php/3.18.0 | store |
exception ,message
|
Python | sentry.python/1.21.0 | envelope |
exception ,message 、session
|
Ruby | sentry.ruby:5.9.0 | envelope |
exception ,message
|
Rust | sentry.rust/0.31.0 | envelope |
exception ,message 、session
|
この表の詳細版については、本イシューを参照。
使用例
サポートされているすべての言語SDKの動作サンプルもご覧いただけます。リストされた各プログラムは、それぞれのSDKで例外、イベント、メッセージをキャプチャする方法の基本的な例を示しています。
より詳細なドキュメントについては、使用言語に特化したSentry SDKのドキュメントを参照してください。
生成されたDSNを回転
Sentryデータソース名(DSN)(クライアントキー)はシークレットであり、公開すべきではありません。漏洩が発生した場合は、以下の手順でSentry DSNをローテーションしてください:
- GitLab.comでプロフィール画像を選択してアクセストークンを作成します。次に Preferences を選択し、Access Token を選択します。APIスコープを追加してください。
-
エラートラッキング API を使って、新しい Sentry DSN を作成します:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" \ "https://gitlab.example.com/api/v4/projects/<your_project_number>/error_tracking/client_keys"
-
利用可能なクライアントキー(Sentry DSN)を取得します。新しく作成したSentry DSNが所定の位置にあることを確認します。次に、古いクライアントキーのキーIDをメモします:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/<your_project_number>/error_tracking/client_keys"
-
古いクライアント鍵を削除します。
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/<your_project_number>/error_tracking/client_keys/<key_id>"
SDKの問題のデバッグ
Sentryがサポートする言語の大部分は、初期化の一部としてdebug
オプションを公開します。これは、送信エラーの問題をデバッグするときに役立ちます。それ以外にも、APIに送信する前にJSONを出力できるオプションがあります。
Sentryエラー追跡
Sentryはオープンソースのエラー追跡システムです。GitLabでは、管理者がSentryをGitLabに接続することで、ユーザーはGitLabでSentryのエラー一覧を見ることができます。
Sentryのデプロイ
クラウドホストのSentryにサインアップするか、独自のオンプレミスインスタンスをデプロイすることができます。
プロジェクトのSentryインテグレーションを有効にします。
GitLabはプロジェクトにSentryを接続する方法を提供します。
前提条件:
- 少なくともプロジェクトの開発者ロールを持っている必要があります。
Sentryインテグレーションを有効にするには:
- Sentry.ioにサインアップするか、独自のSentryインスタンスをデプロイしてください。
- 新しい Sentry プロジェクトを作成します。インテグレーションしたい GitLab プロジェクトごとに、新しい Sentry プロジェクトを作成します。
-
Sentry 認証トークンを見つけるか生成します。SaaS バージョンの Sentry では、https://sentry.io/api/ で認証トークンを見つけるか生成することができます。トークンには少なくとも以下のスコープを与えてください:
project:read
,event:read
, およびevent:write
(イベントを解決するため)。 - GitLabで、エラートラッキングを有効にして設定します:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- Settings > Monitor > Error Trackingを選択します。
- エラートラッキングを有効にする]で、[アクティブ]チェックボックスを選択します。
- エラー追跡バックエンド]で、[Sentry]を選択します。
-
Sentry API URLの下に、Sentryホスト名を入力します。例えば、
https://sentry.example.com
と入力します。SentryのSaaSバージョンの場合、ホスト名はhttps://sentry.io
です。 - Auth Token」の下に、以前に生成したトークンを入力します。
- Sentryへの接続をテストし、プロジェクトドロップダウンリストに入力するには、[接続]を選択します。
- プロジェクトリストから、GitLabプロジェクトにリンクするSentryプロジェクトを選択します。
- 変更を保存を選択します。
これで、プロジェクトのサイドバーにあるMonitor > Error Trackingにアクセスし、Sentry エラーのリストを見ることができます。
SentryのGitLabインテグレーション
Sentry の GitLab インテグレーションを有効にするには、Sentry のドキュメントにある手順に従います。
GitLab Runner の有効化
GitLab Runner を Sentry で設定するには、Advanced configurationで参照したように、sentry_dsn
の値を Runner のconfig.toml
設定ファイルに追加する必要があります。
Sentry の設定中にプロジェクトの種類を尋ねられたら、Go を選択してください。
以下のエラーを修正するには、Sentry.io > Project Settings > Client Keys(DSN) > Show deprecated DSNで非推奨DSNを指定してください。
ERROR: Sentry failure builds=0 error=raven: dsn missing private key
トラブルシューティング
エラートラッキングを使用していると、以下のようなイシューに遭遇することがあります。
エラーConnection failed. Check auth token and try again
プロジェクトの設定でモニター機能が無効になっている場合、プロジェクトのSentryインテグレーションを有効にしようとするとエラーが表示されることがあります。その結果、/project/path/-/error_tracking/projects.json?api_host=https:%2F%2Fsentry.example.com%2F&token=<token>
へのリクエストは 404 ステータスを返します。
このイシューを解決するには、プロジェクトのモニター機能を有効にしてください。