VM의 프로세스 모니터링

기본적으로 운영 에이전트 및 레거시 Monitoring 에이전트는 Compute Engine 가상 머신(VM)에서 실행되는 프로세스에 대해 정보를 캡처하는 측정항목을 수집하도록 구성됩니다. Monitoring 에이전트를 사용하여 Amazon Elastic Compute Cloud(EC2) VM에서 이러한 측정항목을 수집할 수도 있습니다. 프로세스 측정항목이라고 하는 이 측정항목 집합은 프리픽스 agent.googleapis.com/processes로 식별할 수 있습니다. 이러한 측정항목은 Google Kubernetes Engine(GKE)에서 수집되지 않습니다.

2021년 8월 6일부터는 청구 가능 측정항목에 설명된 대로 이러한 측정항목에 대한 요금이 도입됩니다. 프로세스 측정항목 집합은 청구 가능으로 분류되지만 요금은 청구되지 않았습니다.

이 문서에서는 프로세스 측정항목을 시각화하는 도구, 이러한 측정항목에서 수집되는 데이터 양을 판단하는 방법, 관련 요금을 최소화하는 방법을 설명합니다.

프로세스 측정항목 작업

측정항목 탐색기 또는 커스텀 대시보드를 사용하여 만든 차트로 프로세스 측정항목 데이터를 시각화할 수 있습니다. 자세한 내용은 대시보드 및 차트 사용을 참조하세요. 또한 Cloud Monitoring의 다음 두 가지 사전 정의된 대시보드에 프로세스 측정항목의 데이터가 포함되어 있습니다.

  • Monitoring의 VM 인스턴스 대시보드
  • Compute Engine의 VM 인스턴스 세부정보 대시보드

다음 섹션에서는 이러한 대시보드에 대해 설명합니다.

Monitoring: 집계된 프로세스 측정항목 보기

측정항목 범위에 속하는 집계된 프로세스 측정항목을 보려면 VM 인스턴스 대시보드에서 프로세스 탭으로 이동합니다.

  1. Google Cloud 콘솔에서  대시보드 페이지로 이동합니다.

    대시보드로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.

  2. 목록에서 VM 인스턴스 대시보드를 선택합니다.

  3. 프로세스를 클릭합니다.

다음 스크린샷은 Monitoring 프로세스 페이지의 예시를 보여줍니다.

Monitoring의 **프로세스** 페이지에는 집계된 프로세스 측정항목이 표시됩니다.

프로세스 탭의 차트를 사용하여 측정항목 범위 중 CPU와 메모리를 가장 많이 소비하는 프로세스 및 디스크 사용률이 가장 높은 프로세스를 식별할 수 있습니다.

Compute Engine: 가장 많은 리소스를 소비하는 VM의 성능 측정항목 보기

Google Cloud 프로젝트에서 리소스를 가장 많이 소비하는 5개 VM을 보여주는 성능 차트를 보려면 VM 인스턴스의 관측 가능성 탭으로 이동합니다.

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Compute Engine인 결과를 선택합니다.

  2. 관측 가능성을 클릭합니다.

다음 스크린샷은 Compute Engine 관측 가능성 페이지의 예시를 보여줍니다.

Compute Engine의 **관측 가능성** 페이지에는 지정된 리소스를 소비하는 상위 5개 VM이 표시됩니다.

이러한 측정항목을 사용하여 VM 문제를 진단하는 방법은 VM 성능 문제 해결을 참조하세요.

Compute Engine: VM별 프로세스 측정항목 보기

단일 Compute Engine 가상 머신(VM)에서 실행되는 프로세스 목록 및 리소스를 가장 많이 소비하는 프로세스의 차트를 보려면 VM의 관측 가능성 탭으로 이동합니다.

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Compute Engine인 결과를 선택합니다.

  2. 인스턴스 탭에서 검사할 VM 이름을 클릭합니다.

  3. 관측 가능성을 클릭하여 이 VM의 측정항목을 확인합니다.

  4. 관측 가능성 탭의 탐색창에서 프로세스를 선택합니다.

다음 스크린샷은 Compute Engine 프로세스 페이지의 예시를 보여줍니다.

