12.4. 가상 머신의 사용자 정의 메트릭 노출


OpenShift Container Platform에는 핵심 플랫폼 구성 요소에 대한 모니터링을 제공하는 사전 구성된 사전 설치된 자체 업데이트 모니터링 스택이 포함되어 있습니다. 이 모니터링 스택은 Prometheus 모니터링 시스템을 기반으로 합니다. Prometheus는 시계열 데이터베이스이며 메트릭에 대한 규칙 평가 엔진입니다.

OpenShift Container Platform 모니터링 스택을 사용하는 것 외에도 CLI를 사용하여 사용자 정의 프로젝트에 대한 모니터링을 활성화하고 node-exporter 서비스를 통해 가상 머신에 노출되는 사용자 정의 지표를 쿼리할 수 있습니다.

12.4.1. 노드 내보내기 서비스 구성

node-exporter 에이전트는 메트릭을 수집하려는 클러스터의 모든 가상 머신에 배포됩니다. 가상 머신과 연결된 내부 지표 및 프로세스를 노출하도록 node-exporter 에이전트를 서비스로 구성합니다.

사전 요구 사항

  • OpenShift Container Platform CLI oc를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 클러스터에 로그인합니다.
  • openshift-monitoring 프로젝트에서 cluster-monitoring-config ConfigMap 오브젝트를 생성합니다.
  • enableUserWorkloadtrue 로 설정하여 openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config ConfigMap 오브젝트를 구성합니다.

프로세스

  1. Service YAML 파일을 생성합니다. 다음 예에서 파일을 node-exporter-service.yaml 이라고 합니다.

    kind: Service
    apiVersion: v1
    metadata:
      name: node-exporter-service 
    1
    
      namespace: dynamation 
    2
    
      labels:
        servicetype: metrics 
    3
    
    spec:
      ports:
        - name: exmet 
    4
    
          protocol: TCP
          port: 9100 
    5
    
          targetPort: 9100 
    6
    
      type: ClusterIP
      selector:
        monitor: metrics 
    7
    Copy to Clipboard Toggle word wrap
    1
    가상 시스템에서 지표를 표시하는 node-exporter 서비스입니다.
    2
    서비스가 생성되는 네임스페이스입니다.
    3
    서비스의 레이블입니다. ServiceMonitor 는 이 서비스와 일치하도록 이 레이블을 사용합니다.
    4
    ClusterIP 서비스의 포트 9100에 지표를 표시하는 포트에 지정된 이름입니다.
    5
    node-exporter-service 에서 요청을 수신 대기하는 데 사용하는 대상 포트입니다.
    6
    monitor 레이블로 구성된 가상 머신의 TCP 포트 번호입니다.
    7
    가상 머신의 Pod와 일치하는 데 사용되는 레이블입니다. 이 예에서는 레이블 monitor 가 있는 모든 가상 머신의 Pod가 있고 지표 값이 일치합니다.
  2. node-exporter 서비스를 생성합니다.

    $ oc create -f node-exporter-service.yaml
    Copy to Clipboard Toggle word wrap

12.4.2. 노드 내보내기 서비스를 사용하여 가상 머신 구성

node-exporter 파일을 가상 머신에 다운로드합니다. 그런 다음 가상 머신이 부팅될 때 node-exporter 서비스를 실행하는 systemd 서비스를 생성합니다.

사전 요구 사항

  • 구성 요소의 Pod가 openshift-user-workload-monitoring 프로젝트에서 실행되고 있습니다.
  • 이 사용자 정의 프로젝트를 모니터링해야 하는 사용자에게 monitoring-edit 역할을 부여합니다.

프로세스

  1. 가상 머신에 로그인합니다.
  2. node-exporter 파일에 적용되는 디렉터리 경로를 사용하여 의 node-exporter 파일을 가상 머신에 다운로드합니다.

    $ wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
    Copy to Clipboard Toggle word wrap
  3. 실행 파일을 추출하여 /usr/bin 디렉터리에 배치합니다.

    $ sudo tar xvf node_exporter-1.3.1.linux-amd64.tar.gz \
        --directory /usr/bin --strip 1 "*/node_exporter"
    Copy to Clipboard Toggle word wrap
  4. /etc/systemd/systemnode_exporter.service 파일을 만듭니다. 이 systemd 서비스 파일은 가상 머신이 재부팅될 때 node-exporter 서비스를 실행합니다.

    [Unit]
    Description=Prometheus Metrics Exporter
    After=network.target
    StartLimitIntervalSec=0
    
    [Service]
    Type=simple
    Restart=always
    RestartSec=1
    User=root
    ExecStart=/usr/bin/node_exporter
    
    [Install]
    WantedBy=multi-user.target
    Copy to Clipboard Toggle word wrap
  5. systemd 서비스를 활성화하고 시작합니다.

    $ sudo systemctl enable node_exporter.service
    $ sudo systemctl start node_exporter.service
    Copy to Clipboard Toggle word wrap

