Metriksammlung aus OpenTelemetry (Otel)-Metriken

  • Freigeben Version: Australia
  • Aktualisiert 26. Juni 2026
  • 4 Minuten Lesedauer
  • Mit dem MID-Webservice-Metriksammler können Sie JSON- und protobuf-formatierte Metriken erfassen, die von OpenTelemetry (Otel) gesendet werden.

    Vorbereitungen

    Stellen Sie sicher, dass Sie installiert haben Ereignismanagement Plugin „Connectors“ (sn_em_Connector) auf dem ServiceNow KI-Plattforminstanz und ServiceNow Version ist Australia Oder höher.

    Stellen Sie Folgendes sicher:
    Erforderliche Rolle: evt_mgmt_admin

    Warum und wann dieser Vorgang ausgeführt wird

    Protobuf- und JSON-formatierte Metriken werden von Opentelemetry gesendet. Der MID-Server transformiert die gesammelten Metriken, indem er sie mit analysiert TransformMetrics_MidOpenTelemetrySkripteinbindung, befindet sich unter Ereignismanagement > Integrationen > PushConnectorsan. Wählen Sie auf der Seite Push-Connectors die Option aus OpenTelemetry .

    Das Standardformat der URL zum Verschieben von Ereignisnachrichten vom GCP an den MID-Server ist: http://{MID_Server_IP}:{MID_Web_Server_Port}/api/MID/sa/inbound_metrics?transform=TransformMetrics_MidOpenTelemetry

    Tabelle : 1. Variablen in der Standard-URL
    Variable Beschreibung
    MID_Server_IP IP-Adresse der MID-Webserver-Erweiterung.
    {MID_Web_Server_Port} Listener-Port der MID-Webserver-Erweiterung.
    MID_Web_Server_User Anwendername für die MID-Webserver-Erweiterung.
    MID_Web_Server_Password Passwort des Anwenders des MID-Webservers.

    Prozedur

    1. KONFIGURIEREN SIE EMPFÄNGER: HOSTMETRICS-EMPFÄNGER – SYSTEMMETRIKSAMMLUNG
      Fügen Sie den folgenden Hostmetriken-Empfänger im Abschnitt „Empfänger:“ hinzu, um Systemmetriken zu erfassen:
      receivers:
        hostmetrics:
          collection_interval: 10s
          scrapers:
            cpu:
            memory:
            disk:
            filesystem:
            network:
            processes:
            paging:
      
      Hinweis:
      • Collection_interval für häufige Metrikaktualisierungen auf 10 Sekunden festgelegt.
      • Passen Sie das Intervall basierend auf Ihren Überwachungsanforderungen an (höhere Werte reduzieren den Overhead).
      • Aktivieren Sie nur die Scraper, die Sie benötigen, um die Ressourcennutzung zu minimieren.
    2. KONFIGURIEREN SIE PROZESSOREN
      TRANSFORMATIONSPROZESSOR: ENTFERNEN SIE UNNÖTIGE FELDER
      1. Fügen Sie den folgenden Transformationsprozessor im Abschnitt „Prozessoren:“ hinzu, um unnötige Felder aus der Nutzlast zu entfernen:
        transform:
          metric_statements:
            - context: scope
              statements:
                - set(name, "")
                - set(version, "")
        
      2. SPEICHERBEGRENZER-PROZESSOR – SPEICHERPROBLEME VERHINDERN
        Fügen Sie den folgenden Memory_Limiter-Prozessor im Abschnitt „Prozessoren:“ hinzu, um Fehler bei fehlendem Arbeitsspeicher zu vermeiden:
        memory_limiter:
          limit_mib: 5
          spike_limit_mib: 1
        
        Hinweis:
        • Limit_mib auf 5 MB Arbeitsspeichernutzung festgelegt
        • „Spike_limit_mib“ wurde auf 1 MB angepasst, um temporäre Spitzen zu verarbeiten
        • Passen Sie diese Werte basierend auf dem verfügbaren Arbeitsspeicher Ihres Systems an
      3. FILTERPROZESSOR: WÄHLEN SIE BESTIMMTE METRIKEN AUS
        Fügen Sie den folgenden Filterprozessor im Abschnitt „Prozessoren:“ hinzu, um nur ausgewählte Metriken einzubeziehen:
        filter/minimal:
          metrics:
            include:
              match_type: strict
              metric_names:
                # CPU Metrics
                - system.cpu.time
                - system.cpu.load_average.1m
                - system.cpu.load_average.5m
                - system.cpu.load_average.15m
                # Memory Metrics
                - system.memory.usage
                - system.paging.usage
                # Disk Metrics
                - system.filesystem.usage
                - system.disk.io
                - system.disk.io_time
                # Process Metrics
                - system.processes.count
                - system.processes.created
                # Paging Metrics
                - system.paging.operations
                # Network Metrics
                - system.network.io
                - system.network.packets
                - system.network.errors
                - system.network.dropped
                - system.network.connections
                # MySQL Metrics
                - mysql.operations
                - mysql.locks
                - mysql.uptime
                - mysql.threads
                # HTTP Check Metrics
                - httpcheck.duration
                - httpcheck.status
                - httpcheck.error
                # Prometheus node_exporter Metrics
                - node_cpu_seconds_total
                - node_memory_MemTotal_bytes
                - node_memory_MemAvailable_bytes
                - node_disk_read_bytes_total
                - node_disk_written_bytes_total
                - node_disk_io_time_seconds_total
                - node_network_receive_bytes_total
                - node_network_transmit_bytes_total
        
        Hinweis:
        Histogrammmetriken werden vom ServiceNow-MID-Server nicht unterstützt.

        Selbst wenn Histogrammmetriken an den MID-Server gesendet werden, ignoriert das ServiceNow-Transformationsskript sie automatisch. Als Best Practice wird jedoch empfohlen, Histogrammmetriken auf Sammlerebene herauszufiltern, um die Netzwerkbandbreite zu optimieren und unnötige Datenübertragungen zu reduzieren.

        Um Histogrammmetriken auszuschließen, fügen Sie den folgenden Filter hinzu:
        filter/drop_histograms:
            metrics:
              metric:
                - 'type == METRIC_DATA_TYPE_HISTOGRAM'
    3. KONFIGURIEREN SIE EXPORTER
      Wählen Sie basierend auf Ihren Anforderungen eine der folgenden Authentifizierungsmethoden aus:
      1. OPTION A: API-SCHLÜSSELAUTHENTIFIZIERUNG
        Fügen Sie den folgenden Exporter im Abschnitt „Exporter:“ hinzu:
        otlphttp/opentelemetry:
          metrics_endpoint: "http://{mid_server_ip}:{port}/api/mid/sa/inbound_metrics?transform=TransformMetrics_MidOpenTelemetry"
          headers:
            Authorization: "Key {api_key}"
          timeout: 30s
          compression: none
          tls:
            insecure: true
          sending_queue:
            enabled: true
            num_consumers: 4
            queue_size: 100
          retry_on_failure:
            enabled: true
            initial_interval: 5s
            max_interval: 30s
        
        Hinweis:
        „Komprimierung:gzip“ wird nicht unterstützt. Ersetzen Sie {Mid_Server_ip}, {Port} und {api_key} durch Ihre tatsächlichen Werte.
      2. OPTION B: STANDARDAUTHENTIFIZIERUNG
        Für die Standardauthentifizierung müssen Sie sowohl eine Erweiterung als auch einen Exporter konfigurieren.
        1. Konfigurieren Sie Die Erweiterung Für Die Standardauthentifizierung
          Fügen Sie im Abschnitt „Erweiterungen:“ Folgendes hinzu:
          extensions:
            basicauth/mid:
              client_auth:
                username: "otel"
                password: "Otel@123"
          
          Hinweis:
          Ersetzen Sie Anwendername und Passwort durch Ihre tatsächlichen Anmeldeinformationen.
        2. Konfigurieren Sie Den Exporteur Der Standardauthentifizierung
          Fügen Sie im Abschnitt „Exporter:“ Folgendes hinzu:
          otlphttp/opentelemetryBasic:
            metrics_endpoint: "http://{mid_server_ip}:{port}/api/mid/sa/inbound_metrics?transform=TransformMetrics_MidOpenTelemetry"
            auth:
              authenticator: basicauth/mid
            timeout: 30s
            compression: none
            tls:
              insecure: true
            sending_queue:
              enabled: true
              num_consumers: 4
              queue_size: 100
            retry_on_failure:
              enabled: true
              initial_interval: 5s
              max_interval: 30s
          
          Hinweis:
          „Komprimierung:gzip“ wird nicht unterstützt. Ersetzen Sie {MID_Server_ip} und {Port} durch Ihre tatsächlichen Werte.
    4. KONFIGURIEREN SIE DIE SERVICE-PIPELINE
      Fügen Sie die konfigurierten Prozessoren und Exporter der Metrik-Pipeline im Abschnitt „Service:“ hinzu:
      service:
        pipelines:
          metrics:
            receivers: [<your_configured_receivers>]
            processors: [memory_limiter, transform, filter/minimal]
            exporters: [otlphttp/opentelemetry, otlphttp/opentelemetryBasic]
      
      Hinweis:
      • Ersetzen Sie <your_configured_receivers> durch Ihre tatsächlichen Empfängernamen (z. B. Hostmetriken).
      • Schließen Sie nur die von Ihnen konfigurierten Exporter ein (API-Schlüssel oder Standardauthentifizierung oder beides).
      • Prozessorreihenfolge ist wichtig: Memory_limiter muss zuerst sein, gefolgt von Transformation und Filter.
      • Stellen Sie sicher, dass die Prozessornamen mit den in Schritt 2 definierten übereinstimmen.
      • Wenn Sie Histogrammfilterung verwenden, fügen Sie Filter/Drop_histogramme nach Filter/minimal hinzu.
    5. ZUSÄTZLICHE KONFIGURATIONSOPTIONEN
      Standardmäßig sendet OpenTelemetry Daten im Protokollpuffer-Format (Protobuf).
      Um stattdessen Daten im JSON-Format zu senden, fügen Sie Ihrer Exporter-Konfiguration den folgenden Header hinzu:
      headers:
        Content-Type: "application/json"
      

      VOLLSTÄNDIGES KONFIGURATIONSBEISPIEL.

      Nachfolgend finden Sie eine vollständige Beispielkonfigurationsdatei, die alle Komponenten kombiniert:
      receivers:
        hostmetrics:
          collection_interval: 10s
          scrapers:
            cpu:
            memory:
            disk:
            filesystem:
            network:
            processes:
            paging:
       
      processors:
        memory_limiter:
          limit_mib: 5
          spike_limit_mib: 1
        
        transform:
          metric_statements:
            - context: scope
              statements:
                - set(name, "")
                - set(version, "")
        
        filter/minimal:
          metrics:
            include:
              match_type: strict
              metric_names:
                - system.cpu.time
                - system.cpu.load_average.1m
                - system.memory.usage
                - system.network.io
        
        filter/drop_histograms:
          metrics:
            include:
              metric:
                - 'type != METRIC_DATA_TYPE_HISTOGRAM'
       
      extensions:
        basicauth/mid:
          client_auth:
            username: "otel"
            password: "Otel@123"
       
      exporters:
        otlphttp/opentelemetry:
          metrics_endpoint: "https://10.0.0.100:8443/api/mid/sa/inbound_metrics?transform=TransformMetrics_MidOpenTelemetry"
          headers:
            Authorization: "Key your_api_key_here"
          timeout: 30s
          compression: none
          tls:
            insecure: false
          sending_queue:
            enabled: true
            num_consumers: 4
            queue_size: 100
          retry_on_failure:
            enabled: true
            initial_interval: 5s
            max_interval: 30s
       
      service:
        extensions: [basicauth/mid]
        pipelines:
          metrics:
            receivers: [hostmetrics]
            processors: [memory_limiter, transform, filter/minimal, filter/drop_histograms]
            exporters: [otlphttp/opentelemetry]