AVANCE
Todavía estamos trabajando en esta característica, ¡pero nos encantaría que la probaras!
Esta característica se proporciona actualmente como parte de un programa de vista previa de conformidad con nuestras políticas de prelanzamiento.
¿Busca obtener información más profunda sobre la arquitectura de su servicio aprovechando los datos de su cuenta de GitHub Enterprise local? La integración de New Relic GitHub Enterprise importa repositorios y equipos directamente a la plataforma New Relic utilizando un servicio de recopilación seguro implementado dentro de su red privada.
Con la nueva función de obtención selectiva de datos, puede elegir exactamente qué tipos de datos importar, ya sean equipos, repositorios y solicitudes de extracción, o ambos. Esta integración tiene como objetivo mejorar la gestión y visibilidad de Equipos, Catálogos y Cuadro de mandos dentro de New Relic. Para obtener más información, consulte la capacidad de Inteligencia de Arquitectura de Servicios.
Requisitos previos
- Cuenta de GitHub Enterprise on-premises con privilegios de administrador de la organización.
- Entorno Docker para ejecutar el servicio de recopilación dentro de su red de GitHub Enterprise.
- Cuenta de New Relic con los permisos apropiados para crear integraciones.
Consideraciones de Seguridad
Esta integración sigue las mejores prácticas de seguridad:
- Utiliza la autenticación de la aplicación de GitHub con permisos mínimos requeridos
- Los eventos de webhook se autentican mediante claves secretas
- Toda la transmisión de datos se realiza a través de HTTPS
- No se almacenan ni se transmiten credenciales de usuario
- Solo se importan los datos de repositorios y equipos.
Para configurar la integración de GitHub Enterprise:
Cree y configure una aplicación de GitHub
En su instancia de GHE, navegue a Settings → Developer Settings → GitHub Apps → New GitHub App. Para obtener instrucciones detalladas sobre cómo crear una aplicación de GitHub, consulte la documentación de GitHub sobre el registro de una aplicación de GitHub.
Configurar permisos
Configure los permisos de la aplicación con precisión para garantizar una obtención de datos sin problemas durante la sincronización inicial y una escucha eficiente de los eventos de webhook a partir de entonces. Los permisos de la aplicación definen el alcance del acceso que la aplicación tiene a varios recursos de repositorio y organización en GitHub. Al adaptar estos permisos, puede mejorar la seguridad, asegurando que la aplicación solo acceda a los datos necesarios, minimizando la exposición. La configuración adecuada facilita la sincronización inicial de datos sin problemas y el manejo confiable de eventos, optimizando la integración de la aplicación con el ecosistema de GitHub.
Para obtener orientación detallada sobre los permisos de la aplicación de GitHub, consulte la documentación de GitHub sobre la configuración de permisos para las aplicaciones de GitHub.
Permisos de repositorio requeridos
Configure los siguientes permisos a nivel de repositorio exactamente como se muestra para habilitar la sincronización de datos:
Administración: Solo lectura ✓
Verificaciones: Solo lectura ✓
Estados de confirmación: Seleccionado ✓
Contenido: Seleccionado ✓
Propiedades personalizadas: Seleccionado ✓
Implementaciones: Solo lectura ✓
Metadatos: Solo lectura (obligatorio) ✓
Solicitudes de extracción: Seleccionado ✓
Webhooks: Solo lectura ✓
Permisos de organización requeridos
Configure los siguientes permisos a nivel de organización exactamente como se muestra:
Administración: Solo lectura ✓
Roles de organización personalizados: Solo lectura ✓
Propiedades personalizadas: Solo lectura ✓
Roles de repositorio personalizados: Solo lectura ✓
Eventos: Solo lectura ✓
Miembros: Solo lectura ✓
Webhooks: Solo lectura ✓
Suscripciones a eventos de webhook
Seleccione los siguientes eventos de webhook exactamente como se muestran para la sincronización y el monitoreo en tiempo real:
✓ Seleccione estos eventos:
check_run- Actualizaciones del estado de la ejecución de la verificacióncheck_suite- Finalización del conjunto de pruebascommit_comment- Comentarios sobre las confirmacionescreate- Creación de rama o etiquetacustom_property- Cambios de propiedad personalizada para asignaciones de equipocustom_property_values- Cambios en los valores de las propiedades personalizadasdelete- Eliminación de rama o etiquetadeployment- Actividades de implementacióndeployment_review- Procesos de revisión de implementacióndeployment_status- Actualizaciones de estado de implementaciónfork- Eventos de bifurcación de repositorioinstallation_target- Cambios en la instalación de la aplicación de GitHublabel- Cambios de etiqueta en problemas y solicitudes de extracciónmember- Cambios en el perfil de los miembrosmembership- Adiciones y eliminaciones de miembrosmeta- Cambios de metadatos de la aplicación GitHubmilestone- Cambios de hitosorganization- Cambios a nivel de la organizaciónpublic- Cambios de visibilidad del repositoriopull_request- Actividades de solicitud de extracciónpull_request_review- Actividades de revisión de solicitudes de extracciónpull_request_review_comment- Actividades de comentarios de revisiónpull_request_review_thread- Actividades de hilo de revisión de solicitudes de extracciónpush- Inserciones y confirmaciones de códigorelease- Publicar versiones y actualizacionesrepository- Creación, eliminación y modificaciones de repositoriosstar- Eventos de estrella del repositoriostatus- Actualizaciones del estado de confirmaciónteam- Creación y modificaciones de equiposteam_add- Adiciones de miembros del equipowatch- Eventos de seguimiento del repositorioSugerencia
Mejor práctica de seguridad: Para reducir la exposición a la seguridad, siga el principio de acceso de privilegio mínimo y solo habilite los permisos mínimos necesarios para las necesidades de su integración.
Configurar webhooks
Configure la URL del webhook y cree un secreto de evento personalizado para una comunicación segura:
URL del webhook: Utilice el siguiente formato según la implementación de su servicio de recopilación:
- Para HTTP:
http://your-domain-name/github/sync/webhook - Para HTTPS:
https://your-domain-name/github/sync/webhook
Ejemplo: Si su servicio de recopilación se implementa en
collector.yourcompany.com, la URL del webhook sería:https://collector.yourcompany.com/github/sync/webhook- Para HTTP:
Secreto del evento: Genere una cadena aleatoria segura (más de 32 caracteres) para la autenticación del webhook. Guarde este valor, ya que lo necesitará para la variable de entorno
GITHUB_APP_WEBHOOK_SECRET.Generar y convertir claves
Después de crear la aplicación de GitHub, debe generar una clave privada. En la configuración de su aplicación de GitHub, haga clic en Generate a private key. La aplicación generará y descargará automáticamente un ID de aplicación único y un archivo de clave privada (formato .pem). Guárdelos de forma segura, ya que serán necesarios para la configuración del servicio de recopilación.
Convierta su archivo de clave privada descargado al formato DER y luego codifíquelo en Base64:
Paso 1: Convertir .pem a formato DER
bash$openssl rsa -outform der -in private-key.pem -out output.derPaso 2: Codifique el archivo 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.b64Copie la cadena Base64 resultante y utilícela como valor para la variable de entorno
GITHUB_APP_PRIVATE_KEYen la configuración de su recopilador.✓ Indicadores de éxito:
- La aplicación de Github se crea correctamente
- El ID de la aplicación y la clave privada se guardan de forma segura
- La URL del webhook está configurada y es accesible
Prepare las variables de entorno
Antes de implementar el servicio de recopilación, recopile la siguiente información:
Variables de entorno requeridas
Variable | Fuente | Cómo obtener |
|---|---|---|
| New Relic | Genere una clave API desde el panel de New Relic. |
| New Relic | Genere una clave de licencia desde el panel de New Relic. |
| Servidor GHE | La URL base para su servidor GHE (por ejemplo,
). |
| Aplicación de GitHub | El ID de la aplicación único generado cuando creó la aplicación de GitHub. |
| Aplicación de GitHub | El contenido del archivo de clave privada (
), convertido a una cadena Base64. Consulte el paso 1 para obtener instrucciones de conversión. |
| Aplicación de GitHub | El valor personalizado del Secreto del evento que estableció al crear la aplicación de GitHub. |
Variables de entorno SSL opcionales
Las siguientes son variables de entorno opcionales para hacer HTTPS de la API.
Variable opcional | Fuente | Cómo obtener |
|---|---|---|
| Configuración SSL | Ruta al archivo del almacén de claves SSL para la configuración HTTPS. Consulte las instrucciones de configuración del certificado SSL a continuación. |
| Configuración SSL | Contraseña para el archivo de almacén de claves SSL. Esta es la contraseña que estableció al crear el almacén de claves PKCS12. |
| Configuración SSL | Tipo de almacén de claves SSL (por ejemplo, PKCS12, JKS). Utilice PKCS12 al seguir las instrucciones de configuración de SSL a continuación. |
| Configuración SSL | Alias para la clave SSL dentro del almacén de claves. Este es el nombre que especifica al crear el almacén de claves. |
| Configuración SSL | Puerto del servidor para la comunicación HTTPS. Use 8443 para HTTPS. |
Instrucciones de configuración del certificado SSL
Para obtener un certificado SSL de una Autoridad de Certificación (CA) confiable para la configuración HTTPS, siga estos pasos:
Generar una clave privada y una solicitud de firma de certificado (CSR):
bash$openssl req -new -newkey rsa:2048 -nodes -keyout mycert.key -out mycert.csrEnvíe el CSR a la CA que elija: Envíe el archivo
mycert.csra la Autoridad de certificación (CA) que elija (por ejemplo, DigiCert, Let's Encrypt, GoDaddy).Complete la validación del dominio: Complete cualquier paso de validación de dominio requerido según las instrucciones de la CA.
Descargue el certificado: Descargue los archivos de certificado emitidos de la CA (comúnmente un archivo
.crto.pem).Crear un almacén de claves PKCS12: Combine el certificado y la clave privada en un almacén de claves PKCS12:
bash$openssl pkcs12 -export -in mycert.crt -inkey mycert.key -out keystore.p12 -name mycertUsar el almacén de claves: Use el archivo
keystore.p12generado como valor paraSERVER_SSL_KEY_STOREen su configuración de Docker.
Implementar el servicio de recopilación
El servicio de recopilación se entrega como una imagen de Docker. La implementación se puede realizar de dos maneras:
Opción A: Usando Docker Compose (recomendado)
Cree un archivo Docker Compose que automatice la descarga e implementación del servicio.
Cree un archivo
docker-compose.ymlcon el siguiente contenido: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: bridgeEstablezca sus variables de entorno reemplazando los marcadores de posición
DEFAULT_VALUEen el archivo Docker Compose con sus valores reales, o cree variables de entorno en su sistema antes de ejecutar el comando.Advertencia
Nunca confirme archivos de entorno que contengan secretos en el control de versiones. Utilice prácticas seguras de gestión de secretos en producción.
Ejecute el siguiente comando para iniciar el servicio:
bash$docker-compose up -dOpción B: Ejecución directa de la imagen de Docker
Puede descargar la imagen de Docker directamente desde nuestro registro de Docker Hub y ejecutarla utilizando la canalización CI/CD o el método de implementación preferido de su organización. Tenga en cuenta que el cliente debe pasar todas las variables de entorno enumeradas anteriormente al iniciar el servicio de recopilación.
✓ Indicadores de éxito:
- El servicio de recopilación se está ejecutando y es accesible en el puerto configurado
- Los logs del contenedor Docker muestran un inicio exitoso sin errores
- El servicio responde a las comprobaciones de estado (si está configurado)
Instale la aplicación de GitHub en las organizaciones
Después de que el servicio de recopilación se esté ejecutando, debe instalar la aplicación de GitHub en las organizaciones específicas que desea integrar:
Navegue a su instancia de GitHub Enterprise.
Vaya a Settings → Developer Settings → GitHub Apps.
Busque la aplicación de GitHub que creó en el paso 1 y haga clic en ella.
En la barra lateral izquierda, haga clic en Install App.
Seleccione las organizaciones donde desea instalar la aplicación.
Elija si desea instalar en todos los repositorios o seleccionar repositorios específicos.
Haga clic en Install para completar la instalación.
✓ Indicadores de éxito:
- Las entregas de webhook aparecen en la configuración de la aplicación de GitHub
- No hay errores de autenticación en los logs del servicio de recopilación
Complete la configuración de la integración en la interfaz de usuario de New Relic
Una vez que el servicio de recopilación se está ejecutando y la aplicación de GitHub está instalada en su(s) organización(es) GHE, complete la configuración de integración como se indica en la interfaz de usuario de New Relic:
Las organizaciones GHE correspondientes aparecerán en la interfaz de usuario de New Relic.
Para iniciar la sincronización inicial de datos, haga clic en First time sync.
(Opcional) Haga clic en On-demand sync para sincronizar los datos manualmente.
consejo
Puede sincronizar manualmente los datos una vez cada 4 horas. El botón de On-demand sync permanece deshabilitado si la sincronización se realizó dentro de las 4 horas anteriores.
Después de ver el mensaje de Inicio de sincronización, haga clic en Continue. La pantalla GitHub Enterprise Integration muestra el recuento de equipos y repositorios, actualizándose cada 5 segundos. Permita de 15 a 30 minutos para la importación completa de todos los datos (el tiempo depende del recuento de repositorios).

Visualización de sus datos
En la pantalla de GitHub Enterprise Integration:
Configurar asignaciones de equipo (opcional)
Puede asignar automáticamente repositorios de GitHub a sus equipos agregando teamOwningRepo como una propiedad personalizada en GitHub Enterprise.
Cree la propiedad personalizada en el nivel de organización y asigne un valor a la propiedad personalizada en el nivel de repositorio. Además, puede configurar una propiedad personalizada para varios repositorios a nivel de organización simultáneamente.
Luego, en New Relic Teams, habilite la función Automated Ownership, cerciorar de usar
teamcomo clave de etiqueta.Una vez que esto está configurado, New Relic coincide automáticamente cada repositorio con su equipo correcto.
Para obtener más información sobre la creación de propiedades personalizadas, consulte la documentación de GitHub.
Resolución de problemas
Problemas y soluciones comunes
Fallos en la entrega del webhook:
- Verifique que el servicio de recopilación se esté ejecutando y sea accesible desde GitHub Enterprise
- Compruebe la configuración del cortafuegos y la conectividad de la red
Errores de autenticación:
- Verifique que el ID de la aplicación de GitHub y la clave privada estén configurados correctamente
- Asegúrese de que la clave privada esté correctamente convertida al formato DER y codificada en Base64
- Verifique que el secreto del webhook coincida entre la aplicación de GitHub y la configuración del recopilador
Fallos de sincronización:
- Verifique que la aplicación de GitHub tenga los permisos requeridos
- Compruebe que la aplicación esté instalada en las organizaciones correctas
- Revise los logs del servicio de recopilación para obtener mensajes de error específicos
Problemas de conectividad de red:
- Asegúrese de que el servicio de recopilación pueda acceder a su instancia de GitHub Enterprise
- Verifique que los certificados SSL estén configurados correctamente si usa HTTPS
- Compruebe la resolución de DNS para su dominio de GitHub Enterprise
Desinstalación
Para desinstalar la integración de GitHub Enterprise:
- Navegue a la interfaz de usuario de GitHub Enterprise.
- Vaya a la configuración de la organización donde está instalada la aplicación.
- Desinstale la aplicación de GitHub directamente desde la interfaz de GitHub Enterprise. Esta acción activará el proceso de backend para dejar de recopilar datos.
- Detenga y elimine el servicio de recopilación de su entorno Docker.