Skip to main content

Einrichten der externen Überwachung mit OpenTelemetry

Configure external monitoring systems to collect and analyze OpenTelemetry metrics from your GitHub Enterprise Server instance.

Ansätze zur externen Überwachung

Externe Überwachung mit OpenTelemetry ermöglicht es Ihnen, Ihre GitHub Enterprise Server Instanz in bestehende Überwachungsinfrastruktur und -tools zu integrieren. GitHub Enterprise Server bietet zwei primäre Ansätze für die externe Überwachung:

  1.        **Prometheus-Endpunkt**: Bereitstellen von Metriken im Prometheus-Format für externe Tools zum Abfragen
    
  2.        **Benutzerdefinierte OpenTelemetry-Pipelines: Konfigurieren des OpenTelemetry-Sammlers** zum Pushen von Metriken an externe Überwachungssysteme
    

Hinweis

In Clusterbereitstellungen macht jeder Knoten seine eigenen lokalen Metriken verfügbar. Dazu gehören Knotenserver, die Metriken von allen Servern im Cluster sammeln, aber nur ihre eigenen lokalen Metriken über Überwachungsendpunkte verfügbar machen. Um Metriken von allen Knoten in einem Cluster zu sammeln, müssen Sie Ihr Überwachungssystem so konfigurieren, dass es von jedem Knoten einzeln erfasst wird.

Voraussetzungen

  • GitHub Enterprise Server 3.18 oder höher mit aktivierten OpenTelemetry-Metriken
  • Netzwerkkonnektivität zwischen Ihrer GitHub Enterprise Server-Instanz und externen Überwachungssystemen
  • Administrativer Zugriff auf Ihre GitHub Enterprise Server Instanz und Überwachungssysteme

Auswählen ihres Überwachungsansatzes

Wählen Sie den Überwachungsansatz aus, der ihren Infrastruktur- und Anforderungen am besten entspricht.

Verwenden Sie den Prometheus-Endpunkt in folgenden Fällen:

  • Sie verfügen über eine vorhandene Prometheus-basierte Überwachungsinfrastruktur
  • Sie bevorzugen ein Pull-basiertes Überwachungsmodell
  • Sie möchten externe Tools zum Auslesen von GitHub Enterprise Server-Metriken verwenden
  • Sie benötigen eine einfache Integration mit minimaler Konfiguration

Benutzerdefinierte OpenTelemetry-Pipelines

Verwenden Sie benutzerdefinierte OpenTelemetry-Pipelines in den folgenden Fällen:

  • Sie müssen Metriken gleichzeitig an mehrere Überwachungssysteme übertragen.
  • Sie möchten Metriken transformieren, filtern oder aggregieren, bevor Sie sie extern senden.
  • Sie verwenden cloudeigene Überwachungslösungen, die OTLP bevorzugen
  • Sie benötigen erweiterte metrische Verarbeitungsfunktionen.

Option 1: Verwenden des Prometheus-Endpunkts

Der OpenTelemetry-Überwachungsstapel enthält einen prometheuskompatiblen Endpunkt, der alle gesammelten Metriken im Prometheus-Format verfügbar macht und die Integration mit externen Überwachungstools ermöglicht. Siehe Textbasiertes Format in der Dokumentation für Prometheus.

Aktivieren des Prometheus-Endpunkts

Sie können den Prometheus-Endpunkt entweder mit der Verwaltungskonsole oder der Befehlszeilenschnittstelle aktivieren.

Verwenden der Verwaltungskonsole

  1. Klicke in einem Verwaltungskonto für GitHub Enterprise Server in der rechten oberen Ecke einer beliebigen Seite auf .

  2. Wenn du dich nicht bereits auf der Seite „Websiteadministrator“ befindest, klicke in der oberen linken Ecke auf Websiteadministrator.

  3. Klicke in der Randleiste „ Site admin“ auf Verwaltungskonsole.

  4. Wählen Sie in den Überwachungseinstellungen "OpenTelemetry aktivieren" aus.

  5. Passen Sie optional die Metriken-Aufbewahrung und das Metriken-Abrufintervall an, um die Leistung zu optimieren.

  6. Wählen Sie "Prometheus-kompatiblen (/Metriken)-Endpunkt aktivieren" aus.

  7. Geben Sie im Feld " Endpunktkennwort " ein sicheres Kennwort ein, um den Zugriff auf den Endpunkt zu steuern.

  8. Geben Sie optional in den Vertrauenswürdigen IPv4/IPv6-Adressen oder CIDR-Blöcken in einem durch Trennzeichen getrennten Listenfeld die IP-Adressen oder CIDR-Blöcke ein, die auf den Endpunkt zugreifen dürfen.

  9. Klicke auf der Randleiste unter „Einstellungen“ auf Einstellungen speichern.

    Hinweis

    Durch das Speichern von Einstellungen in der Verwaltungskonsole werden Systemdienste neu gestartet, was zu einer für den Benutzer feststellbaren Downtime führen könnte.

  10. Warten Sie auf den Abschluss der Konfigurationsausführung.