검증

  • node-exporter 에이전트가 가상 시스템의 지표를 보고하는지 확인합니다.

    $ curl http://localhost:9100/metrics
    Copy to Clipboard Toggle word wrap

    출력 예

    go_gc_duration_seconds{quantile="0"} 1.5244e-05
    go_gc_duration_seconds{quantile="0.25"} 3.0449e-05
    go_gc_duration_seconds{quantile="0.5"} 3.7913e-05
    Copy to Clipboard Toggle word wrap

12.4.3. 가상 머신의 사용자 정의 모니터링 레이블 생성

단일 서비스에서 여러 가상 머신에 대한 쿼리를 활성화하려면 가상 머신의 YAML 파일에 사용자 지정 레이블을 추가합니다.

사전 요구 사항

  • OpenShift Container Platform CLI oc를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.
  • 웹 콘솔에 액세스하여 가상 머신을 다시 시작합니다.

프로세스

  1. 가상 머신 구성 파일의 template 사양을 편집합니다. 이 예에서 레이블 모니터에 는 값 지표 가 있습니다.

    spec:
      template:
        metadata:
          labels:
            monitor: metrics
    Copy to Clipboard Toggle word wrap
  2. 가상 머신을 중지하고 다시 시작하여 monitor 레이블에 지정된 라벨 이름으로 새 Pod를 생성합니다.

12.4.3.1. 메트릭에 대한 node-exporter 서비스 쿼리

/metrics 표준 이름 아래의 HTTP 서비스 끝점을 통해 가상 머신에 대한 메트릭이 노출됩니다. 메트릭을 쿼리할 때 Prometheus는 가상 머신에서 노출하는 메트릭 끝점에서 메트릭을 직접 스크랩하고 볼 수 있도록 이러한 지표를 표시합니다.

사전 요구 사항

  • cluster-admin 권한 또는 monitoring-edit 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • node-exporter 서비스를 구성하여 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.

프로세스

  1. 서비스의 네임스페이스를 지정하여 HTTP 서비스 끝점을 가져옵니다.

    $ oc get service -n <namespace> <node-exporter-service>
    Copy to Clipboard Toggle word wrap
  2. node-exporter 서비스에 사용 가능한 모든 지표를 나열하려면 지표 리소스를 쿼리합니다.

    $ curl http://<172.30.226.162:9100>/metrics | grep -vE "^#|^$"
    Copy to Clipboard Toggle word wrap

    출력 예

    node_arp_entries{device="eth0"} 1
    node_boot_time_seconds 1.643153218e+09
    node_context_switches_total 4.4938158e+07
    node_cooling_device_cur_state{name="0",type="Processor"} 0
    node_cooling_device_max_state{name="0",type="Processor"} 0
    node_cpu_guest_seconds_total{cpu="0",mode="nice"} 0
    node_cpu_guest_seconds_total{cpu="0",mode="user"} 0
    node_cpu_seconds_total{cpu="0",mode="idle"} 1.10586485e+06
    node_cpu_seconds_total{cpu="0",mode="iowait"} 37.61
    node_cpu_seconds_total{cpu="0",mode="irq"} 233.91
    node_cpu_seconds_total{cpu="0",mode="nice"} 551.47
    node_cpu_seconds_total{cpu="0",mode="softirq"} 87.3
    node_cpu_seconds_total{cpu="0",mode="steal"} 86.12
    node_cpu_seconds_total{cpu="0",mode="system"} 464.15
    node_cpu_seconds_total{cpu="0",mode="user"} 1075.2
    node_disk_discard_time_seconds_total{device="vda"} 0
    node_disk_discard_time_seconds_total{device="vdb"} 0
    node_disk_discarded_sectors_total{device="vda"} 0
    node_disk_discarded_sectors_total{device="vdb"} 0
    node_disk_discards_completed_total{device="vda"} 0
    node_disk_discards_completed_total{device="vdb"} 0
    node_disk_discards_merged_total{device="vda"} 0
    node_disk_discards_merged_total{device="vdb"} 0
    node_disk_info{device="vda",major="252",minor="0"} 1
    node_disk_info{device="vdb",major="252",minor="16"} 1
    node_disk_io_now{device="vda"} 0
    node_disk_io_now{device="vdb"} 0
    node_disk_io_time_seconds_total{device="vda"} 174
    node_disk_io_time_seconds_total{device="vdb"} 0.054
    node_disk_io_time_weighted_seconds_total{device="vda"} 259.79200000000003
    node_disk_io_time_weighted_seconds_total{device="vdb"} 0.039
    node_disk_read_bytes_total{device="vda"} 3.71867136e+08
    node_disk_read_bytes_total{device="vdb"} 366592
    node_disk_read_time_seconds_total{device="vda"} 19.128
    node_disk_read_time_seconds_total{device="vdb"} 0.039
    node_disk_reads_completed_total{device="vda"} 5619
    node_disk_reads_completed_total{device="vdb"} 96
    node_disk_reads_merged_total{device="vda"} 5
    node_disk_reads_merged_total{device="vdb"} 0
    node_disk_write_time_seconds_total{device="vda"} 240.66400000000002
    node_disk_write_time_seconds_total{device="vdb"} 0
    node_disk_writes_completed_total{device="vda"} 71584
    node_disk_writes_completed_total{device="vdb"} 0
    node_disk_writes_merged_total{device="vda"} 19761
    node_disk_writes_merged_total{device="vdb"} 0
    node_disk_written_bytes_total{device="vda"} 2.007924224e+09
    node_disk_written_bytes_total{device="vdb"} 0
    Copy to Clipboard Toggle word wrap