Compute Engine의 **프로세스** 페이지에는 VM별 프로세스 측정항목이 표시됩니다.

프로세스 측정항목은 최대 24시간 동안 보관되므로 이를 사용하면 과거 상황을 확인하면서 어떤 특정 프로세스에서 리소스 소비에 이상이 있었는지 발견하거나 리소스를 가장 많이 소비하는 프로세스를 식별할 수 있습니다. 예를 들어 다음 차트는 CPU 리소스 소비율이 가장 높은 프로세스를 보여줍니다. 시간 범위 선택기를 사용하여 차트의 시간 범위를 변경할 수 있습니다. 시간 범위 선택기는 최근 1시간과 같은 사전 설정된 값을 제공하며 커스텀 시간 범위를 입력할 수도 있습니다.

프로세스 측정항목을 사용하여 리소스를 가장 많이 소비하는 프로세스를 식별할 수 있습니다.

실행 중인 프로세스 테이블이 Linux top 명령어의 출력과 동일한 리소스 소비 목록을 제공합니다. 기본적으로 이 테이블은 대부분의 최신 데이터의 스냅샷을 보여줍니다. 하지만 차트에서 이전에 종료되는 시간 범위를 선택한 경우 해당 범위의 끝에서 실행 중인 프로세스가 테이블에 표시됩니다.

이러한 측정항목을 사용하여 VM 문제를 진단하는 방법은 VM 성능 문제 해결을 참조하세요.

에이전트가 수집한 측정항목 처리

Linux 에이전트는 Compute Engine VM 및 Amazon Elastic Compute Cloud(EC2) VM(Monitoring 에이전트 사용)에서 실행되는 프로세스로부터 다음 표에 나열된 모든 측정항목을 수집합니다. 운영 에이전트(버전 2.0.0 이상) 및 레거시 Monitoring 에이전트에 따라 수집을 사용 중지할 수 있습니다.

또한 Windows VM에서 실행되는 운영 에이전트(버전 2.0.0 이상)에 대해 프로세스 측정항목 수집을 사용 중지할 수 있습니다.

자세한 내용은 프로세스 측정항목 사용 중지를 참조하세요.

Windows에서 이러한 측정항목의 수집을 사용 중지하려면 운영 에이전트 버전 2.0.0 이상으로 업그레이드하는 것이 좋습니다. 자세한 내용은 운영 에이전트 설치를 참조하세요.

프로세스 측정항목 표

이 표의 '측정항목 유형' 문자열 앞에 agent.googleapis.com/processes/가 포함된 프리픽스를 붙여야 합니다. 표의 항목에서는 이 프리픽스가 생략되었습니다. 라벨을 쿼리할 때 metric.labels. 프리픽스를 사용합니다(예: metric.labels.LABEL="VALUE").

측정항목 유형 시작 단계
표시 이름
종류, 유형, 단위
모니터링 리소스
설명
라벨
count_by_state GA
프로세스
GAUGEDOUBLE1
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
지정된 상태의 프로세스 수입니다. Linux만 해당됩니다. 60초마다 샘플링됩니다.
state: 실행 중, 절전 중, 좀비 등
cpu_time GA
프로세스 CPU
CUMULATIVEINT64us{CPU}
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
지정된 프로세스의 CPU 시간입니다. 60초마다 샘플링됩니다.
process: 프로세스 이름
user_or_syst: 사용자 또는 시스템 프로세스
command: 프로세스 명령어
command_line: 프로세스 명령줄(최대 1,024자)
owner: 프로세스 소유자
pid: 프로세스 ID
disk/read_bytes_count GA
프로세스 디스크 읽기 I/O
CUMULATIVEINT64By
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
프로세스 디스크 읽기 I/O Linux만 해당됩니다. 60초마다 샘플링됩니다.
process: 프로세스 이름
command: 프로세스 명령어
command_line: 프로세스 명령줄(최대 1,024자)
owner: 프로세스 소유자
pid: 프로세스 ID
disk/write_bytes_count GA
프로세스 디스크 쓰기 I/O
CUMULATIVEINT64By
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
디스크 쓰기 I/O를 처리합니다. Linux만 해당됩니다. 60초마다 샘플링됩니다.
process: 프로세스 이름
command: 프로세스 명령어
command_line: 프로세스 명령줄(최대 1,024자)
owner: 프로세스 소유자
pid: 프로세스 ID
fork_count GA
포크 수
CUMULATIVEINT641
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
포크된 총 프로세스 수 Linux만 해당됩니다. 60초마다 샘플링됩니다.
rss_usage GA
프로세스 상주 메모리
GAUGEDOUBLEBy
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
특정 프로세스의 상주 메모리 사용량입니다. Linux만 해당됩니다. 60초마다 샘플링됩니다.
process: 프로세스 이름
command: 프로세스 명령어
command_line: 프로세스 명령줄(최대 1,024자)
owner: 프로세스 소유자
pid: 프로세스 ID
vm_usage GA
프로세스 가상 메모리
GAUGEDOUBLEBy
aws_ec2_instance
baremetalsolution.googleapis.com/Instance
gce_instance
특정 프로세스의 VM 사용량입니다. 60초마다 샘플링됩니다.
process: 프로세스 이름
command: 프로세스 명령어
command_line: 프로세스 명령줄(최대 1,024자)
owner: 프로세스 소유자
pid: 프로세스 ID

2024년 2월 1일 18:05:28(UTC)에 생성된 표입니다.

현재 수집 결정

측정항목 탐색기를 사용하여 프로세스 측정항목에 대해 수집 중인 데이터 양을 확인할 수 있습니다. 다음 절차를 따르세요.

  1. Google Cloud 콘솔에서  측정항목 탐색기 페이지로 이동합니다.

    측정항목 탐색기로 이동

    검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.

  2. 쿼리 빌더 창의 툴바에서 이름이  MQL 또는  PromQL인 버튼을 선택합니다.

  3. 언어 전환 버튼에 MQL이 선택되어 있는지 확인합니다. 언어 전환 버튼은 쿼리 형식을 지정할 수 있는 동일한 툴바에 있습니다.

  4. gce_instanceaws_ec2_instance 리소스의 총 프로세스-측정항목 포인트 수를 확인하려면 다음을 수행합니다.

    1. 다음 쿼리를 입력합니다.

      def tagged_process_metric name = metric 'agent.googleapis.com/processes/'$name
      | add [metric_suffix: $name];
      
      def process_metrics resource_type = fetch $resource_type
      | { @tagged_process_metric 'cpu_time'
        ; @tagged_process_metric 'disk/read_bytes_count'
        ; @tagged_process_metric 'disk/write_bytes_count'
        ; @tagged_process_metric 'rss_usage'
        ; @tagged_process_metric 'vm_usage'
        ; @tagged_process_metric 'count_by_state'
        ; @tagged_process_metric 'fork_count' }
      | within 1d
      | group_by [metric_suffix], 1m, [row_count: row_count()]
      | union;
      
      { @process_metrics 'gce_instance'
      ; @process_metrics 'aws_ec2_instance' }
      | outer_join 0, 0
      | { rename [], [out: val(0)] | add [resource_type: 'gce_instance']
        ; rename [], [out: val(1)] | add [resource_type: 'aws_ec2_instance'] }
      | union
      | group_by drop[metric_suffix], 1d, .sum
      
    2. 쿼리 실행을 클릭합니다. 결과 차트에는 각 리소스 유형의 값이 표시됩니다.

측정항목 비용 예측

Monitoring 가격 책정 예에서 측정항목을 수집하는 비용을 예상하는 방법을 설명합니다. 이 예는 프로세스 측정항목에 적용될 수 있습니다.

  • 모든 프로세스 측정항목은 60초마다 샘플링되며, 모든 측정항목은 가격 책정을 위해 8바이트로 계산되는 데이터 포인트를 작성합니다.

  • 프로세스 측정항목 가격은 가격 책정 예에 사용된 표준 볼륨 비용의 5%로 설정됩니다. 따라서 이러한 예에서 설명하는 시나리오의 모든 측정항목이 프로세스 측정항목이라고 가정하면 각 시나리오에 대한 총 비용의 5%를 프로세스 비용으로 예측할 수 있습니다.

프로세스 측정항목 수집 사용 중지

