CI Visibility is not available in the selected site () at this time.

Overview

GitLab is a DevOps platform that automates the software development lifecycle with integrated CI/CD features, enabling you to deploy applications quickly and securely.

Set up tracing in GitLab to collect data on your pipeline executions, analyze performance bottlenecks, troubleshoot operational issues, and optimize your deployment workflows.

Compatibility

Pipeline VisibilityPlatformDefinition
Running pipelinesRunning pipelinesView pipeline executions that are running. Queued or waiting pipelines show with status “Running” on Datadog.
Partial retriesPartial pipelinesView partially retried pipeline executions.
Manual stepsManual stepsView manually triggered pipelines.
Queue timeQueue timeView the amount of time pipeline jobs sit in the queue before processing.
Logs correlationLogs correlationCorrelate pipeline spans to logs and enable job log collection.
Infrastructure metric correlationInfrastructure metric correlationCorrelate jobs to infrastructure host metrics for self-hosted GitLab runners.
Custom pre-defined tagsCustom pre-defined tagsSet custom tags to all generated pipeline, stages, and job spans.
Custom tags and measures at runtimeCustom tags and measures at runtimeConfigure custom tags and measures at runtime.
ParametersParametersSet custom env or service parameters when a pipeline is triggered.
Pipeline failure reasonsPipeline failure reasonsIdentify pipeline failure reasons from error messages.
Approval wait timeApproval wait timeView the amount of time jobs and pipelines wait for manual approvals.
Execution timeExecution timeView the amount of time pipelines have been running jobs. Gitlab refers to this metric as duration. Duration in Gitlab and execution time may show different values. Gitlab does not take into consideration jobs that failed due to certain kinds of failures (such as runner system failures).
Custom spansCustom spansConfigure custom spans for your pipelines.

The following GitLab versions are supported:

  • GitLab.com (SaaS)
  • GitLab >= 14.1 (self-hosted)
  • GitLab >= 13.7.0 (self-hosted) with the datadog_ci_integration feature flag enabled

Configure the Datadog integration

Configure the integration on a project or group by going to Settings > Integrations > Datadog for each project or group you want to instrument.

Configure the integration on a project or group by going to Settings > Integrations > Datadog for each project or group you want to instrument.

You can also activate the integration at the GitLab instance level, by going to Admin > Settings > Integrations > Datadog.

Enable the datadog_ci_integration feature flag to activate the integration. Run one of the following commands, which use GitLab’s Rails Runner, depending on your installation type:

Omnibus installations

sudo gitlab-rails runner "Feature.enable(:datadog_ci_integration)"

From source installations

sudo -u git -H bundle exec rails runner \
  -e production \
  "Feature.enable(:datadog_ci_integration)"

Kubernetes installations

kubectl exec -it <task-runner-pod-name> -- \
  /srv/gitlab/bin/rails runner "Feature.enable(:datadog_ci_integration)"

Then, configure the integration on a project by going to Settings > Integrations > Datadog for each project you want to instrument.

Note: Due to a bug in early versions of GitLab, the Datadog integration cannot be enabled at group or instance level on GitLab versions < 14.1, even if the option is available on GitLab's UI

For older versions of GitLab, you can use webhooks to send pipeline data to Datadog.

Note: Direct support with webhooks is not under development. Unexpected issues could happen. Datadog recommends that you update GitLab instead.

リポジトリ (または GitLab インスタンス設定) の Settings > Webhooks に移動し、新しい Webhook を追加します。

  • URL: https://webhook-intake./api/v2/webhook/?dd-api-key=<API_KEY> ここで、<API_KEY>Datadog API キーです。
  • Secret Token: 空白のままにします
  • Trigger: Job eventsPipeline events を選択します。

カスタムの env または service パラメーターを設定するには、Webhook の URL で他のクエリパラメーターを追加します: &env=<YOUR_ENV>&service=<YOUR_SERVICE_NAME>

Set custom tags

インテグレーションによって生成されたすべてのパイプラインとジョブのスパンにカスタムタグを設定するには、URL に URL エンコードされたクエリパラメーター tags を追加し、key:value ペアをカンマで区切って指定します。key:value のペアにカンマが含まれる場合は、引用符で囲んでください。例えば、key1:value1, "key2: value with , comma",key3:value3 を追加するには、以下の文字列を Webhook URL に追記する必要があります。

?tags=key1%3Avalue1%2C%22key2%3A+value+with+%2C+comma%22%2Ckey3%3Avalue3

インテグレーションコンフィギュレーション設定を入力します。

Active
インテグレーションを有効にします。
Datadog site
データを送信する Datadog サイトを指定します。
デフォルト: datadoghq.com
選択したサイト:
API URL (オプション)
データを直接送信するために使用される API URL をオーバーライドできます。これは、高度なシナリオでのみ使用されます。
デフォルト: (空、オーバーライドなし)
API key
データを送信するときに使用する API キーを指定します。Datadog の Integrations セクションの APIs タブで生成できます。
Service (オプション)
インテグレーションによって生成された各スパンにアタッチするサービス名を指定します。これを使用して、GitLab インスタンスを区別します。
デフォルト: gitlab-ci
Env (オプション)
インテグレーションによって生成された各スパンに接続する環境 (env タグ) を指定します。これを使用して、GitLab インスタンスのグループを区別します (例: ステージングまたは本番)。
デフォルト: none
タグ (オプション)
インテグレーションによって生成された各スパンに付ける任意のカスタムタグを指定します。1 行に 1 つのタグを key:value の形式で指定します。
デフォルト: (空、追加タグなし)
: GitLab.com と GitLab >= 14.8 セルフホスティングでのみ利用可能です。

Test settings ボタンを使用してインテグレーションをテストできます (プロジェクトでインテグレーションを構成する場合にのみ使用できます)。成功したら、Save changes をクリックしてインテグレーションのセットアップを完了します。

Integrate with Datadog Teams

To display and filter the teams associated with your pipelines, add team:<your-team> as a custom tag. The custom tag name must match your Datadog Teams team handle exactly.

Datadog でパイプラインデータを視覚化する

インテグレーションが正常に構成されたら、パイプラインが終了した後、CI Pipeline List ページと Executions ページの両方にデータが入力されます。

Pipelines ページには、各リポジトリのデフォルトブランチのデータのみが表示されます。

部分的およびダウンストリームパイプライン

Executions ページでは、検索バーで以下のフィルターを使用することができます。

Downstream Pipeline
可能な値: truefalse
Manually Triggered
可能な値: truefalse
Partial Pipeline
可能な値: retry
検索クエリに Partial Pipeline:retry を入力したパイプラインの実行画面

これらのフィルターは、ページの左側にあるファセットパネルからも適用することができます。

Partial Pipeline ファセットが展開され、値 Retry が選択されたファセットパネル、Partial Retry ファセットが展開され、値 true が選択されたファセットパネル

インフラストラクチャーメトリクスとジョブの相関付け

If you are using self-hosted GitLab runners, you can correlate jobs with the infrastructure that is running them. Datadog infrastructure correlation is possible using different methods:

Tagging runners with hostname

The GitLab runner must have a tag of the form host:<hostname>. Tags can be added while registering a new runner. As a result, this method is only available when the runner is directly running the job. This excludes executors that are autoscaling the infrastructure in order to run the job (such as the Kubernetes, Docker Autoscaler, or Instance executors) as it is not possible to add tags dynamically for those runners.

For existing runners:

Settings > CI/CD > Runners に移動して、該当するランナーを編集することで UI からタグを追加します。

ランナーの config.toml を更新することでタグを追加します。または、Settings > CI/CD > Runners に移動して、該当するランナーを編集することで UI からタグを追加します。

これらのステップの後、CI Visibility は各ジョブにホスト名を追加します。メトリクスを見るには、トレースビューでジョブスパンをクリックします。ドロワーに、ホストメトリクスを含む Infrastructure という新しいタブが表示されます。

Instance and Docker Autoscaler executors

CI Visibility は、“Instance” および “Docker Autoscaler” エグゼキューターについてもインフラストラクチャーメトリクスをサポートしています。詳細については、GitLab ジョブとインフラストラクチャーメトリクスの相関付けに関するガイドを参照してください。

Other executors

CI Visibility does not support Infrastructure metrics for other executors such as the Kubernetes executor.

パイプライン失敗時のエラーメッセージの表示

エラーメッセージは GitLab のバージョン 15.2.0 以降でサポートされています。

GitLab パイプラインの実行に失敗した場合、特定のパイプライン実行内の Errors タブの下の各エラーは、GitLab からのエラータイプに関連するメッセージを表示します。

GitLab の失敗の理由

各エラータイプに関連するメッセージとドメインについては、以下の表を参照してください。リストにないエラータイプは、Job failed というエラーメッセージと unknown というエラードメインになります。

エラーの種類エラーメッセージエラードメイン
unknown_failure原因不明で失敗不明
config_errorCI/CD コンフィギュレーションファイルのエラーによる失敗ユーザー
external_validation_failure外部パイプラインの検証に失敗不明
user_not_verifiedユーザーが認証されていないため、パイプラインが失敗したユーザー
activity_limit_exceededパイプラインのアクティビティ制限を超過したプロバイダー
size_limit_exceededパイプラインのサイズ制限を超過したプロバイダー
job_activity_limit_exceededパイプラインのジョブアクティビティ制限を超過したプロバイダー
deployments_limit_exceededパイプラインのデプロイ制限を超過したプロバイダー
project_deletedこのパイプラインに関連するプロジェクトが削除されたプロバイダー
api_failureAPI の失敗プロバイダー
stuck_or_timeout_failureパイプラインが停止している、またはタイムアウトしている不明
runner_system_failureランナーシステムの不具合による失敗プロバイダー
missing_dependency_failure依存関係がないため失敗不明
runner_unsupported未対応のランナーのため失敗プロバイダー
stale_scheduleスケジュールが古くなったため失敗プロバイダー
job_execution_timeoutジョブのタイムアウトによる失敗不明
archived_failureアーカイブの失敗プロバイダー
unmet_prerequisites前提条件が満たされていないため失敗不明
scheduler_failureスケジュール不具合による失敗プロバイダー
data_integrity_failureデータ整合性のため失敗プロバイダー
forward_deployment_failureデプロイメントの失敗不明
user_blockedユーザーによってブロックされたユーザー
ci_quota_exceededCI の割り当て超過プロバイダー
pipeline_loop_detectedパイプラインループを検出ユーザー
builds_disabledビルド無効ユーザー
deployment_rejectedデプロイメントが拒否されたユーザー
protected_environment_failure環境に関する失敗プロバイダー
secrets_provider_not_foundシークレットプロバイダーが見つからないユーザー
reached_max_descendant_pipelines_depth子孫パイプラインの最大値に到達ユーザー
ip_restriction_failureIP 制限の失敗プロバイダー

ジョブログ収集を有効にする

以下の GitLab バージョンは、ジョブログの収集をサポートしています。

  • GitLab.com (SaaS)
  • GitLab >= 15.3 (self-hosted) only if you are using object storage to store job logs
  • GitLab >= 14.8 (self-hosted) by enabling the datadog_integration_logs_collection feature flag
Note: Logs are billed separately from CI Visibility.
Note: Job log collection is not available for PCI-compliant organizations.

Job logs are collected in Log Management and are automatically correlated with the GitLab pipeline in CI Visibility. Log files larger than one GiB are truncated.

For more information about processing job logs collected from the GitLab integration, see the Processors documentation.

ジョブログの収集を有効にするには

  1. Click the Enable job logs collection checkbox in the GitLab integration Settings > Integrations > Datadog.
  2. Save changes をクリックします。
Datadog は、事前に署名された期間限定の URL を使って、GitLab ログのオブジェクトストレージからログファイルを直接ダウンロードします。 これは、Datadog サーバーがストレージにアクセスするためには、ストレージにネットワークの制限がかかっていてはいけないことを意味します。 エンドポイントが設定されている場合は、一般にアクセス可能な URL に解決される必要があります。
  1. Click Enable job logs collection checkbox in the GitLab integration under Settings > Integrations > Datadog.
  2. Save changes をクリックします。
Datadog は、事前に署名された期間限定の URL を使って、GitLab ログのオブジェクトストレージからログファイルを直接ダウンロードします。 これは、Datadog サーバーがストレージにアクセスするためには、ストレージにネットワークの制限がかかっていてはいけないことを意味します。 エンドポイントが設定されている場合は、一般にアクセス可能な URL に解決される必要があります。
  1. Enable the datadog_integration_logs_collection feature flag in your GitLab. This allows you to see the Enable job logs collection checkbox in the GitLab integration under Settings > Integrations > Datadog.
  2. Click Enable job logs collection.
  3. Save changes をクリックします。
: ログは CI Visibility とは別に課金されます。ログの保持、除外、インデックスの構成は、ログの設定で行います。GitLab ジョブのログは Datadog.product:cipipelinesource:gitlab のタグで識別できます。

参考資料