Aperçu
Nous travaillons toujours sur cette fonctionnalité, mais nous aimerions que vous l'essayiez !
Cette fonctionnalité est actuellement fournie dans le cadre d'un programme d'aperçu conformément à nos politiques de pré-sortie.
Cherchez-vous à obtenir des informations plus approfondies sur l'architecture de vos services en exploitant les données de votre compte GitHub Enterprise sur site ? L'intégration New Relic GitHub Enterprise importe les référentiels et les équipes directement dans la plateforme New Relic à l'aide d'un service de collecte sécurisé déployé au sein de votre réseau privé.
Grâce à la nouvelle fonctionnalité d'extraction sélective des données, vous pouvez choisir exactement les types de données à importer, qu'il s'agisse d'équipes, de référentiels et de demandes d'extraction, ou des deux. Cette intégration vise à améliorer la gestion et la visibilité des Équipes, des Catalogues et des Tableaux de bord au sein de New Relic. Pour plus d'informations, consultez la fonctionnalité Service Architecture Intelligence.
Prérequis
- Compte GitHub Enterprise sur site avec les privilèges d'administrateur de l'organisation.
- Environnement Docker pour exécuter le service de collecte au sein de votre réseau GitHub Enterprise.
- Compte New Relic avec les autorisations appropriées pour créer des intégrations.
Considérations de sécurité
Cette intégration suit les meilleures pratiques de sécurité :
- Utilise l'authentification GitHub App avec des autorisations minimales requises
- Les événements Webhook sont authentifiés à l'aide de clés secrètes
- Toutes les transmissions de données se font via HTTPS
- Aucune information d'identification utilisateur n'est stockée ou transmise
- Seules les données des référentiels et des équipes sont importées
Pour configurer l'intégration GitHub Enterprise :
Créez et configurez une application GitHub
Dans votre instance GHE, accédez à Settings → Developer Settings → GitHub Apps → New GitHub App. Pour des instructions détaillées sur la création d'une GitHub App, reportez-vous à la documentation GitHub sur l'enregistrement d'une GitHub App.
Configurer les permissions
Configurez avec précision les autorisations de l'application pour garantir une extraction transparente des données lors de la synchronisation initiale et une écoute efficace des événements de webhook par la suite. Les autorisations de l'application définissent l'étendue de l'accès de l'application à diverses ressources de référentiel et d'organisation sur GitHub. En adaptant ces autorisations, vous pouvez améliorer la sécurité, en vous assurant que l'application n'accède qu'aux données nécessaires tout en minimisant l'exposition. Une configuration appropriée facilite la synchronisation initiale des données et la gestion fiable des événements, optimisant ainsi l'intégration de l'application avec l'écosystème de GitHub.
Pour des conseils détaillés sur les permissions de l'application GitHub, consultez la documentation GitHub sur la définition des permissions pour les applications GitHub.
Autorisations de référentiel requises
Configurez exactement les autorisations au niveau du référentiel comme indiqué pour activer la synchronisation des données :
Administration: Lecture seule ✓
Checks: Lecture seule ✓
États de validation: Sélectionné ✓
Contenu: Sélectionné ✓
Propriétés personnalisées: Sélectionné ✓
Deployments: Lecture seule ✓
Métadonnées: Lecture seule (obligatoire) ✓
Demandes d'extraction: Sélectionné ✓
Webhooks: Lecture seule ✓
Autorisations d'organisation requises
Configurez les permissions au niveau de l'organisation suivantes exactement comme indiqué :
Administration: Lecture seule ✓
Rôles d'organisation personnalisés: Lecture seule ✓
Propriétés personnalisées: Lecture seule ✓
Rôles de référentiel personnalisés: Lecture seule ✓
Événements: Lecture seule ✓
Membres: Lecture seule ✓
Webhooks: Lecture seule ✓
Abonnements aux événements Webhook
Sélectionnez exactement les événements de webhook suivants, tels qu'ils sont affichés, pour la synchronisation et le monitoring en temps réel :
✓ Sélectionnez ces événements :
check_run- Mises à jour de l'état des exécutions de vérificationcheck_suite- Achèvement de la suite de contrôlescommit_comment- Commentaires sur les commitscreate- Création de branche ou de balisecustom_property- Modifications des propriétés personnalisées pour les affectations d’équipecustom_property_values- Modifications des valeurs des propriétés personnaliséesdelete- Suppression de branche ou de balisedeployment- Activités de déploiementdeployment_review- Processus de révision du déploiementdeployment_status- Mises à jour de l'état du déploiementfork- Événements de fork de référentielinstallation_target- Modifications de l'installation de l'application GitHublabel- Modifications d'étiquettes sur les problèmes et les demandes d'extractionmember- Modifications du profil des membresmembership- Ajouts et suppressions de membresmeta- Modifications des métadonnées de l'application GitHubmilestone- Modifications des jalonsorganization- Modifications au niveau de l'organisationpublic- Modifications de la visibilité du référentielpull_request- Activités de demande d'extractionpull_request_review- Activités de révision des demandes d'extractionpull_request_review_comment- Activités de commentaires de révisionpull_request_review_thread- Activités du fil de discussion de révision de la demande d'extractionpush- Poussées et validations de coderelease- Publications et mises à jour de versionsrepository- Création, suppression et modifications de référentielsstar- Événements d'étoile de référentielstatus- Mises à jour de l'état de validationteam- Création et modifications d'équipesteam_add- Ajouts de membres d'équipewatch- Événements de monitoring de référentielConseil
Meilleure pratique de sécurité: pour réduire l'exposition à la sécurité, suivez le principe du moindre privilège et n'activez que les autorisations minimales requises pour vos besoins d'intégration.
Configurer les webhooks
Configurez l'URL du webhook et créez un secret d'événement personnalisé pour une communication sécurisée :
URL du webhook: Utilisez le format suivant en fonction du déploiement de votre service de collecteur :
- Pour HTTP :
http://your-domain-name/github/sync/webhook - Pour HTTPS :
https://your-domain-name/github/sync/webhook
Exemple: Si votre service de collecteur est déployé sur
collector.yourcompany.com, l'URL du webhook serait :https://collector.yourcompany.com/github/sync/webhook- Pour HTTP :
Secret d’événement: Générez une chaîne aléatoire sécurisée (32 caractères ou plus) pour l’authentification du webhook. Enregistrez cette valeur, car vous en aurez besoin pour la variable d’environnement
GITHUB_APP_WEBHOOK_SECRET.Générer et convertir des clés
Après avoir créé l'application GitHub, vous devez générer une clé privée. Dans les paramètres de votre application GitHub, cliquez sur Generate a private key. L'application générera et téléchargera automatiquement un ID d'application unique et un fichier de clé privée (format .pem). Enregistrez-les en toute sécurité, car ils seront nécessaires pour la configuration du service de collecte.
Convertissez votre fichier de clé privée téléchargé au format DER, puis encodez-le en Base64 :
Étape 1 : Convertir .pem au format DER
bash$openssl rsa -outform der -in private-key.pem -out output.derÉtape 2 : Encoder le fichier DER en 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.b64Copiez la chaîne Base64 résultante et utilisez-la comme valeur pour la variable d'environnement
GITHUB_APP_PRIVATE_KEYdans votre configuration de collecteur.✓ Indicateurs de réussite :
- L’application Github est créée avec succès
- L'ID de l'application et la clé privée sont enregistrés en toute sécurité
- L'URL du webhook est configurée et accessible
Préparer les variables d'environnement
Avant de déployer le service de collecte, rassemblez les informations suivantes :
Variables d'environnement requises
Variable | Source | Comment obtenir |
|---|---|---|
| New Relic | Générez une clé API à partir du tableau de bord New Relic. |
| New Relic | Générez une clé de licence à partir du tableau de bord New Relic. |
| Serveur GHE | L’URL de base de votre serveur GHE (par exemple,
). |
| Application GitHub | L'ID d'application unique généré lors de la création de l'application GitHub. |
| Application GitHub | Le contenu du fichier de clé privée (
), converti en chaîne Base64. Consultez l’étape 1 pour les instructions de conversion. |
| Application GitHub | La valeur secrète d'événement personnalisée que vous avez définie lors de la création de l'application GitHub. |
Variables d'environnement SSL facultatives
Les variables d'environnement facultatives suivantes permettent d'effectuer des appels HTTPS d'API.
Variable facultative | Source | Comment obtenir |
|---|---|---|
| Configuration SSL | Chemin d'accès au fichier de magasin de clés SSL pour la configuration HTTPS. Consultez les instructions de configuration du certificat SSL ci-dessous. |
| Configuration SSL | Mot de passe du fichier de magasin de clés SSL. Il s’agit du mot de passe que vous avez défini lors de la création du magasin de clés PKCS12. |
| Configuration SSL | Type du magasin de clés SSL (par exemple, PKCS12, JKS). Utilisez PKCS12 lorsque vous suivez les instructions de configuration SSL ci-dessous. |
| Configuration SSL | Alias de la clé SSL dans le magasin de clés. C'est le nom que vous spécifiez lors de la création du magasin de clés. |
| Configuration SSL | Port serveur pour la communication HTTPS. Utilisez 8443 pour HTTPS. |
Instructions de configuration du certificat SSL
Pour obtenir un certificat SSL auprès d'une autorité de certification (CA) de confiance pour la configuration HTTPS, suivez ces étapes :
Générer une clé privée et une demande de signature de certificat (CSR):
bash$openssl req -new -newkey rsa:2048 -nodes -keyout mycert.key -out mycert.csrSoumettez le CSR à la CA de votre choix: soumettez le fichier
mycert.csrà l'autorité de certification (par exemple, DigiCert, Let's Encrypt, GoDaddy) de votre choix.Effectuez la validation du domaine: effectuez toutes les étapes de validation du domaine requises, comme indiqué par la CA.
Télécharger le certificat: Téléchargez les fichiers de certificat émis à partir de l'AC (généralement un fichier
.crtou.pem).Créer un magasin de clés PKCS12: Combinez le certificat et la clé privée dans un magasin de clés PKCS12 :
bash$openssl pkcs12 -export -in mycert.crt -inkey mycert.key -out keystore.p12 -name mycertUtilisez le magasin de clés: utilisez le fichier
keystore.p12généré comme valeur pourSERVER_SSL_KEY_STOREdans votre configuration Docker.
Déployer le service de collecteur
Le service de collecte est fourni sous forme d'image Docker. Le déploiement peut être effectué de deux manières :
Option A : Utilisation de Docker Compose (recommandé)
Créez un fichier Docker Compose qui automatise le téléchargement et le déploiement du service.
Créez un fichier
docker-compose.ymlavec le contenu suivant :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: bridgeDéfinissez vos variables d’environnement en remplaçant les espaces réservés
DEFAULT_VALUEdans le fichier Docker Compose par vos valeurs réelles, ou créez des variables d’environnement sur votre système avant d’exécuter la commande.Prudence
Ne jamais valider les fichiers d'environnement contenant des secrets dans le contrôle de version. Utilisez des pratiques de gestion des secrets sécurisées en production.
Exécutez la commande suivante pour démarrer le service :
bash$docker-compose up -dOption B : Exécution directe de l'image Docker
Vous pouvez télécharger l'image Docker directement à partir de notre registre Docker Hub et l'exécuter à l'aide du pipeline CI/CD ou de la méthode de déploiement préférée de votre organisation. Notez que le client doit transmettre toutes les variables d'environnement répertoriées ci-dessus lors du démarrage du service de collecte.
✓ Indicateurs de réussite :
- Le service de collecte est en cours d'exécution et accessible sur le port configuré
- Les logs du conteneur Docker indiquent un démarrage réussi sans erreurs
- Le service répond aux contrôles d'intégrité (si configuré)
Installer l'application GitHub sur les organisations
Une fois le service de collecteur en cours d'exécution, vous devez installer l'application GitHub sur les organisations spécifiques que vous souhaitez intégrer :
Accédez à votre instance GitHub Enterprise.
Accédez à Settings → Developer Settings → GitHub Apps.
Recherchez l'application GitHub que vous avez créée à l'étape 1 et cliquez dessus.
Dans la barre latérale gauche, cliquez sur Install App.
Sélectionnez les organisations dans lesquelles vous souhaitez installer l'application.
Choisissez d’installer sur tous les référentiels ou de sélectionner des référentiels spécifiques.
Cliquez sur Install pour terminer l'installation.
✓ Indicateurs de réussite :
- Les livraisons de webhook apparaissent dans les paramètres de l’application GitHub
- Aucune erreur d’authentification dans les logs du service de collecte
Configuration complète de l'intégration dans l'interface utilisateur New Relic
Une fois le service de collecte en cours d'exécution et l'application GitHub installée sur votre ou vos organisations GHE, terminez la configuration de l'intégration comme indiqué dans l'interface utilisateur de New Relic :
Les organisations GHE correspondantes apparaîtront dans l'interface utilisateur de New Relic.
Pour démarrer la synchronisation initiale des données, cliquez sur First time sync.
(Facultatif) Cliquez sur On-demand sync pour synchroniser manuellement les données.
conseil
Vous pouvez synchroniser manuellement les données une fois toutes les 4 heures. Le bouton On-demand sync reste désactivé si la synchronisation a eu lieu dans les 4 heures précédentes.
Après avoir affiché le message Sync started (Synchronisation démarrée), cliquez sur Continue. L'écran GitHub Enterprise Integration affiche le nombre d'équipes et de référentiels, en actualisant toutes les 5 secondes. Prévoyez 15 à 30 minutes pour l'importation complète de toutes les données (le délai dépend du nombre de référentiels).