Verwenden der Befehlszeilenschnittstelle

  1. Verbinden Sie sich per SSH mit Ihrer GitHub Enterprise Server-Instanz.

  2. Aktivieren Sie den Prometheus-Endpunkt:

    ghe-config observability.metrics.prometheus-endpoint-enabled true
    ghe-config-apply
    
  3. Einrichten der Authentifizierung für den Endpunkt (dringend empfohlen):

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

Zugreifen auf den Prometheus-Endpunkt

Der Prometheus-Endpunkt ist verfügbar unter:

https://[hostname]:8010/metrics

Die Authentifizierung verwendet:

  •         **Benutzername**: `ghes-metrics`
    
  •         **Kennwort**: Der in Ihrer Konfiguration festgelegte Wert
    

Konfigurieren externer Tools zum Extrahieren von Metriken

Sie können verschiedene externe Überwachungstools so konfigurieren, dass Metriken vom Prometheus-Endpunkt abgefragt werden.

Prometheus

Fügen Sie der Prometheus-Konfigurationsdatei die folgende Auftragskonfiguration hinzu:

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

Andere Überwachungstools

Der Prometheus-Endpunkt ist mit jedem Überwachungstool kompatibel, das Prometheus-Format-Metriken abfragen kann, einschließlich:

  • Grafana (mit Prometheus-Datenquelle)
  • Datadog (mit Prometheus Check)
  • New Relic (mit Prometheus-Integration)
  • Victoria-Metriken
  • InfluxDB (mit Prometheus Input-Plugin)

Sicherheitsüberlegungen für den Prometheus-Endpunkt

Zusätzliche Sicherheitsmaßnahmen können implementiert werden, um Ihren Metrikenendpunkt zu schützen.

Kennwortschutz

Der Prometheus-Endpunkt unterstützt die Verwendung eines Kennworts zum Einschränken des Zugriffs. Sie können dies entweder über die Verwaltungskonsole oder über das CLI konfigurieren.

  •         **Verwenden der Verwaltungskonsole**:
    

    Verwenden Sie in den Überwachungseinstellungen das Feld " Endpunktkennwort ", um ein sicheres Kennwort einzugeben, um den Zugriff auf den Endpunkt zu steuern.

  •         **Verwenden der Befehlszeilenschnittstelle**:
    
    ghe-config observability.metrics.prometheus-endpoint-password your-secure-password
    ghe-config-apply
    

Setzen von IP-Adressen auf die Positivliste

Der Prometheus-Endpunkt unterstützt die Liste zugelassener IP-Adressen für mehr Sicherheit. Sie können dies entweder über die Verwaltungskonsole oder über das CLI konfigurieren.

  •         **Verwenden der Verwaltungskonsole**:
    

    Verwenden Sie in den Überwachungseinstellungen die vertrauenswürdigen IPv4/IPv6-Adressen oder CIDR-Blöcke in einem durch Trennzeichen getrennten Listenfeld , um IP-Adressen oder CIDR-Blöcke einzugeben, die Zugriff auf den Endpunkt haben sollen.

  •         **Verwenden der Befehlszeilenschnittstelle**:
    
    ghe-config observability.metrics.prometheus-endpoint-trusted-ips "10.0.0.0/8,192.168.0.0/16"
    ghe-config-apply
    

Testen des Endpunkts

Überprüfen Sie, ob Metriken exportiert werden:

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

Option 2: Verwenden von benutzerdefinierten OpenTelemetry-Pipelines

GitHub Enterprise Server unterstützt benutzerdefinierte OpenTelemetry-Sammelkonfigurationen, so dass Sie die Überwachungsfunktionen durch Hinzufügen benutzerdefinierter Pipelines, Exportierer und Prozessoren erweitern können. Auf diese Weise können Sie Metriken an externe Überwachungssysteme übermitteln und gleichzeitig den standardmäßigen GitHub Enterprise Server-Beobachtungsstapel beibehalten.