Linux에서 운영 에이전트(버전 2.0.0 이상) 및 레거시 Monitoring 에이전트에 따라 이러한 측정항목의 수집을 사용 중지할 수 있는 여러 방법이 있습니다.

에이전트는 Compute Engine VM에서만 실행되며 Monitoring 에이전트의 경우 Amazon Elastic Compute Cloud(EC2) VM에서 실행됩니다. 이 절차는 해당 플랫폼에만 적용됩니다.

Windows에서 2.0.0 미만 버전 또는 레거시 Monitoring 에이전트를 실행하는 경우 운영 에이전트의 수집을 사용 중지할 수 없습니다. Windows에서 이러한 측정항목의 수집을 사용 중지하려면 운영 에이전트 버전 2.0.0 이상으로 업그레이드하는 것이 좋습니다. 자세한 내용은 운영 에이전트 설치를 참조하세요.

일반적인 절차는 다음과 같습니다.

  1. VM에 연결합니다.

  2. 기존 구성 파일을 백업으로 복사합니다. 에이전트가 두 파일 모두 로드를 시도하지 않도록 에이전트의 구성 디렉터리 외부에 백업 복사본을 저장합니다. 예를 들어 다음 명령어는 Linux에서 Monitoring 에이전트에 대해 구성 파일을 복사합니다.

    cp /etc/stackdriver/collectd.conf BACKUP_DIR/collectd.conf.bak
    
  3. 다음과 같이 설명된 옵션 중 하나를 사용하여 구성을 변경합니다.

  4. 에이전트를 다시 시작하여 새 구성을 선택합니다.

    • Monitoring 에이전트: sudo service stackdriver-agent restart
    • 운영 에이전트: sudo service google-cloud-ops-agent restart
  5. 이 VM에 대해 프로세스 측정항목이 더 이상 수집되지 않는지 확인합니다.

    1. 측정항목 탐색기를 선택합니다.

    2. MQL을 클릭합니다.

    3. gce_instance 리소스에 대해 VM_NAME을 이 VM의 이름으로 바꿔 다음 쿼리를 입력합니다.

      fetch gce_instance
      | metric 'agent.googleapis.com/processes/cpu_time'
      | filter (metadata.system_labels.name == 'VM_NAME')
      | align rate(1m)
      | every 1m
      

      aws_ec2_instance 리소스의 경우 쿼리에서 gce_instance를 바꿉니다.

    4. 쿼리 실행을 클릭합니다.

Linux 또는 Windows의 운영 에이전트

운영 에이전트의 구성 파일 위치는 운영체제에 따라 달라집니다.

  • Linux: /etc/google-cloud-ops-agent/config.yaml
  • Windows: C:\Program Files\Google\Cloud Operations\Ops Agent\config\config.yaml

운영 에이전트의 모든 프로세스 측정항목 수집을 사용 중지하려면 다음을 config.yaml 파일에 추가합니다.