Affichage de vos données
Sur l'écran GitHub Enterprise Integration :
Configurer les attributions d'équipe (facultatif)
Vous pouvez attribuer automatiquement des référentiels GitHub à leurs équipes en ajoutant teamOwningRepo en tant que propriété personnalisée dans GitHub Enterprise.
Créez la propriété personnalisée au niveau de l’organisation et attribuez une valeur à la propriété personnalisée au niveau du référentiel. De plus, vous pouvez configurer une propriété personnalisée pour plusieurs référentiels au niveau de l'organisation simultanément.
Ensuite, dans New Relic Teams, activez la fonctionnalité Automated Ownership, en veillant à utiliser
teamcomme clé de tag.Une fois cette opération configurée, New Relic associe automatiquement chaque référentiel à son équipe correcte.
Pour plus d'informations sur la création de propriétés personnalisées, reportez-vous à la documentation GitHub.
Dépannage
Problèmes courants et solutions
Échecs de livraison de webhook :
- Vérifiez que le service de collecte est en cours d'exécution et accessible depuis GitHub Enterprise
- Vérifiez les paramètres du pare-feu et la connectivité réseau
Erreurs d'authentification :
- Vérifiez que l’ID de l’application GitHub et la clé privée sont correctement configurés
- Assurez-vous que la clé privée est correctement convertie au format DER et encodée en Base64
- Vérifiez que le secret du webhook correspond entre GitHub App et la configuration du collecteur
Échecs de synchronisation :
- Vérifiez que l'application GitHub dispose des permissions requises
- Vérifiez que l'application est installée sur les organisations appropriées
- Consultez les logs du service de collecte pour des messages d'erreur spécifiques
Problèmes de connectivité réseau :
- Assurez-vous que le service de collecte peut atteindre votre instance GitHub Enterprise
- Vérifiez que les certificats SSL sont correctement configurés si vous utilisez HTTPS
- Vérifiez la résolution DNS pour votre domaine GitHub Enterprise
Désinstallation
Pour désinstaller l'intégration GitHub Enterprise :
- Accédez à l'interface utilisateur de votre GitHub Enterprise.
- Accédez aux paramètres de l'organisation où l'application est installée.
- Désinstallez l’application GitHub directement à partir de l’interface GitHub Enterprise. Cette action déclenchera le processus backend pour cesser la collecte de données.
- Arrêtez et supprimez le service de collecte de votre environnement Docker.