Wichtige Überlegungen für benutzerdefinierte Konfigurationen

  • Benutzerdefinierte Konfigurationen sind additiv zur GitHub Enterprise Server-OpenTelemetry-Standardkonfiguration.
  •         **Reservierte Pfade**: Die Pfade `/ghes` und `/internal` sind für GitHub Enterprise Server interne Verwendung reserviert und dürfen nicht in benutzerdefinierten Konfigurationsdateien verwendet werden.
    
  •         `otlp/ghes`- und `prometheus/ghes`-Empfänger sind die integrierten Quellen für GitHub Enterprise Server-Metriken, die Sie in Ihren benutzerdefinierten Pipelines verwenden können.
    
  • Testen Sie Ihre Konfiguration gründlich in einer Nicht-Produktionsumgebung, bevor Sie die Anwendung auf die Produktion anwenden.
  • Überwachen der Ressourcenauslastung nach dem Aktivieren von benutzerdefinierten Konfigurationen, da zusätzliche Pipelines die CPU- und Arbeitsspeicherauslastung erhöhen können

Aktivieren der benutzerdefinierten OpenTelemetry-Konfiguration

Sie können die benutzerdefinierte OpenTelemetry-Konfiguration entweder mithilfe der Verwaltungskonsole oder der Befehlszeilenschnittstelle aktivieren.

Verwenden der Verwaltungskonsole

  1. Klicke in einem Verwaltungskonto für GitHub Enterprise Server in der rechten oberen Ecke einer beliebigen Seite auf .

  2. Wenn du dich nicht bereits auf der Seite „Websiteadministrator“ befindest, klicke in der oberen linken Ecke auf Websiteadministrator.

  3. Klicke in der Randleiste „ Site admin“ auf Verwaltungskonsole.

  4. Wählen Sie in den Überwachungseinstellungen zuerst "OpenTelemetry aktivieren" aus.

  5. Wählen Sie "Benutzerdefinierte OpenTelemetry Collector-Pipelines aktivieren" aus.

  6. Verwenden Sie die Schaltfläche " Durchsuchen..." , um Ihre benutzerdefinierte Konfigurationsdatei des OpenTelemetry-Sammelsammlers (*.yml) hochzuladen, siehe Beispielkonfigurationen für beliebte Überwachungssysteme.

  7. Klicke auf der Randleiste unter „Einstellungen“ auf Einstellungen speichern.

    Hinweis

    Durch das Speichern von Einstellungen in der Verwaltungskonsole werden Systemdienste neu gestartet, was zu einer für den Benutzer feststellbaren Downtime führen könnte.

  8. Warten Sie auf den Abschluss der Konfigurationsausführung.

Verwenden der Befehlszeile

  1. Verbinden Sie sich per SSH mit Ihrer GitHub Enterprise Server-Instanz und führen Sie den folgenden Befehl aus.

    ghe-config observability.metrics.custom-config-enabled true
    
  2. Erstellen Sie Ihre benutzerdefinierte OpenTelemetry-Konfigurationsdatei unter /data/user/common/otelcol.yaml:

    sudo nano /data/user/common/otelcol.yaml
    
  3. Fügen Sie Ihre benutzerdefinierte Konfiguration hinzu (siehe Beispielkonfigurationen für beliebte Überwachungssysteme).

  4. Wenden Sie die Konfiguration an:

    ghe-config-apply
    

Die folgenden Beispiele zeigen, wie Sie benutzerdefinierte OpenTelemetry-Pipelines für beliebte Überwachungsplattformen konfigurieren. Informationen zu anderen Exporteuren oder zum Erstellen Eigener finden Sie im Repository von 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]

Generischer OTLP-Endpunkt

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

Überlegungen zu Netzwerk und Sicherheit

Konfigurieren Sie Ihre Netzwerk- und Sicherheitseinstellungen basierend auf Ihrem gewählten Überwachungsansatz.

TLS und Zertifikate

Für sichere Verbindungen mit externen Überwachungssystemen:

  • Verwenden gültiger TLS-Zertifikate nach Möglichkeit
  • Konfigurieren Sie die entsprechenden tls_config Einstellungen in Ihrem Überwachungssystem
  • Erwägen Sie die Verwendung von gegenseitigem TLS (MTLS) für erhöhte Sicherheit

Nächste Schritte