外部監視アプローチ
OpenTelemetry を利用した外部監視により、GitHub Enterprise Server インスタンスを既存の監視インフラストラクチャやツールと統合できます。 GitHub Enterprise Server は、外部監視のために 2 つの主なアプローチを提供します。
-
**Prometheus エンドポイント**: 外部ツールがスクレーピングするために Prometheus 形式でメトリックを公開する -
**カスタム OpenTelemetry パイプライン**: 外部監視システムにメトリックをプッシュするように OpenTelemetry コレクターを構成する
メモ
クラスターのデプロイでは、各ノードが独自のローカル メトリックを公開します。 これには、クラスター内のすべてのサーバーからメトリックを収集するノード サーバーが含まれますが、監視エンドポイントを介してのみ独自のローカル メトリックが公開されます。 クラスター内のすべてのノードからメトリックを収集するには、各ノードから個別に収集するように監視システムを構成する必要があります。
[前提条件]
- GitHub Enterprise Server バージョン 3.18 以降で OpenTelemetry メトリックを有効にする
- GitHub Enterprise Server インスタンスと外部監視システム間のネットワーク接続
- GitHub Enterprise Server インスタンスと監視システムの両方への管理アクセス
監視アプローチの選択
インフラストラクチャと要件に最適な監視アプローチを選択します。
Prometheus エンドポイント (ほとんどのユーザーに推奨)
Prometheus エンドポイントは、次の場合に使用します。
- 既存の Prometheus ベースの監視インフラストラクチャがある
- プルベースの監視モデルを好む
- 外部ツールを使用して GitHub Enterprise Server のメトリクスを取得する
- 最小限の構成で簡単に統合する必要がある
カスタム OpenTelemetry パイプライン
次の場合は、カスタム OpenTelemetry パイプラインを使用します。
- メトリックを複数の監視システムに同時にプッシュする必要がある
- メトリックを外部に送信する前に、メトリックを変換、フィルター処理、または集計する必要がある
- OTLP を優先するクラウドネイティブの監視ソリューションを使用している
- 高度なメトリック処理機能が必要です
オプション 1: Prometheus エンドポイントの使用
OpenTelemetry 監視スタックには、Prometheus 形式で収集されたすべてのメトリックを公開する Prometheus 互換エンドポイントが含まれています。これにより、外部監視ツールとの統合が可能になります。 Prometheus のドキュメントの テキスト ベースの形式 を参照してください。
Prometheus エンドポイントの有効化
Prometheus エンドポイントは、[Management Console] またはコマンドライン インターフェースを使って有効化できます。
管理コンソールの使用
-
GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。1. [ Site admin] サイドバーで、[[Management Console]] をクリックします。
-
監視設定で、[ OpenTelemetry を有効にする] を選択します。
-
必要に応じて、[ メトリックのリテンション期間 ] フィールドと [メトリックスクレーピング間隔 ] フィールドを調整してパフォーマンスを最適化します。
-
**[Prometheus 互換 (/metrics) エンドポイントを有効にする] を選択します**。 -
[ エンドポイント パスワード ] フィールドに、エンドポイントへのアクセスを制御するための強力なパスワードを入力します。
-
必要に応じて、 コンマ区切りのリスト フィールドの信頼できる IPv4/IPv6 アドレスまたは CIDR ブロックに 、エンドポイントへのアクセスを許可される IP アドレスまたは CIDR ブロックを入力します。
-
[設定] サイドバーで [設定の保存] をクリックします。
メモ
[Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。
-
設定の実行が完了するのを待ってください。
コマンド ライン インターフェイスの使用
-
SSH 接続します GitHub Enterprise Server インスタンスに。
-
Prometheus エンドポイントを有効にします。
ghe-config observability.metrics.prometheus-endpoint-enabled true ghe-config-apply -
エンドポイントの認証を設定します (強くお勧めします)。
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 構成を有効にすることができます。
管理コンソールの使用
-
GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある をクリックします。
-
[サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。1. [ Site admin] サイドバーで、[[Management Console]] をクリックします。
-
監視設定で、最初に [ OpenTelemetry を有効にする] を選択します。
-
[ カスタム OpenTelemetry Collector パイプラインを有効にする] を選択します。
-
カスタム OpenTelemetry コレクター構成ファイル (*.yml) をアップロードするには、[ 参照]... ボタンを使用します。 一般的な監視システムの構成例を参照してください。
-
[設定] サイドバーで [設定の保存] をクリックします。
メモ
[Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。
-
設定の実行が完了するのを待ってください。
コマンド ラインの使用
-
GitHub Enterprise Server インスタンスに SSH で接続し、以下のコマンドを実行してください。
ghe-config observability.metrics.custom-config-enabled true -
`/data/user/common/otelcol.yaml`でカスタム OpenTelemetry 構成ファイルを作成します。sudo nano /data/user/common/otelcol.yaml -
カスタム構成を追加します ( 一般的な監視システムの構成例を参照)。
-
構成を適用します。
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) の使用を検討する
次のステップ
- OpenTelemetry 設定を構成するには、 インスタンスの OpenTelemetry の構成 を参照してください。
- 使用可能なメトリックの詳細については、 OpenTelemetry メトリックについて を参照してください。