Skip to main content

Configuración de la supervisión externa con OpenTelemetry

Configure los sistemas de supervisión externos para recopilar y analizar métricas de OpenTelemetry de la instancia de GitHub Enterprise Server.

Enfoques de supervisión externa

La supervisión externa con OpenTelemetry permite integrar la instancia de GitHub Enterprise Server con las herramientas y la infraestructura de supervisión existentes. GitHub Enterprise Server proporciona dos enfoques principales para la supervisión externa:

  1.        **Punto de conexión de Prometheus**: exponer métricas en formato Prometheus para que las herramientas externas puedan recoger.
    
  2.        **Canalizaciones de OpenTelemetry personalizadas**: configure el recopilador de OpenTelemetry para enviar métricas a sistemas de supervisión externos
    

Nota:

En las implementaciones de clúster, cada nodo expone sus propias métricas locales. Esto incluye servidores de nodo, que recopilan métricas de todos los servidores del clúster, pero solo exponen sus propias métricas locales a través de puntos de conexión de supervisión. Para recopilar métricas de todos los nodos de un clúster, debe configurar el sistema de supervisión para recopilar de cada nodo individualmente.

Prerrequisitos

  • GitHub Enterprise Server 3.18 o posterior con las métricas de OpenTelemetry habilitadas
  • Conectividad de red entre su instancia de GitHub Enterprise Server y los sistemas de supervisión externa
  • Acceso administrativo tanto a su instancia de GitHub Enterprise Server como a los sistemas de supervisión.

Elección del enfoque de supervisión

Elija el enfoque de supervisión que mejor se adapte a su infraestructura y requisitos.

Use el punto de conexión de Prometheus cuando:

  • Tiene una infraestructura existente de supervisión basada en Prometheus.
  • Prefiere un modelo de supervisión basado en extracción
  • Quiere usar herramientas externas para obtener métricas de GitHub Enterprise Server
  • Necesita una integración sencilla con una configuración mínima.

Canalizaciones de OpenTelemetry personalizadas

Use canalizaciones de OpenTelemetry personalizadas cuando:

  • Debe insertar métricas en varios sistemas de supervisión simultáneamente.
  • Quiere transformar, filtrar o agregar métricas antes de enviarlos externamente.
  • Está usando soluciones de supervisión nativas de la nube que prefieren OTLP.
  • Necesita funcionalidades avanzadas de procesamiento de métricas.

Opción 1: Uso del punto de conexión de Prometheus

La pila de supervisión de OpenTelemetry incluye un punto de conexión compatible con Prometheus que expone todas las métricas recopiladas en formato Prometheus, lo que permite la integración con herramientas de supervisión externas. Consulte Formato basado en texto en la documentación de Prometheus.

Habilitación del punto de conexión de Prometheus

Puede habilitar el punto de conexión de Prometheus utilizando la Consola de administración o la interfaz de línea de comandos.

Uso de la Consola de administración

  1. Desde una cuenta administrativa de GitHub Enterprise Server, en la esquina superior derecha de cualquier página, haz clic en .

  2. Si todavía no está en la página "Administrador del sitio", en la esquina superior izquierda, haga clic en Administrador del sitio.

  3. En la barra lateral " Site admin", haz clic en Consola de administración.

  4. En la configuración de supervisión, seleccione Habilitar OpenTelemetry.

  5. Opcionalmente, ajuste los campos Retención de métricas y Intervalo de extracción de métricas para optimizar el rendimiento.

  6. Seleccione Habilitar endpoint compatible con Prometheus (/metrics).

  7. En el campo Contraseña del punto de conexión, escriba una contraseña segura para controlar el acceso al punto de conexión.

  8. Opcionalmente, en las direcciones IPv4/IPv6 de confianza o los bloques CIDR de un campo de lista separados por comas , escriba las direcciones IP o los bloques CIDR que tienen permiso para acceder al punto de conexión.

  9. En la barra lateral "Configuración" , haga clic en Guardar configuración.

    Nota:

    Al guardar la configuración en Consola de administración se restablecen los servicios del sistema, lo que podría generar un tiempo de inactividad visible para el usuario.

  10. Espera que se complete la fase de configuración.

Uso de la interfaz de la línea de comandos

  1. Conéctese mediante SSH a su instancia de GitHub Enterprise Server.

  2. Habilite el punto final de Prometheus:

    ghe-config observability.metrics.prometheus-endpoint-enabled true
    ghe-config-apply
    
  3. Configurar la autenticación para el punto de conexión (se recomienda encarecidamente):

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

Acceso al punto de conexión de Prometheus

El punto de conexión de Prometheus estará disponible en:

https://[hostname]:8010/metrics

La autenticación usa:

  • Nombre de usuario: ghes-metrics
  • Contraseña: valor establecido en la configuración

Configuración de herramientas externas para extraer métricas

Puede configurar varias herramientas de supervisión externas para extraer métricas del punto de conexión de Prometheus.

Prometheus

Agregue la siguiente configuración de trabajo al archivo de configuración de 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

Otras herramientas de supervisión

El punto de conexión de Prometheus es compatible con cualquier herramienta de supervisión que pueda extraer métricas de formato Prometheus, entre las que se incluyen:

  • Grafana (usando el origen de datos de Prometheus)
  • Datadog (mediante prometheus check)
  • New Relic (mediante la integración de Prometheus)
  • Métricas de Victoria
  • InfluxDB (mediante el complemento de entrada Prometheus)

