エラートラッキング

エラートラッキングにより、開発者はアプリケーションで発生したエラーを発見し、表示することができます。エラー情報はコードが開発されている場所に表示されるため、効率と認識が向上します。ユーザーはGitLabインテグレーションエラー追跡と Sentryベースのバックエンドのどちらかを選択できます。

エラートラッキングの仕組み

エラートラッキングが機能するためには、以下のものが必要です:

  • Sentry SDKで設定されたアプリケーション:エラーが発生すると、Sentry SDKはその情報を取得し、ネットワーク経由でバックエンドに送信します。バックエンドはすべてのエラーに関する情報を保存します。

  • エラートラッキングバックエンド:バックエンドはGitLab自身かSentryのどちらかになります。GitLabの場合、別のバックエンドをセットアップする必要がないため、_エラートラッキングを_インテグレーションと名付けます。それはすでに製品の一部だからです。

    どのバックエンドを選んでも、エラートラッキングの UIは同じです。

インテグレーションされたエラートラッキング

このガイドでは、プロジェクトにエラートラッキングを設定するための基本を、さまざまな言語の例を用いて説明します。

GitLab Observabilityが提供するエラートラッキングはSentry SDKに基づいています。あなたのアプリケーションでSentry SDKをどのように使うか、より詳細な例についてはSentry SDKのドキュメントを確認してください。

Sentryデータモデルによると、アイテムタイプは以下の通りです:

プロジェクトのエラートラッキングの有効化

使用するプログラミング言語に関わらず、まずはGitLabプロジェクトのエラートラッキングを有効にする必要があります。

このガイドでは、GitLab.com インスタンスを使用します。

前提条件:

  • エラートラッキングを有効にしたいプロジェクトがあること。新しいプロジェクトを作成する方法については、プロジェクトを作成するを参照してください。

GitLab をバックエンドとしてエラートラッキングを有効にするには:

  1. プロジェクトで、Settings > Monitor に進みます。
  2. Error Trackingを展開します。
  3. エラートラッキングを有効にする]で、[アクティブ]チェックボックスを選択します。
  4. Error tracking backend]で[GitLab]を選択します。
  5. 変更を保存を選択します。

  6. Data Source Name(DSN) 文字列をコピーします。SDK 実装の設定に必要です。

エラー追跡リスト

アプリケーションがSentry SDKを通じてエラー追跡APIにエラーを送信した後、それらは、[モニター] > [エラー追跡]タブ/セクションで利用できるようになります。

MonitorListErrors

エラー追跡の詳細

エラーの詳細] ビューでは、発生回数、影響を受けたユーザー、最初に発生した日、最後に発生した日など、エラーの詳細を確認できます。

スタックトレースをレビューすることもできます。

MonitorDetailErrors

エラーの送信

サポートされている言語SDKとSentryタイプ

次の表は、Sentry SDKで利用可能なすべてのイベントタイプと、GitLabエラートラッキングでサポートされているかどうかの一覧です。

対応言語テスト済みのSDKクライアントとバージョンエンドポイント対応アイテムタイプ
Gosentry-go/0.20.0store exception,message
Javasentry.java:6.18.1envelope exception,message
ノードJSsentry.javascript.node:7.38.0envelope exception,message
PHPsentry.php/3.18.0store exception,message
Pythonsentry.python/1.21.0envelope exception,messagesession
Rubysentry.ruby:5.9.0envelope exception,message
Rustsentry.rust/0.31.0envelope exception,messagesession

この表の詳細版については、本イシューを参照。

使用例

サポートされているすべての言語SDKの動作サンプルもご覧いただけます。リストされた各プログラムは、それぞれのSDKで例外、イベント、メッセージをキャプチャする方法の基本的な例を示しています。

より詳細なドキュメントについては、使用言語に特化したSentry SDKのドキュメントを参照してください。

生成されたDSNを回転

Sentryデータソース名(DSN)(クライアントキー)はシークレットであり、公開すべきではありません。漏洩が発生した場合は、以下の手順でSentry DSNをローテーションしてください:

  1. GitLab.comでプロフィール画像を選択してアクセストークンを作成します。次に Preferences を選択し、Access Token を選択します。APIスコープを追加してください。
  2. エラートラッキング 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"
    
  3. 利用可能なクライアントキー(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"
    
  4. 古いクライアント鍵を削除します。

    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インテグレーションを有効にするには:

  1. Sentry.ioにサインアップするか、独自のSentryインスタンスをデプロイしてください。
  2. 新しい Sentry プロジェクトを作成します。インテグレーションしたい GitLab プロジェクトごとに、新しい Sentry プロジェクトを作成します。
  3. Sentry 認証トークンを見つけるか生成します。SaaS バージョンの Sentry では、https://sentry.io/api/ で認証トークンを見つけるか生成することができます。トークンには少なくとも以下のスコープを与えてください:project:read,event:read, およびevent:write (イベントを解決するため)。
  4. GitLabで、エラートラッキングを有効にして設定します:
    1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
    2. Settings > Monitor > Error Trackingを選択します。
    3. エラートラッキングを有効にする]で、[アクティブ]チェックボックスを選択します。
    4. エラー追跡バックエンド]で、[Sentry]を選択します。
    5. Sentry API URLの下に、Sentryホスト名を入力します。例えば、https://sentry.example.com と入力します。SentryのSaaSバージョンの場合、ホスト名はhttps://sentry.io です。
    6. Auth Token」の下に、以前に生成したトークンを入力します。
    7. Sentryへの接続をテストし、プロジェクトドロップダウンリストに入力するには、[接続]を選択します。
    8. プロジェクトリストから、GitLabプロジェクトにリンクするSentryプロジェクトを選択します。
    9. 変更を保存を選択します。

これで、プロジェクトのサイドバーにある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 ステータスを返します。

このイシューを解決するには、プロジェクトのモニター機能を有効にしてください。