オンプレミスの GitHub Enterprise アカウントのデータを活用して、サービス アーキテクチャーにインサイトをさらに深く組み込むことを検討していますか? New Relic GitHub Enterprise 統合は、プライベート ネットワーク内の安全なコレクター サービス デプロイを使用して、リポジトリとチームをNew Relicプラットフォームに直接インポートします。
新しい選択的データ取得機能を使用すると、チーム、リポジトリとプルリクエスト、またはその両方など、どのデータ タイプをインポートするかを正確に選択できます。 この統合 AI モニタリングにより、 New Relic内のチーム、カタログ、スコアカードの管理と可視性が強化されます。 詳細については、 Service Architecture Intelligence機能を参照してください。
前提条件
- 組織アドミニストレーター権限を持つ GitHub Enterprise オンプレミス アカウント。
- GitHub Enterprise ネットワーク内でコレクター サービスを実行するための Docker 環境。
- 統合を作成するための適切な権限を持つNew Relicアカウント。
セキュリティに関する懸念事項
この統合はセキュリティベストプラクティスに従っています:
- 最小限の権限でGitHub App認証を使用する
- Webhook イベントは秘密鍵を使用して認証されます
- すべてのデータ転送はHTTPS経由で行われます
- ユーザーの資格情報は保存も送信もされません
- リポジトリとチームのデータのみがインポートされます
GitHub Enterprise 統合をセットアップするには:
GitHub アプリを作成して設定する
GHE インスタンスで、 Settings → Developer Settings → GitHub Apps → New GitHub Appに移動します。GitHub アプリを作成する詳細な手順については、 GitHub アプリの登録に関する GitHub ドキュメントを参照してください。
権限を設定する
アプリの権限を正確に構成して、初期同期中のシームレスなデータ取得と、その後の Webhook イベントの効率的なリッスンを保証します。アプリの権限は、GitHub 上のさまざまなリポジトリおよび組織リソースに対するアプリケーションのアクセス範囲を定義します。これらの権限をカスタマイズすることで、セキュリティを強化し、露出を最小限に抑えながらアプリケーションが必要なデータにのみアクセスできるようにすることができます。適切な設定により、スムーズな初期データ同期と信頼性の高いイベント処理が容易になり、アプリケーションと GitHub のエコシステムとの統合が最適化されます。
GitHub アプリの権限に関する詳細なガイダンスについては、 GitHub アプリの権限設定に関する GitHub ドキュメントを参照してください。
必要なリポジトリ権限
データ同期を有効にするには、次のリポジトリ レベルの権限を示されているとおりに構成します。
管理: 読み取り専用 ✓
チェック: 読み取り専用 ✓
コミットステータス: 選択済み✓
内容:選択済み✓
カスタムプロパティ: 選択済み✓
デプロイメント: 読み取り専用 ✓
メタデータ: 読み取り専用(必須)✓
プルリクエスト: 選択済み✓
Webhooks : 読み取り専用 ✓
必要な組織権限
次の組織レベルの権限を、示されているとおりに構成します。
管理: 読み取り専用 ✓
カスタム組織ロール: 読み取り専用 ✓
カスタムプロパティ: 読み取り専用 ✓
カスタムリポジトリロール: 読み取り専用 ✓
イベント: 読み取り専用 ✓
メンバー: 読み取り専用 ✓
Webhooks : 読み取り専用 ✓
Webhook イベントのサブスクリプション
リアルタイム同期と監視のために、次の Webhook イベントを示されているとおりに正確に選択します。
✓ 次のイベントを選択します:
check_run- 実行ステータスの更新を確認するcheck_suite- スイートの完了を確認するcommit_comment- コミットへのコメントcreate- ブランチまたはタグの作成custom_property- チーム割り当てのカスタムプロパティの変更custom_property_values- カスタムプロパティ値の変更delete- ブランチまたはタグの削除deployment- デプロイメント活動deployment_review- デプロイメントのレビュープロセスdeployment_status- デプロイメントステータスの更新fork- リポジトリフォークイベントinstallation_target- GitHub アプリのインストレーションの変更label- 問題とプルリクエストのラベル変更member- メンバープロフィールの変更membership- メンバーの追加と削除meta- GitHub アプリのメタデータの変更milestone- マイルストーンの変更organization- 組織レベルの変更public- リポジトリの可視性の変更pull_request- プルリクエスト活動pull_request_review- プルリクエストのレビュー活動pull_request_review_comment- コメント活動のレビューpull_request_review_thread- プルリクエストレビュースレッドのアクティビティpush- コードのプッシュとコミットrelease- 出版物とアップデートのリリースrepository- リポジトリの作成、削除、変更star- リポジトリスターイベントstatus- コミットステータスの更新team- チームの作成と変更team_add- チームメンバーの追加watch- リポジトリ監視イベントヒント
セキュリティのベストプラクティス: セキュリティの危険を軽減するには、最小特権アクセスの原則に従い、統合のニーズに必要な最小限のアクセス許可のみを有効にします。
Webhookを設定する
Webhook URL を設定し、安全な通信のためにカスタムイベント シークレットを作成します。
Webhook URL : コレクター サービスのデプロイメントに基づいて次の形式を使用します。
- HTTPの場合:
http://your-domain-name/github/sync/webhook - HTTPSの場合:
https://your-domain-name/github/sync/webhook
例: コレクター サービスが
collector.yourcompany.comにデプロイされている場合、Webhook URL は次のようになります。https://collector.yourcompany.com/github/sync/webhook- HTTPの場合:
イベント シークレット: Webhook 認証用の安全なランダム文字列 (32 文字以上) を生成します。この値は
GITHUB_APP_WEBHOOK_SECRET環境変数に必要となるため保存してください。キーの生成と変換
GitHub アプリを作成したら、秘密鍵を生成する必要があります。GitHub アプリの設定で、 Generate a private key [秘密鍵を生成]をクリックします。アプリは、一意のアプリ ID と秘密キー ファイル (.pem 形式) を自動的に生成してダウンロードします。これらはコレクターサービスの設定に必要となるため、安全に保存してください。
ダウンロードした秘密鍵ファイルを DER 形式に変換し、Base64 でエンコードします。
ステップ1: .pemをDER形式に変換する
bash$openssl rsa -outform der -in private-key.pem -out output.derステップ2: DERファイルをBase64でエンコードする
bash$# For Linux/macOS$base64 -i output.der -o outputBase64$cat outputBase64 # Copy this output$$# For Windows (using PowerShell)$[Convert]::ToBase64String([IO.File]::ReadAllBytes("output.der"))$$# Alternative for Windows (using certutil)$certutil -encode output.der temp.b64 && findstr /v /c:- temp.b64結果の Base64 文字列をコピーし、コレクター設定の
GITHUB_APP_PRIVATE_KEY環境変数の値として使用します。✓ 成功指標:
- Githubアプリが正常に作成されました
- アプリIDと秘密鍵は安全に保存されます
- Webhook URLが設定され、アクセス可能
環境変数を準備する
コレクター サービスをデプロイする前に、次の情報を収集してください。
必要な環境変数
変数 | ソース | 入手方法 |
|---|---|---|
| ニューレリック | New RelicダッシュボードからAPIキーを生成します。 |
| ニューレリック | New Relicダッシュボードからライセンスキーを生成します。 |
| GHEサーバー | GHE サーバーのベース URL (例:
)。 |
| GitHubアプリ | GitHub アプリを作成したときに生成された一意のアプリ ID。 |
| GitHubアプリ | 秘密鍵 (
) ファイルの内容が Base64 文字列に変換されました。変換手順については手順 1 を参照してください。 |
| GitHubアプリ | GitHub アプリの作成時に設定したカスタムイベント シークレットの値。 |
オプションのSSL環境変数
以下は、API を HTTPS にするためのオプションの環境変数です。
オプション変数 | ソース | 入手方法 |
|---|---|---|
| SSL設定 | HTTPS設定用のSSLキーストアファイルへのパス。 以下のSSL証明書の設定手順を参照してください。 |
| SSL設定 | SSL キーストア ファイルのパスワード。これは、PKCS12 キーストアを作成するときに設定したパスワードです。 |
| SSL設定 | SSL キーストアのタイプ (例: PKCS12、JKS)。以下の SSL セットアップ手順に従う場合は、PKCS12 を使用してください。 |
| SSL設定 | キーストア内の SSL キーのエイリアス。これは、キーストアを作成するときに指定する名前です。 |
| SSL設定 | HTTPS 通信用のサーバー ポート。HTTPSの場合は8443を使用します。 |
SSL証明書の設定手順
HTTPS 設定の信頼された認証局 (CA) から SSL 証明書を取得するには、次の手順に従います。
秘密鍵と証明書署名要求 (CSR) を生成します。
bash$openssl req -new -newkey rsa:2048 -nodes -keyout mycert.key -out mycert.csr選択した CA に CSR を送信します: 選択した証明機関 (DigiCert、Let's Encrypt、GoDaddy など) に
mycert.csrファイルを送信します。ドメイン検証を完了する: CA の指示に従って、必要なドメイン検証手順を完了します。
証明書をダウンロード: CA から発行された証明書ファイル (通常は
.crtまたは.pemファイル) をダウンロードします。PKCS12 キーストアを作成する: 証明書と秘密鍵を PKCS12 キーストアに結合します。
bash$openssl pkcs12 -export -in mycert.crt -inkey mycert.key -out keystore.p12 -name mycertキーストアの使用: 生成された
keystore.p12ファイルをDocker設定のSERVER_SSL_KEY_STOREの値として使用します。
コレクターサービスをデプロイする
コレクター サービスは Docker イメージとして提供されます。デプロイメントは、次の 2 つの方法のいずれかで実行できます。
オプション A: Docker Compose を使用する (推奨)
サービスのダウンロードとデプロイメントを自動化するDocker Compose ファイルを作成します。
次の内容の
docker-compose.ymlファイルを作成します。version: '3.9'services:nr-ghe-collector:image: newrelic/nr-ghe-collector:tag # use latest tag available in dockerhub starting with v*container_name: nr-ghe-collectorrestart: unless-stoppedports:- "8080:8080" # HTTP port, make 8443 in case of HTTPSenvironment:# Required environment variables- NR_API_KEY=${NR_API_KEY:-DEFAULT_VALUE}- NR_LICENSE_KEY=${NR_LICENSE_KEY:-DEFAULT_VALUE}- GHE_BASE_URL=${GHE_BASE_URL:-DEFAULT_VALUE}- GITHUB_APP_ID=${GITHUB_APP_ID:-DEFAULT_VALUE}- GITHUB_APP_PRIVATE_KEY=${GITHUB_APP_PRIVATE_KEY:-DEFAULT_VALUE}- GITHUB_APP_WEBHOOK_SECRET=${GITHUB_APP_WEBHOOK_SECRET:-DEFAULT_VALUE}# Optional SSL environment variables (uncomment and configure if using HTTPS)# - SERVER_SSL_KEY_STORE=${SERVER_SSL_KEY_STORE}# - SERVER_SSL_KEY_STORE_PASSWORD=${SERVER_SSL_KEY_STORE_PASSWORD}# - SERVER_SSL_KEY_STORE_TYPE=${SERVER_SSL_KEY_STORE_TYPE}# - SERVER_SSL_KEY_ALIAS=${SERVER_SSL_KEY_ALIAS}# - SERVER_PORT=8443#volumes: # Uncomment the line below if using SSL keystore# - ./keystore.p12:/app/keystore.p12 # path to your keystore filenetwork_mode: bridgenetworks:nr-network:driver: bridgeDocker Compose ファイル内の
DEFAULT_VALUEプレースホルダーを実際の値に置き換えて環境変数を設定するか、コマンドを実行する前にシステムに環境変数を作成してください。注意
秘密を含む環境ファイルをバージョン管理にコミットしないでください。運用環境では安全な秘密管理プラクティスを使用します。
サービスを開始するには、次のコマンドを実行します。
bash$docker-compose up -dオプションB: Dockerイメージの直接実行
DockerイメージをDocker Hub レジストリから直接ダウンロードし、組織の推奨するCI/CDパイプラインまたはデプロイメント方法を使用して実行できます。 カスタマーは、コレクター サービスの開始時に、上記のすべての環境変数を渡す必要があることに注意してください。
✓ 成功指標:
- Collectorサービスは実行されており、構成されたポートでアクセス可能です
- Dockerコンテナのログにエラーなしの正常な起動が表示される
- サービスはヘルスチェックに応答します(設定されている場合)
組織にGitHubアプリをインストールする
コレクター サービスが実行されたら、統合する特定の組織に GitHub アプリをインストールする必要があります。
GitHub Enterprise インスタンスに移動します。
Settings → Developer Settings → GitHub Appsに移動します。
手順 1 で作成した GitHub アプリを見つけてクリックします。
左側のサイドバーで、 Install App [アプリをインストール] をクリックします。
アプリをインストールする組織を選択します。
すべてのリポジトリにインストールするか、特定のリポジトリを選択するかを選択します。
Install [インストール]をクリックしてインストールを完了します。
✓ 成功指標:
- Webhookの配信はGitHubアプリの設定に表示される
- コレクターサービスログに認証エラーはありません
New Relic UIで統合セットアップを完了する
コレクター サービスが実行され、GitHub アプリが GHE 組織にインストールされたら、 New Relic UIの指示に従って統合セットアップを完了します。
対応する GHE 組織が New Relic UI に表示されます。
初期データ同期を開始するには、 First time sync [初回同期]をクリックします。
(オプション)データを手動で同期するには、 On-demand sync [オンデマンド同期]をクリックします。
ヒント
4 時間ごとにデータを手動で同期できます。 過去 4 時間以内に同期が行われた場合、On-demand sync [オンデマンド同期]ボタンは無効のままになります。
同期が開始されたというメッセージが表示されたら、 Continue [続行]をクリックします。GitHub Enterprise Integration [GitHub Enterprise連携]画面には、チーム数とリポジトリ数が表示され、5秒ごとに更新されます。すべてのデータの完全なインポートには 15 ~ 30 分かかります (時間はリポジトリの数によって異なります)。

データの表示
GitHub Enterprise Integration [GitHub Enterprise 統合]画面で:
チームの割り当てを構成する(オプション)
GitHub Enterprise でカスタム プロパティとしてteamOwningRepo追加することで、GitHub リポジトリをチームに自動的に割り当てることができます。
組織レベルでカスタム プロパティを作成し、リポジトリ レベルでカスタム プロパティの値を割り当てます。さらに、組織レベルで複数のリポジトリに対して同時にカスタム プロパティを設定することもできます。
次に、New Relic Teams で自動所有権機能を有効にし、
teamタグ キーとして使用するようにします。これを設定すると、New Relic は各リポジトリを適切なチームに自動的に一致させます。
カスタム プロパティの作成の詳細については、 GitHub ドキュメントを参照してください。
トラブルシューティング
よくある問題と解決策
Webhook 配信の失敗:
- コレクターサービスが実行されており、GitHub Enterpriseからアクセスできることを確認します。
- ファイアウォールの設定とネットワーク接続を確認する
認証エラー:
- GitHub App IDと秘密鍵が正しく設定されていることを確認する
- 秘密鍵がDER形式に正しく変換され、Base64でエンコードされていることを確認する
- GitHub Appとコレクター設定間でWebhookシークレットが一致していることを確認します
同期の失敗:
- GitHub アプリに必要な権限があることを確認する
- アプリが正しい組織にインストールされていることを確認する
- 特定のエラーメッセージについては、コレクター サービス ログを確認してください。
ネットワーク接続の問題:
- コレクター サービスが GitHub Enterprise インスタンスに到達できることを確認する
- HTTPSを使用している場合はSSL証明書が適切に設定されていることを確認します
- GitHub Enterprise ドメインの DNS 解決を確認する
アンインストール
GitHub Enterprise 統合をアンインストールするには:
- GitHub Enterprise UI に移動します。
- アプリがインストールされている組織の設定に移動します。
- GitHub Enterprise インターフェースから直接 GitHub App をアンインストールします。このアクションにより、バックエンド プロセスがトリガーされ、データ収集が停止されます。
- Docker 環境からコレクター サービスを停止して削除します。