12.4.4. 노드 내보내기 서비스에 대한 ServiceMonitor 리소스 생성

Prometheus 클라이언트 라이브러리를 사용하고 /metrics 끝점에서 메트릭을 스크랩하여 node-exporter 서비스에서 노출하는 메트릭에 액세스하고 볼 수 있습니다. ServiceMonitor CRD(사용자 정의 리소스 정의)를 사용하여 노드 내보내기 서비스를 모니터링합니다.

사전 요구 사항

  • cluster-admin 권한 또는 monitoring-edit 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • node-exporter 서비스를 구성하여 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.

프로세스

  1. ServiceMonitor 리소스 구성에 대한 YAML 파일을 생성합니다. 이 예에서 서비스 모니터는 모든 서비스와 레이블 지표 와 일치하고 30초마다 exmet 포트를 쿼리합니다.

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      labels:
        k8s-app: node-exporter-metrics-monitor
      name: node-exporter-metrics-monitor 
    1
    
      namespace: dynamation 
    2
    
    spec:
      endpoints:
      - interval: 30s 
    3
    
        port: exmet 
    4
    
        scheme: http
      selector:
        matchLabels:
          servicetype: metrics
    Copy to Clipboard Toggle word wrap
    1
    ServiceMonitor 의 이름입니다.
    2
    ServiceMonitor 가 생성되는 네임스페이스입니다.
    3
    포트를 쿼리할 간격입니다.
    4
    30초마다 쿼리되는 포트의 이름입니다.
  2. node-exporter 서비스에 대한 ServiceMonitor 구성을 생성합니다.

    $ oc create -f node-exporter-metrics-monitor.yaml
    Copy to Clipboard Toggle word wrap

12.4.4.1. 클러스터 외부에서 노드 내보내기 서비스에 액세스

클러스터 외부에서 node-exporter 서비스에 액세스하여 노출된 지표를 볼 수 있습니다.

사전 요구 사항

  • cluster-admin 권한 또는 monitoring-edit 역할의 사용자로 클러스터에 액세스할 수 있습니다.
  • node-exporter 서비스를 구성하여 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.

프로세스

  1. node-exporter 서비스를 노출합니다.

    $ oc expose service -n <namespace> <node_exporter_service_name>
    Copy to Clipboard Toggle word wrap
  2. 경로에 대한 FQDN(완전화된 도메인 이름)을 가져옵니다.

    $ oc get route -o=custom-columns=NAME:.metadata.name,DNS:.spec.host
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                    DNS
    node-exporter-service   node-exporter-service-dynamation.apps.cluster.example.org
    Copy to Clipboard Toggle word wrap

  3. curl 명령을 사용하여 node-exporter 서비스에 대한 지표를 표시합니다.

    $ curl -s http://node-exporter-service-dynamation.apps.cluster.example.org/metrics
    Copy to Clipboard Toggle word wrap

    출력 예

    go_gc_duration_seconds{quantile="0"} 1.5382e-05
    go_gc_duration_seconds{quantile="0.25"} 3.1163e-05
    go_gc_duration_seconds{quantile="0.5"} 3.8546e-05
    go_gc_duration_seconds{quantile="0.75"} 4.9139e-05
    go_gc_duration_seconds{quantile="1"} 0.000189423
    Copy to Clipboard Toggle word wrap

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat