Skip to main content

OpenTelemetry を使用した外部監視の設定

GitHub Enterprise Server インスタンスの OpenTelemetry メトリックを収集して分析するために、外部監視システムを構成します。

メモ

OpenTelemetry メトリックは パブリック プレビュー にあり、変更される可能性があります。 プレビューに関するフィードバックをお聞かせください。 顧客の成功チームと共有したり、 コミュニティディスカッションの投稿にコメントを残したりすることができます。

外部監視アプローチ

OpenTelemetry を利用した外部監視により、GitHub Enterprise Server インスタンスを既存の監視インフラストラクチャやツールと統合できます。 GitHub Enterprise Server は、外部監視のために 2 つの主なアプローチを提供します。

  1.        **Prometheus エンドポイント**: 外部ツールがスクレーピングするために Prometheus 形式でメトリックを公開する
    
  2.        **カスタム OpenTelemetry パイプライン**: 外部監視システムにメトリックをプッシュするように OpenTelemetry コレクターを構成する
    

メモ

クラスターのデプロイでは、各ノードが独自のローカル メトリックを公開します。 これには、クラスター内のすべてのサーバーからメトリックを収集するノード サーバーが含まれますが、監視エンドポイントを介してのみ独自のローカル メトリックが公開されます。 クラスター内のすべてのノードからメトリックを収集するには、各ノードから個別に収集するように監視システムを構成する必要があります。

[前提条件]

  • GitHub Enterprise Server バージョン 3.18 以降で OpenTelemetry メトリックを有効にする
  • GitHub Enterprise Server インスタンスと外部監視システム間のネットワーク接続
  • GitHub Enterprise Server インスタンスと監視システムの両方への管理アクセス

監視アプローチの選択

インフラストラクチャと要件に最適な監視アプローチを選択します。

Prometheus エンドポイントは、次の場合に使用します。

  • 既存の Prometheus ベースの監視インフラストラクチャがある
  • プルベースの監視モデルを好む
  • 外部ツールを使用して GitHub Enterprise Server のメトリクスを取得する
  • 最小限の構成で簡単に統合する必要がある

カスタム OpenTelemetry パイプライン

次の場合は、カスタム OpenTelemetry パイプラインを使用します。

  • メトリックを複数の監視システムに同時にプッシュする必要がある
  • メトリックを外部に送信する前に、メトリックを変換、フィルター処理、または集計する必要がある
  • OTLP を優先するクラウドネイティブの監視ソリューションを使用している
  • 高度なメトリック処理機能が必要です

オプション 1: Prometheus エンドポイントの使用

OpenTelemetry 監視スタックには、Prometheus 形式で収集されたすべてのメトリックを公開する Prometheus 互換エンドポイントが含まれています。これにより、外部監視ツールとの統合が可能になります。 Prometheus のドキュメントの テキスト ベースの形式 を参照してください。

Prometheus エンドポイントの有効化

Prometheus エンドポイントは、[Management Console] またはコマンドライン インターフェースを使って有効化できます。

管理コンソールの使用

  1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある をクリックします。

  2. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。1. [ Site admin] サイドバーで、[[Management Console]] をクリックします。

  3. 監視設定で、[ OpenTelemetry を有効にする] を選択します。

  4. 必要に応じて、[ メトリックのリテンション期間 ] フィールドと [メトリックスクレーピング間隔 ] フィールドを調整してパフォーマンスを最適化します。

  5.        **[Prometheus 互換 (/metrics) エンドポイントを有効にする] を選択します**。
    
  6. [ エンドポイント パスワード ] フィールドに、エンドポイントへのアクセスを制御するための強力なパスワードを入力します。

  7. 必要に応じて、 コンマ区切りのリスト フィールドの信頼できる IPv4/IPv6 アドレスまたは CIDR ブロックに 、エンドポイントへのアクセスを許可される IP アドレスまたは CIDR ブロックを入力します。

  8. [設定] サイドバーで [設定の保存] をクリックします。

    メモ

    [Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。

  9. 設定の実行が完了するのを待ってください。

コマンド ライン インターフェイスの使用

  1. SSH 接続します GitHub Enterprise Server インスタンスに。

  2. Prometheus エンドポイントを有効にします。

    ghe-config observability.metrics.prometheus-endpoint-enabled true
    ghe-config-apply
    
  3. エンドポイントの認証を設定します (強くお勧めします)。

    ghe-config observability.metrics.prometheus-endpoint-password your-secure-password
    ghe-config-apply
    

Prometheus エンドポイントへのアクセス

Prometheus エンドポイントは、次の場合に使用できます。

https://[hostname]:8010/metrics

認証では次を使用します。

  •         **ユーザー名**: `ghes-metrics`
    
  •         **パスワード**: 構成で設定された値
    

メトリックをスクレイピングするための外部ツールの構成

Prometheus エンドポイントからメトリックをスクレイピングするように、さまざまな外部監視ツールを構成できます。

Prometheus

Prometheus 構成ファイルに次のジョブ構成を追加します。

scrape_configs:
  - job_name: 'github-enterprise-server'
    static_configs:
      - targets: ['your-ghes-hostname:8010']
    basic_auth:
      username: 'ghes-metrics'
      password: 'your-secure-password'
    scrape_interval: 30s
    metrics_path: '/metrics'
    scheme: https
    tls_config:
      # Set `true` only when testing with self-signed certificates
      insecure_skip_verify: false

その他の監視ツール

Prometheus エンドポイントは、次のような Prometheus 形式のメトリックをスクレイピングできる任意の監視ツールと互換性があります。

  • Grafana (Prometheus データ ソースを使用)
  • Datadog (Prometheus チェックを使用)
  • New Relic (Prometheus 統合を使用)
  • Victoria メトリックス
  • InfluxDB (Prometheus 入力プラグインを使用)

Prometheus エンドポイントのセキュリティに関する考慮事項

メトリック エンドポイントを保護するために、追加のセキュリティ対策を実装できます。

パスワード保護

Prometheus エンドポイントでは、アクセスを制限するためのパスワードの使用がサポートされています。 これは、[Management Console] またはコマンドライン インターフェイスを使用して構成できます。

  •         **管理コンソールの使用**:
    

    監視設定で、[ エンドポイント パスワード ] フィールドを使用して、エンドポイントへのアクセスを制御するための強力なパスワードを入力します。

  •         **コマンド ライン インターフェイスの使用**:
    
    ghe-config observability.metrics.prometheus-endpoint-password your-secure-password
    ghe-config-apply
    

IP 許可リスト

Prometheus エンドポイントでは、セキュリティ強化のための IP 許可リストがサポートされています。 これは、[Management Console] またはコマンドライン インターフェイスを使用して構成できます。

  •         **管理コンソールの使用**:
    

    監視設定で、 コンマ区切りリスト フィールドの信頼できる IPv4/IPv6 アドレスまたは CIDR ブロック を使用して、エンドポイントにアクセスできる IP アドレスまたは CIDR ブロックを入力します。

  •         **コマンド ライン インターフェイスの使用**:
    
    ghe-config observability.metrics.prometheus-endpoint-trusted-ips "10.0.0.0/8,192.168.0.0/16"
    ghe-config-apply
    

エンドポイントのテスト

メトリックがエクスポートされていることを確認します。

# Test the Prometheus endpoint
curl -u ghes-metrics:your-password https://your-ghes-hostname:8010/metrics

オプション 2: カスタム OpenTelemetry パイプラインの使用

GitHub Enterprise Server では、カスタム OpenTelemetry コレクター構成がサポートされており、カスタム パイプライン、エクスポーター、プロセッサを追加して監視機能を拡張できます。 これにより、既定の GitHub Enterprise Server オブザーバビリティスタックを維持しながら、メトリックを外部監視システムに送信できます。

カスタム構成に関する重要な考慮事項

  • カスタム設定は、既定の GitHub Enterprise Server OpenTelemetry 設定に追加されます
  •         **予約済みパス**: パス `/ghes` と `/internal` はGitHub Enterprise Server 内部使用用に予約されており、カスタム構成ファイルでは使用しないでください
    
  •         `otlp/ghes` および `prometheus/ghes` レシーバーは、カスタム パイプラインで使用できる GitHub Enterprise Server メトリックの組み込みソースです
    
  • 運用環境に適用する前に、非運用環境で構成を徹底的にテストする
  • 追加のパイプラインによって CPU とメモリの消費量が増加する可能性があるため、カスタム構成を有効にした後でリソースの使用状況を監視する

カスタム OpenTelemetry 構成の有効化

[Management Console] またはコマンド ライン インターフェイスを使用して、カスタム OpenTelemetry 構成を有効にすることができます。

管理コンソールの使用

  1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある をクリックします。

  2. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。1. [ Site admin] サイドバーで、[[Management Console]] をクリックします。

  3. 監視設定で、最初に [ OpenTelemetry を有効にする] を選択します。

  4. [ カスタム OpenTelemetry Collector パイプラインを有効にする] を選択します

  5. カスタム OpenTelemetry コレクター構成ファイル (*.yml) をアップロードするには、[ 参照]... ボタンを使用します。 一般的な監視システムの構成例を参照してください。

  6. [設定] サイドバーで [設定の保存] をクリックします。

    メモ

    [Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。

  7. 設定の実行が完了するのを待ってください。

コマンド ラインの使用

  1. GitHub Enterprise Server インスタンスに SSH で接続し、以下のコマンドを実行してください。

    ghe-config observability.metrics.custom-config-enabled true
    
  2.        `/data/user/common/otelcol.yaml`でカスタム OpenTelemetry 構成ファイルを作成します。
    
    sudo nano /data/user/common/otelcol.yaml
    
  3. カスタム構成を追加します ( 一般的な監視システムの構成例を参照)。

  4. 構成を適用します。

    ghe-config-apply
    

次の例では、一般的な監視プラットフォーム用にカスタム OpenTelemetry パイプラインを構成する方法を示します。 他のエクスポーターの詳細や独自のエクスポーターを作成するための情報については、OpenTelemetry Collectorsのリポジトリを参照してください。

Grafana Cloud

---
exporters:
  prometheusremotewrite:
    endpoint: "https://prometheus-us-central1.grafana.net/api/prom/push"
    headers:
      Authorization: "Bearer your-grafana-cloud-token"

service:
  pipelines:
    metrics:
      receivers: [otlp/ghes, prometheus/ghes]
      processors: [batch/ghes]
      exporters: [prometheusremotewrite]

Datadog

---
exporters:
  datadog:
    api:
      site: datadoghq.com
      key: your-datadog-api-key
    host_metadata:
      enabled: true

service:
  pipelines:
    metrics:
      receivers: [otlp/ghes, prometheus/ghes]
      processors: [batch/ghes]
      exporters: [datadog]

New Relic

---
exporters:
  otlp:
    endpoint: "https://otlp.nr-data.net:4317"
    headers:
      api-key: "your-new-relic-license-key"

service:
  pipelines:
    metrics:
      receivers: [otlp/ghes, prometheus/ghes]
      processors: [batch/ghes]
      exporters: [otlp]

汎用 OTLP エンドポイント

---
exporters:
  otlp:
    endpoint: "https://your-otel-collector:4317"
    headers:
      api-key: "your-api-key"
    tls:
      insecure: false

service:
  pipelines:
    metrics:
      receivers: [otlp/ghes, prometheus/ghes]
      processors: [batch/ghes]
      exporters: [otlp]

ネットワークとセキュリティに関する考慮事項

選択した監視アプローチに基づいて、ネットワークとセキュリティの設定を構成します。

TLS と証明書

外部監視システムへの安全な接続の場合:

  • 可能な場合は有効な TLS 証明書を使用する
  • 監視システムで適切な tls_config 設定を構成する
  • セキュリティ強化のために相互 TLS (mTLS) の使用を検討する

次のステップ