Collecte de mesures à partir des mesures OpenTelemetry (Otel)

  • Rversion finale: Australia
  • Mis à jour 16 juin 2026
  • 5 minutes de lecture
  • Le collecteur de mesures MID WebService vous permet de collecter des mesures au format JSON et prototype envoyées à partir d’OpenTelemetry (Otel).

    Avant de commencer

    Assurez-vous d’avoir installé le module d’extension Gestion des événements Connecteurs (sn_em_connector) sur l’instance ServiceNow AI Platform et vérifiez que la ServiceNow version est Australia ou supérieure.

    Vérifiez les points suivants :
    Rôle requis : evt_mgmt_admin

    Pourquoi et quand exécuter cette tâche

    Les métriques au format Protobuf et JSON sont envoyées depuis Opentelemetry. Le serveur MID transforme les mesures collectées en les analysent à l’aide de l’include de TransformMetrics_MidOpenTelemetry script situé à Gestion des événements > Intégrations > Connecteurs par push. Dans la page Connecteurs par push, sélectionnez OpenTelemetry.

    Le format par défaut de l’URL pour transmettre par push les messages d’événements du GCP au serveur MID est le suivant : http://{MID_Server_IP} :{MID_Web_Server_Port}/api/mid/sa/inbound_metrics ?transform=TransformMetrics_MidOpenTelemetry

    Tableau 1. Variables dans l'URL par défaut
    Variable Description
    MID_Server_IP Adresse IP de l'extension MID Web Server.
    MID_Web_Server_Port Port d'écoute de l'extension MID Web Server.
    MID_Web_Server_User Nom d'utilisateur de l'extension MID Web Server.
    MID_Web_Server_Password Mot de passe de l'utilisateur de l'extension MID Web Server.

    Procédure

    1. CONFIGURER LES RÉCEPTEURS : RÉCEPTEUR HOSTMETRICS : COLLECTE DES MESURES SYSTÈME
      Ajoutez le récepteur de mesures d’hôte suivant dans la section « récepteurs : » pour collecter les mesures du système :
      receivers:
        hostmetrics:
          collection_interval: 10s
          scrapers:
            cpu:
            memory:
            disk:
            filesystem:
            network:
            processes:
            paging:
      
      Remarque :
      • Collection_interval défini sur 10 secondes pour les mises à jour fréquentes des mesures.
      • Ajustez l’intervalle en fonction de vos besoins de surveillance (des valeurs plus élevées réduisent les frais généraux).
      • Activez uniquement les scrapers dont vous avez besoin pour minimiser l’utilisation des ressources.
    2. CONFIGURER LES PROCESSEURS
      PROCESSEUR DE TRANSFORMATION : SUPPRIMER LES CHAMPS INUTILES
      1. Ajoutez le processeur de transformation suivant dans la section « processeurs : » pour supprimer les champs inutiles de la charge utile :
        transform:
          metric_statements:
            - context: scope
              statements:
                - set(name, "")
                - set(version, "")
        
      2. PROCESSEUR LIMITEUR DE MÉMOIRE : ÉVITER LES PROBLÈMES DE MÉMOIRE
        Ajoutez le processeur memory_limiter suivant dans la section « processeurs : » pour éviter les erreurs de mémoire insuffisante :
        memory_limiter:
          limit_mib: 5
          spike_limit_mib: 1
        
        Remarque :
        • limit_mib défini sur 5 Mo d’utilisation de la mémoire
        • spike_limit_mib ajusté à 1 Mo pour gérer les pics temporaires
        • Ajustez ces valeurs en fonction de la mémoire disponible sur votre système
      3. PROCESSEUR DE FILTRE : SÉLECTIONNER DES MESURES SPÉCIFIQUES
        Ajoutez le processeur de filtre suivant dans la section « Processeurs : » pour inclure uniquement les mesures sélectionnées :
        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
        
        Remarque :
        Les mesures d’histogramme ne sont pas prises en charge par Serveur MID ServiceNow.

        Même si les mesures d’histogramme sont envoyées au serveur MID, le script de transformation ServiceNow les ignore automatiquement. Toutefois, il est recommandé de filtrer les mesures d’histogramme au niveau du collecteur pour optimiser la bande passante réseau et réduire la transmission inutile de données.

        Pour exclure les mesures d’histogramme, ajoutez le filtre suivant :
        filter/drop_histograms:
            metrics:
              metric:
                - 'type == METRIC_DATA_TYPE_HISTOGRAM'
    3. CONFIGURER LES EXPORTATEURS
      Choisissez l’une des méthodes d’authentification suivantes en fonction de vos besoins :
      1. OPTION A : AUTHENTIFICATION DE CLÉ API
        Ajoutez l’exportateur suivant dans la section « Exportateurs : » :
        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
        
        Remarque :
        Compression :gzip n’est pas pris en charge. Remplacez {mid_server_ip}, {port} et {api_key} par vos valeurs réelles.
      2. OPTION B : AUTHENTIFICATION DE BASE
        Pour l’authentification de base, vous devez configurer à la fois une extension et un exportateur.
        1. Configurer l’extension d’authentification de base
          Ajoutez ce qui suit dans la section « extensions : » :
          extensions:
            basicauth/mid:
              client_auth:
                username: "otel"
                password: "Otel@123"
          
          Remarque :
          Remplacez le nom d’utilisateur et le mot de passe par vos informations d’identification réelles.
        2. Configurer l’exportateur d’authentification de base
          Ajouter ce qui suit dans la section « exportateurs : » :
          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
          
          Remarque :
          Compression :gzip n’est pas pris en charge. Remplacez {mid_server_ip} et {port} par vos valeurs réelles.
    4. CONFIGURER LE PIPELINE DE SERVICES
      Ajoutez les processeurs et exportateurs configurés au pipeline de mesures sous la section « service : » :
      service:
        pipelines:
          metrics:
            receivers: [<your_configured_receivers>]
            processors: [memory_limiter, transform, filter/minimal]
            exporters: [otlphttp/opentelemetry, otlphttp/opentelemetryBasic]
      
      Remarque :
      • Remplacez <your_configured_receivers> par les noms réels de vos destinataires (par exemple, hostmetrics).
      • Incluez uniquement les exportateurs que vous avez configurés (clé API ou authentification de base, ou les deux).
      • L’ordre du processeur est important : memory_limiter doit être le premier, suivi de la transformation et du filtre.
      • Assurez-vous que les noms de processeurs correspondent à ceux définis à l’étape 2.
      • Si vous utilisez le filtrage d’histogrammes, ajoutez filtre/drop_histograms après filtre/minimum.
    5. OPTIONS DE CONFIGURATION SUPPLÉMENTAIRES
      Par défaut, OpenTelemetry envoie des données au format Protocol Buffers (protobuf).
      Pour envoyer les données au format JSON à la place, ajoutez l’en-tête suivant à votre configuration d’exportateur :
      headers:
        Content-Type: "application/json"
      

      TERMINER L’EXEMPLE DE CONFIGURATION.

      Vous trouverez ci-dessous un exemple de fichier de configuration complet combinant tous les composants :
      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]