Consideraciones de seguridad para el punto de conexión de Prometheus

Se pueden implementar medidas de seguridad adicionales para proteger el terminal de métricas.

Protección con contraseña

El punto de conexión de Prometheus admite el uso de una contraseña para limitar el acceso. Puede configurarlo a través de la Consola de administración o la interfaz de la línea de comandos.

  • Con la Consola de administración:

    En la configuración de supervisión, use el campo Contraseña del punto de conexión para escribir una contraseña segura para controlar el acceso al punto de conexión.

  • Mediante la interfaz de la línea de comandos:

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

Adición a la lista de direcciones IP permitidas

El punto de conexión de Prometheus admite la inclusión en la lista de direcciones IP permitidas para mejorar la seguridad. Puede configurarlo a través de la Consola de administración o la interfaz de la línea de comandos.

  • Con la Consola de administración:

    En la configuración de supervisión, use las direcciones IPv4/IPv6 de confianza o los bloques CIDR en un campo de lista separados por comas para escribir direcciones IP o bloques CIDR que deben tener acceso al punto de conexión.

  • Mediante la interfaz de la línea de comandos:

    ghe-config observability.metrics.prometheus-endpoint-trusted-ips "10.0.0.0/8,192.168.0.0/16"
    ghe-config-apply
    

Prueba del punto de conexión

Compruebe que se exportan las métricas:

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

Opción 2: Uso de canalizaciones de OpenTelemetry personalizadas

GitHub Enterprise Server admite configuraciones de recopilador OpenTelemetry personalizadas, lo que le permite ampliar las capacidades de monitoreo agregando canalizaciones personalizadas, exportadores y procesadores. Esto le permite enviar métricas a sistemas de supervisión externa mientras mantiene la pila de observabilidad predeterminada de GitHub Enterprise Server .

Consideraciones importantes para las configuraciones personalizadas

  • Las configuraciones personalizadas se agregan a la configuración predeterminada de OpenTelemetry de GitHub Enterprise Server.
  • Rutas reservadas: las rutas /ghes y /internal están reservadas para el uso interno de GitHub Enterprise Server y no deben usarse en archivos de configuración personalizados.
  •           Los receptores `otlp/ghes` y `prometheus/ghes` son los orígenes integrados de las métricas de GitHub Enterprise Server que puede usar en las canalizaciones personalizadas.
    
  • Prueba exhaustiva de la configuración en un entorno que no es de producción antes de aplicar a producción
  • Supervisión del uso de recursos después de habilitar configuraciones personalizadas, ya que las canalizaciones adicionales pueden aumentar el consumo de CPU y memoria.

Habilitación de la configuración personalizada de OpenTelemetry

Puede habilitar la configuración personalizada de OpenTelemetry mediante la Consola de administración o la interfaz de línea de comandos.

Uso de la Consola de administración

  1. Desde una cuenta administrativa de GitHub Enterprise Server, en la esquina superior derecha de cualquier página, haz clic en .

  2. Si todavía no está en la página "Administrador del sitio", en la esquina superior izquierda, haga clic en Administrador del sitio.

  3. En la barra lateral " Site admin", haz clic en Consola de administración.

  4. En la configuración de supervisión, primero seleccione Habilitar OpenTelemetry.

  5. Seleccione Enable custom OpenTelemetry Collector pipelines (Habilitar canalizaciones personalizadas de OpenTelemetry Collector).

  6. Use el botón Examinar... para cargar el archivo de configuración personalizado del recopilador openTelemetry (*.yml), consulte Configuraciones de ejemplo para sistemas de supervisión populares.

  7. En la barra lateral "Configuración" , haga clic en Guardar configuración.

    Nota:

    Al guardar la configuración en Consola de administración se restablecen los servicios del sistema, lo que podría generar un tiempo de inactividad visible para el usuario.

  8. Espera que se complete la fase de configuración.

Uso de la línea de comandos

  1. Conéctese mediante SSH a su instancia de GitHub Enterprise Server y ejecute el siguiente comando:

    ghe-config observability.metrics.custom-config-enabled true
    
  2. Cree el archivo de configuración de OpenTelemetry personalizado en /data/user/common/otelcol.yaml:

    sudo nano /data/user/common/otelcol.yaml
    
  3. Agregue la configuración personalizada (consulte Configuraciones de ejemplo para sistemas de supervisión populares).

  4. Aplique la configuración:

    ghe-config-apply
    

En los ejemplos siguientes se muestra cómo configurar canalizaciones de OpenTelemetry personalizadas para plataformas de supervisión populares. Para obtener información sobre otros exportadores o crear sus propios, consulte el repositorio de recopiladores de OpenTelemetry.

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]

Nueva reliquia

---
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]

Punto de conexión genérico de 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]

Consideraciones de red y seguridad

Configure las opciones de red y seguridad en función del enfoque de supervisión elegido.

TLS y certificados

Para conexiones seguras a sistemas de supervisión externos:

  • Uso de certificados TLS válidos siempre que sea posible
  • Configuración de las opciones adecuadas tls_config en el sistema de supervisión
  • Considere la posibilidad de usar TLS mutua (mTLS) para mejorar la seguridad

Pasos siguientes