metrics:
  processors:
    metrics_filter:
      type: exclude_metrics
      metrics_pattern:
      - agent.googleapis.com/processes/*

이렇게 하면 metrics 서비스의 기본 파이프라인에 적용되는 metrics_filter 프로세서의 수집에서 프로세스 측정항목이 제외됩니다.

운영 에이전트의 구성 옵션에 대한 자세한 내용은 운영 에이전트 구성을 참조하세요.

Linux의 Monitoring 에이전트

레거시 Monitoring 에이전트로 프로세스 측정항목 수집을 사용 중지하는 옵션은 다음과 같습니다.

다음 섹션에서는 각 옵션에 대해 설명하고 이 옵션과 관련된 이점과 위험을 설명합니다.

에이전트의 구성 파일 수정

이 옵션을 사용하면 에이전트의 기본 구성 파일인 /etc/stackdriver/collectd.conf를 직접 수정하여 프로세스 측정항목 수집을 사용 설정하는 섹션을 삭제할 수 있습니다.

절차

collectd.conf 파일에 세 가지 삭제 그룹을 만들어야 합니다.

  1. 다음 LoadPlugin 지시어와 플러그인 구성을 삭제합니다.

    LoadPlugin processes
    
    <Plugin "processes">
      ProcessMatch "all" ".*"
      Detail "ps_cputime"
      Detail "ps_disk_octets"
      Detail "ps_rss"
      Detail "ps_vm"
    </Plugin>
    
  2. 다음 PostCacheChain 지시어와 PostCache 체인 구성을 삭제합니다.

    PostCacheChain "PostCache"
    
    <Chain "PostCache">
      <Rule "processes">
        <Match "regex">
          Plugin "^processes$"
          Type "^(ps_cputime|disk_octets|ps_rss|ps_vm)$"
        </Match>
        <Target "jump">
          Chain "MaybeThrottleProcesses"
        </Target>
        Target "stop"
      </Rule>
    
      <Rule "otherwise">
        <Match "throttle_metadata_keys">
          OKToThrottle false
          HighWaterMark 5700000000  # 950M * 6
          LowWaterMark 4800000000  # 800M * 6
        </Match>
        <Target "write">
           Plugin "write_gcm"
        </Target>
      </Rule>
    </Chain>
    
  3. PostCache 체인에서 사용되는 MaybeThrottleProcesses 체인을 삭제합니다.

    <Chain "MaybeThrottleProcesses">
      <Rule "default">
        <Match "throttle_metadata_keys">
          OKToThrottle true
          TrackedMetadata "processes:pid"
          TrackedMetadata "processes:command"
          TrackedMetadata "processes:command_line"
          TrackedMetadata "processes:owner"
        </Match>
        <Target "write">
           Plugin "write_gcm"
        </Target>
      </Rule>
    </Chain>
    
이점 및 위험
  • 이점
    • 측정항목은 수집되지 않으므로 에이전트에서 사용하는 리소스가 줄어듭니다.
    • collectd.conf 파일을 변경한 경우 이러한 변경사항을 쉽게 보존할 수 있습니다.
  • 위험
    • 이 구성 파일을 수정하려면 root 계정을 사용해야 합니다.
    • 파일에 오타가 발생할 위험이 있습니다.

에이전트의 구성 파일 바꾸기

이 옵션을 사용하면 관련 섹션이 삭제된 사전 수정 버전의 에이전트 기본 구성 파일이 대체됩니다.

절차
  1. GitHub 저장소에서 /tmp 디렉터리로 사전 수정 collectd-no-process-metrics.conf 파일을 다운로드한 후 다음을 수행합니다.

    cd /tmp && curl -sSO https://raw.githubusercontent.com/Stackdriver/agent-packaging/master/collectd-no-process-metrics.conf
    
  2. 기존 collectd.conf 파일을 사전 수정 파일로 바꿉니다.

    cp /tmp/collectd-no-process-metrics.conf /etc/stackdriver/collectd.conf
    
이점 및 위험
  • 이점
    • 측정항목은 수집되지 않으므로 에이전트에서 사용하는 리소스가 줄어듭니다.
    • 파일을 root로 직접 수정할 필요는 없습니다.
    • 구성 관리 도구를 사용하면 파일을 쉽게 바꿀 수 있습니다.
  • 위험
    • collectd.conf 파일을 변경한 경우 이러한 변경 사항을 대체 파일에 병합해야 합니다.

문제 해결

이 문서에서 설명하는 절차는 에이전트의 구성을 변경하므로 다음과 같은 문제가 발생할 가능성이 높습니다.

  • 구성 파일을 수정할 수 있는 권한이 없습니다. 구성 파일은 root 계정에서 수정해야 합니다.
  • 구성 파일을 직접 수정하는 경우 구성 파일에 입력 오류가 발생합니다.

다른 문제 해결에 대한 자세한 내용은 Monitoring 에이전트 문제 해결을 참조하세요.

Windows의 Monitoring 에이전트

Windows VM에서 실행되는 레거시 Monitoring 에이전트의 프로세스 측정항목 수집을 사용 중지할 수 없습니다. 이 에이전트는 구성 가능하지 않습니다. Windows에서 이러한 측정항목의 수집을 사용 중지하려면 운영 에이전트 버전 2.0.0 이상으로 업그레이드하는 것이 좋습니다. 자세한 내용은 운영 에이전트 설치를 참조하세요.

운영 에이전트를 실행하는 경우 Linux 또는 Windows의 운영 에이전트를 참조하세요.