GitLab

GitLab モニターには、この Splunk Observability Cloud インテグレーションを使用してください。メリット、インストール、設定、メトリクスを参照してください

Splunk Distribution of OpenTelemetry Collectorは、Smart AgentレシーバーをGitLabモニタータイプで使用してGitLabを監視します。

GitLab には Prometheus エクスポータがバンドルされており、GitLab 自身と GitLab が依存するバンドルソフトウェアのパフォーマンスメトリクスをエクスポートするように設定することができます。これらのエクスポータは、このモニタータイプによってスクレイピングされるエンドポイントで Prometheus メトリクスを公開します。

このインテグレーションにより、以下をモニターすることができます:

  • Gitaly と Gitaly Cluster:Gitaly は、GitLab によって行われるすべての git コールを処理するための git リモートプロシージャコール(RPC)サービスです。このモニターは Gitlab Gitaly git RPC サーバーをスクレイピングします。

  • GitLab Runner:GitLab Runner は Prometheus を使用してモニターできます。詳細については、GitLab Docs で GitLab Runner のドキュメントを参照してください。

  • GitLab Sidekiq:Gitlab Sidekiq Prometheus Exporterをスクレイピングします。

  • GitLab Unicorn サーバー:Prometheus エクスポータが付属しています。Collector がエンドポイントにアクセスするには、コンテナまたはホストの IP アドレスを許可する必要があります。詳細については、GitLab Docs の IP allowlistドキュメントを参照してください。

  • GitLab Webservice:GitLabのRailsウェブサーバーにポッドごとに2つのWebserviceワーカーを提供します。

  • GitLab Workhorse:低速の HTTP 要求を処理する GitLab サービスです。Workhorse には組み込みの Prometheus エクスポータがあり、このモニターはメトリクスを収集するために使用します。

このモニタータイプは、GitLabバージョン9.3以降を使用するKubernetes、Linux、Windowsで利用可能です。

メリット

インテグレーションを設定すると、これらの機能にアクセスできるようになります:

インストール

このインテグレーションを導入するには、以下の手順に従ってください:

  1. Splunk Distribution of the OpenTelemetry Collector をホストまたはコンテナプラットフォームにデプロイします:

  2. [設定] セクションの説明に従ってインテグレーションを設定します。

  3. Splunk Distribution of OpenTelemetry Collector を再起動します。

GitLabを設定してPrometheusエンドポイントを監視する

Prometheus による GitLab の監視」の指示に従って、GitLab Prometheus エクスポータを設定し、メトリクス エンドポイント ターゲットを公開します。

以下のPrometheusエンドポイントターゲットが利用可能です:

モニタータイプ

リファレンス

デフォルトポート

標準パス

gitlab-exporter

GitLab エクスポーター

9168

/metrics

gitlab-gitaly

Gitaly と Gitaly Cluster

9236

/metrics

gitlab-runner

GitLab Runner

9252

/metrics

gitlab-sidekiq

GitLab SideKiq

3807

/metrics

gitlab-unicorn

GitLab Unicorn

8080

/metrics

gitlab-webservice

GitLab Webservice

8083

/metrics

gitlab-workhorse

GitLab Workhorse

9229

/metrics

prometheus/nginx-vts

PrometheusでGitLabを監視する

8060

/metrics

prometheus/node

ノードエクスポーター

9100

/metrics

prometheus/postgres

PostgreSQLサーバーエクスポーター

9187

/metrics

prometheus/prometheus

PrometheusでGitLabを監視する

9090

/metrics

prometheus/redis

Redisエクスポーター

9121

/metrics

重要な注意事項

  • /etc/gitlab/gitlab.rb を編集してGitLabを設定した場合、変更を有効にするにはコマンド gitlab-ctl reconfigure を実行します。

  • ファイル /var/opt/gitlab/nginx/conf/nginx-status.conf を編集してnginxを設定する場合は、コマンド gitlab-ctl restart を実行します。

    • 特にコンフィギュレーションファイル /var/opt/gitlab/nginx/conf/nginx-status.conf への変更は、 gitlab-ctl reconfigure が元のコンフィギュレーションファイルを復元するため、gitlab-ctl reconfigure の実行によって消去されることに注意してください。

  • OpenTelemetry Collector のホストまたはDockerコンテナからのリクエストを受け付けるように、GitLab Prometheusエクスポーター、nginx、GitLab Runnerを設定する必要があります。

/etc/gitlab/gitlab.rb の以下の設定は、GitLab Postgres PrometheusエクスポーターがどのIPアドレスからでもポート 9187 でのネットワーク接続を許可するように設定します:

postgres_exporter['listen_address'] = '0.0.0.0:9187'
postgres_exporter['listen_address'] = ':9187'

ファイル /var/opt/gitlab/nginx/conf/nginx-status.conf は nginx を設定し、location /metrics ブロックはメトリクス関連の設定を示します。ステートメント allow 172.17.0.0/16; を使用して 172.17.0.0/16 IP 範囲でのネットワーク接続を許可します。OpenTelemetry Collector に関連する IP アドレスがその IP 範囲にあることが前提です。

server {
    ...
    location /metrics {
    ...
    allow 172.17.0.0/16;
    deny all;
    }
}

/etc/gitlab-runner/config.toml ファイルは、GitLab Runner を設定します。GitLab Runner の Prometheus メトリクス HTTP サーバーが、どの IP アドレスからでもポート 9252 でのネットワーク接続を許可するように設定するには、次を使用します。

listen_address = "0.0.0.0:9252"
...

設定

Smart Agent モニターとCollector のインテグレーションを使用するには、以下の手順に従います:

  1. Smart Agent レシーバーを設定ファイルに含めます。

  2. レシーバーセクションおよびパイプラインセクションの両方で、Collector 構成にモニタータイプを追加します。

このインテグレーションを有効にするには、Collector構成に以下を追加します:

receivers:
  smartagent/gitlab:
    type: gitlab
    ... # Additional config

次に、監視したいサービスを設定ファイルの service.pipelines.metrics.receivers に追加します:

receivers:
  smartagent/gitlab-sidekiq:
    type: gitlab
    host: gitlab-webservice-default.default
    port: 3807
  smartagent/gitlab-workhorse:
    type: gitlab
    host: gitlab-webservice-default.default
    port: 9229

# ... Other sections

service:
  pipelines:
    metrics:
      receivers:
        - smartagent/gitlab-sidekiq
        - smartagent/gitlab-workhorse

# ... Other sections

設定オプション

次の表に、このモニターの設定オプションを示します:

オプション

必須

タイプ

説明

httpTimeout

いいえ

int64

読み取りと書き込みの両方の操作に対する HTTP タイムアウト時間。これは、

ParseDuration によって受け入れられる継続時間文字列デフォルト値は 10s です。

username

いいえ

string

各リクエストで使用される Basic Auth ユーザー名 (ある場合)。

password

いいえ

string

各リクエストで使用するBasic Authパスワード (ある場合)。

useHTTPS

いいえ

bool

true の場合、Collector は、

プレーンな HTTP ではなく HTTPS を使用してサーバーに接続します。デフォルト値は false です。

httpHeaders

いいえ

map of strings

HTTP ヘッダー名と値のマップ。同じメッセージヘッダーの

カンマ区切りの複数の値もサポートしています。

skipVerify

いいえ

bool

useHTTPStrue で、このオプションも true の場合、

エクスポータの TLS 証明書は検証されません。デフォルト値は false です。

caCertPath

いいえ

string

TLS証明書に署名したCA証明書へのパス。

skipVerifyfalse に設定されている場合は不要です。

clientCertPath

いいえ

string

TLSが必要な接続に使用するクライアントTLS証明書へのパス

clientKeyPath

いいえ

string

TLSが必要な接続に使用するクライアントTLSキーへのパス

host

はい

string

エクスポーターのホスト。デフォルトでは gitlab-webservice-default.default

port

はい

integer

エクスポーターのポート

useServiceAccount

いいえ

bool

認証にポッドサービスアカウントを使用します。デフォルト値は、

falseします。

metricPath

いいえ

string

エクスポーター・サーバー上のメトリクス・エンドポイントへのパス。通常は

/metrics で、これはデフォルト値です。

sendAllMetrics

いいえ

bool

Prometheusエクスポーターから出力されるすべてのメトリクスを

フィルタリングせずに送信します。このオプションは、Prometheus エクスポータモニターを直接使用する場合には、組み込みのフィルタリングがないため効果がなく、他のモニターに埋め込む場合にのみ効果があります。デフォルト値は false です。

メトリクス

このインテグレーションでは、以下のメトリクスを使用できます。

https://raw.githubusercontent.com/signalfx/splunk-otel-collector/main/internal/signalfx-agent/pkg/monitors/gitlab/metadata.yaml

備考

  • Splunk Observability Cloud で利用可能なメトリクスタイプの詳細は、「メトリクスタイプ」を参照してください。

  • ホストベースのサブスクリプションプランでは、デフォルトのメトリクスは、ホスト、コンテナ、バンドルメトリクスなど、Splunk Observability Cloud のホストベースのサブスクリプションに含まれるメトリクスです。カスタムメトリクスはデフォルトでは提供されていないため、料金が発生する場合があります。詳細については、「メトリクスカテゴリ」を参照してください。

  • MTSベースのサブスクリプションプランでは、すべてのメトリクスがカスタムです。

  • メトリクスを追加するには、「その他のメトリクスの追加」で extraMetrics の設定方法を参照してください。

トラブルシューティング

__ ___ ___ _ ______ _____________ _____ ________ ___ ___ ___ ____ __ ___ ____ ____ __ ______ _____________ ______ ___ ___ ___ ____ __ ___ _________ _____

_________ __ ______ _____________ _____ _________

_________ __ ___________ _________ ___ ____ _____ _____

  • ___ _ ________ ___ ___ _______ _______ _________ _______ __ ______ ________

  • ____ ___ ______ ______________ ____ _____ _____ _______ __ ___________ ____ __________ _________ ___ ______ _________ __________ __ _____ ___ ____ _______