OpenTelemetry(Otel) 메트릭의 메트릭 수집

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 06월 17일
  • 소요 시간: 10분
  • MID WebService 메트릭 수집기를 사용하면 OpenTelemetry(Otel)에서 보낸 JSON 및 protobuf 형식의 메트릭을 수집할 수 있습니다.

    시작하기 전에

    AI Platform 인스턴스에 ServiceNow 커넥터(sn_em_connector) 플러그인을 설치 이벤트 관리 했으며 버전이 ServiceNow 그 이상인지 Australia 확인합니다.

    다음을 확인하십시오.
    필요한 역할: evt_mgmt_admin

    이 태스크 정보

    Protobuf 및 JSON 형식의 메트릭은 Opentelemetry에서 전송됩니다. MID 서버는 다음에 있는 스크립트 포함을 사용해 TransformMetrics_MidOpenTelemetry 구문 분석하여 수집된 메트릭을 변환합니다. 이벤트 관리 > 통합 > 푸시 커넥터. 밀어넣기 커넥터 페이지에서 OpenTelemetry를 선택합니다.

    GCP에서 MID 서버로 이벤트 메시지를 밀어넣는 URL의 기본 형식은 http://{MID_Server_IP}:{MID_Web_Server_Port}/api/mid/sa/inbound_metrics?transform=TransformMetrics_MidOpenTelemetry입니다.

    표 1. 기본 URL의 변수
    변수 설명
    MID_Server_IP MID 웹 서버 확장의 IP 주소입니다.
    MID_Web_Server_Port MID 웹 서버 확장의 수신 포트입니다.
    MID_Web_Server_User MID 웹 서버 확장의 사용자 이름입니다.
    MID_Web_Server_Password MID 웹 서버의 사용자 암호입니다.

    프로시저

    1. 수신기 구성: HOSTMETRICS 수신기 - 시스템 메트릭 수집
      "수신기:" 섹션에 다음 hostmetrics 수신기를 추가하여 시스템 메트릭을 수집합니다.
      receivers:
        hostmetrics:
          collection_interval: 10s
          scrapers:
            cpu:
            memory:
            disk:
            filesystem:
            network:
            processes:
            paging:
      
      주:
      • Collection_interval 빈번한 메트릭 업데이트의 경우 10초로 설정됩니다.
      • 모니터링 요구 사항에 따라 간격을 조정합니다(값이 높을수록 오버헤드가 줄어듭니다).
      • 리소스 사용량을 최소화하는 데 필요한 스크레이퍼만 활성화합니다.
    2. 프로세서 구성
      변환 프로세서 - 불필요한 필드 제거
      1. "processors:" 섹션에서 다음 변환 프로세서를 추가하여 페이로드에서 불필요한 필드를 제거합니다.
        transform:
          metric_statements:
            - context: scope
              statements:
                - set(name, "")
                - set(version, "")
        
      2. 메모리 제한기 프로세서 - 메모리 문제 방지
        메모리 부족 오류를 방지하려면 "프로세서:" 섹션에서 다음 memory_limiter 프로세서를 추가합니다.
        memory_limiter:
          limit_mib: 5
          spike_limit_mib: 1
        
        주:
        • limit_mib 5MB의 메모리 사용량으로 설정
        • spike_limit_mib 일시적인 스파이크를 처리하기 위해 1MB로 조정됨
        • 시스템에서 사용 가능한 메모리에 따라 이 값을 조정합니다
      3. 필터 프로세서 - 특정 메트릭 선택
        선택한 메트릭만 포함하려면 "프로세서:" 섹션에서 다음 필터 프로세서를 추가합니다.
        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
        
        주:
        히스토그램 메트릭은 ServiceNow MID 서버에서 지원되지 않습니다.

        히스토그램 메트릭이 MID Server로 전송되더라도 ServiceNow 변환 스크립트는 이를 자동으로 무시합니다. 그러나 가장 좋은 방법은 수집기 수준에서 히스토그램 메트릭을 필터링하여 네트워크 대역폭을 최적화하고 불필요한 데이터 전송을 줄이는 것입니다.

        히스토그램 메트릭을 제외하려면 다음 필터를 추가합니다.
        filter/drop_histograms:
            metrics:
              metric:
                - 'type == METRIC_DATA_TYPE_HISTOGRAM'
    3. 익스포터 구성
      요구 사항에 따라 다음 인증 방법 중 하나를 선택합니다.
      1. 옵션 A: API 키 인증
        "익스포터:" 섹션에 다음 익스포터를 추가합니다.
        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
        
        주:
        압축:gzip은 지원되지 않습니다. {mid_server_ip}, {port}, {api_key}를 실제 값으로 바꿉니다.
      2. 옵션 B: 기본 인증
        기본 인증의 경우 확장과 익스포터를 모두 구성해야 합니다.
        1. 기본 인증 확장 구성
          "extensions:" 섹션에 다음을 추가합니다.
          extensions:
            basicauth/mid:
              client_auth:
                username: "otel"
                password: "Otel@123"
          
          주:
          사용자 이름과 암호를 실제 자격 증명으로 바꿉니다.
        2. 기본 인증 익스포트 구성
          "익스포터:" 섹션에 다음을 추가합니다.
          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
          
          주:
          압축:gzip은 지원되지 않습니다. {mid_server_ip} 및 {port}를 실제 값으로 바꿉니다.
    4. 서비스 파이프라인 구성
      구성된 프로세서와 익스포터를 "서비스:" 섹션의 메트릭 파이프라인에 추가합니다.
      service:
        pipelines:
          metrics:
            receivers: [<your_configured_receivers>]
            processors: [memory_limiter, transform, filter/minimal]
            exporters: [otlphttp/opentelemetry, otlphttp/opentelemetryBasic]
      
      주:
      • <your_configured_receivers> 실제 수신기 이름(예: hostmetrics)으로 바꿉니다.
      • 구성한 익스포터(API 키 또는 기본 인증 또는 둘 다)만 포함합니다.
      • 프로세서 순서 중요: memory_limiter이 먼저여야 하고 그 다음에 변환 및 필터가 필요합니다.
      • 프로세서 이름이 2단계에서 정의한 것과 일치하는지 확인합니다.
      • 히스토그램 필터링을 사용하는 경우 필터/미니멀 다음에 필터/drop_histograms을 추가합니다.
    5. 추가 구성 옵션
      기본적으로 OpenTelemetry는 프로토콜 버퍼(protobuf) 형식으로 데이터를 보냅니다.
      대신 JSON 형식으로 데이터를 보내려면 익스포터 구성에 다음 헤더를 추가합니다.
      headers:
        Content-Type: "application/json"
      

      전체 구성 예시.

      다음은 모든 구성 요소를 결합한 구성 파일의 전체 예제입니다.
      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]