procstat 플러그 인을 사용하여 프로세스 지표 수집 - Amazon CloudWatch

procstat 플러그 인을 사용하여 프로세스 지표 수집

procstat 플러그인을 사용하면 개별 프로세스에서 지표를 수집할 수 있습니다. Linux 서버와 지원되는 Windows Server 버전에서 실행하는 서버에서 사용할 수 있습니다.

procstat를 사용하도록 CloudWatch 에이전트 구성

procstat 플러그 인을 사용하려면 CloudWatch 에이전트 구성 파일의 metrics_collected 섹션에 procstat 섹션을 추가합니다. 모니터링할 프로세스를 지정하는 방법은 세 가지가 있습니다. 이러한 메서드는 하나만 사용할 수 있지만 해당 메서드를 사용해 모니터링할 프로세스를 여러 개 지정할 수 있습니다.

  • pid_file: 프로세스를 통해 생성된 프로세스 식별 번호(PID)의 이름으로 프로세스를 선택합니다.

  • exe: 정규식 일치 규칙을 사용하여 프로세스 이름이 지정한 문자열과 일치하는 프로세스를 선택합니다. 일치는 “포함”일치입니다. 즉, 일치시킬 용어로 agent를 지정하면 cloudwatchagent와 같은 이름의 프로세스는 해당 용어와 일치합니다. 자세한 내용은 구문을 참조하세요.

  • pattern: 프로세스를 시작하는 데 사용된 명령줄로 프로세스를 선택합니다. 정규식 일치 규칙을 사용하여 명령줄이 지정한 문자열과 일치하는 프로세스가 모두 선택됩니다. 명령과 함께 사용된 파라미터 및 옵션을 포함하여 전체 명령줄을 확인합니다.

    일치는 “포함”일치입니다. 즉, 일치시킬 용어로 -c를 지정하면 -config와 같은 파라미터가 있는 프로세스는 해당 용어와 일치합니다.

  • drop_original_metrics – 선택 사항입니다. metrics 섹션의 aggregation_dimensions 필드를 사용하여 지표를 집계된 결과로 롤업하는 경우 기본적으로 에이전트는 집계된 지표와 측정기준의 각 값에 대해 구분된 원래 지표를 모두 전송합니다. 원본 지표를 CloudWatch로 전송하지 않으려면 지표 목록과 함께 이 파라미터를 지정할 수 있습니다. 이 파라미터와 함께 지정된 지표에는 CloudWatch에 보고되는 측정기준별 지표가 없습니다. 대신 집계된 지표만 보고됩니다. 이렇게 하면 에이전트가 수집하는 지표의 수가 줄어들어 비용이 절감됩니다.

위 섹션 중 두 개 이상을 포함했더라도 CloudWatch 에이전트는 이러한 방법 중 하나만 사용합니다. 섹션을 두 개 이상 지정한 경우 CloudWatch 에이전트는 pid_file 섹션을 사용합니다(있는 경우). 없는 경우에는 exe 섹션을 사용합니다.

Linux 서버의 경우 exe 또는 pattern 섹션에서 지정한 문자열은 정규식으로 평가됩니다. Windows Server를 실행하는 서버에서 이러한 문자열은 WMI 쿼리로 평가됩니다. 예를 들어 pattern: "%apache%"가 됩니다. 자세한 내용은 LIKE 연산자를 참조하세요.

어떤 방법을 사용하든 간에 지표 수집 빈도(초)를 지정하는 선택적 metrics_collection_interval 파라미터를 포함할 수 있습니다. 이 파라미터를 생략하면 기본값인 60초가 사용됩니다.

다음 단윈의 예제에서 procstat 섹션은 에이전트 구성 파일의 metrics_collected 섹션에 포함된 유일한 섹션입니다. 실제 구성 파일에서는 metrics_collected에 다른 섹션을 포함할 수도 있습니다. 자세한 내용은 수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집 단원을 참조하십시오.

pid_file을 사용하여 구성

다음 예제 procstat 섹션에서는 PID 파일 example1.pidexample2.pid를 생성하는 프로세스를 모니터링합니다. 각 프로세스에서는 여러 지표가 수집됩니다. example2.pid를 생성하는 프로세스에서 수집되는 지표는 10초마다 수집되고, example1.pid 프로세스에서 수집되는 지표는 60초마다 수집됩니다(기본값).

{ "metrics": { "metrics_collected": { "procstat": [ { "pid_file": "/var/run/example1.pid", "measurement": [ "cpu_usage", "memory_rss" ] }, { "pid_file": "/var/run/example2.pid", "measurement": [ "read_bytes", "read_count", "write_bytes" ], "metrics_collection_interval": 10 } ] } } }

exe를 사용하여 구성

다음 예제 procstat 섹션은 문자열 agent 또는 plugin과 이름이 일치하는 모든 프로세스를 모니터링합니다. 각 프로세스에서 동일한 지표가 수집됩니다.

{ "metrics": { "metrics_collected": { "procstat": [ { "exe": "agent", "measurement": [ "cpu_time", "cpu_time_system", "cpu_time_user" ] }, { "exe": "plugin", "measurement": [ "cpu_time", "cpu_time_system", "cpu_time_user" ] } ] } } }

pattern을 사용하여 구성

다음 예제 procstat 섹션은 문자열 config 또는 -c와 명령줄이 일치하는 모든 프로세스를 모니터링합니다. 각 프로세스에서 동일한 지표가 수집됩니다.

{ "metrics": { "metrics_collected": { "procstat": [ { "pattern": "config", "measurement": [ "rlimit_memory_data_hard", "rlimit_memory_data_soft", "rlimit_memory_stack_hard", "rlimit_memory_stack_soft" ] }, { "pattern": "-c", "measurement": [ "rlimit_memory_data_hard", "rlimit_memory_data_soft", "rlimit_memory_stack_hard", "rlimit_memory_stack_soft" ] } ] } } }

procstat가 수집하는 지표

다음 표에는 procstat 플러그인을 사용하여 수집할 수 있는 지표가 나열되어 있습니다.

CloudWatch 에이전트는 다음 지표 이름의 시작 부분에 procstat를 추가합니다. Linux 서버 또는 Windows Server를 실행하는 서버에서 수집되었는지 여부에 따라 구문이 다릅니다. 예를 들어, cpu_time 지표는 Linux에서 수집된 경우 procstat_cpu_time으로 표시되고, Windows Server에서 수집된 경우에는 procstat cpu_time으로 표시됩니다.

지표 이름 제공 위치 설명

cpu_time

Linux

프로세스가 CPU를 사용하는 시간입니다. 이 지표는 수백 초 단위로 측정됩니다.

단위: 수

cpu_time_guest

Linux

프로세스가 게스트 모드에 있는 시간입니다. 이 지표는 수백 초 단위로 측정됩니다.

유형: Float

단위: 없음

cpu_time_guest_nice

Linux

Niced 게스트에서 프로세스가 실행되는 시간입니다. 이 지표는 수백 초 단위로 측정됩니다.

유형: Float

단위: 없음

cpu_time_idle

Linux

프로세스가 유휴 모드에 있는 시간입니다. 이 지표는 수백 초 단위로 측정됩니다.

유형: Float

단위: 없음

cpu_time_iowait

Linux

프로세스가 I/O 작업이 완료될 때까지 대기하는 시간입니다. 이 지표는 수백 초 단위로 측정됩니다.

유형: Float

단위: 없음

cpu_time_irq

Linux

프로세스가 서비스 중단되는 시간입니다. 이 지표는 수백 초 단위로 측정됩니다.

유형: Float

단위: 없음

cpu_time_nice

Linux

프로세스가 양호 모드에 있는 시간입니다. 이 지표는 수백 초 단위로 측정됩니다.

유형: Float

단위: 없음

cpu_time_soft_irq

Linux

프로세스가 소프트웨어 인터럽트를 제공하는 시간입니다. 이 지표는 수백 초 단위로 측정됩니다.

유형: Float

단위: 없음

cpu_time_steal

Linux

가상화된 환경에서 실행할 때 다른 운영 체제에서 실행하는 데 소요되는 시간입니다. 이 지표는 수백 초 단위로 측정됩니다.

유형: Float

단위: 없음

cpu_time_stolen

Linux, Windows Server

프로세스가 도용 시간에 있는 시간입니다. 도용 시간은 가상화 환경에서 다른 운영 체제에서 사용된 시간입니다. 이 지표는 수백 초 단위로 측정됩니다.

유형: Float

단위: 없음

cpu_time_system

Linux, Windows Server, macOS

프로세스가 시스템 모드에 있는 시간입니다. 이 지표는 수백 초 단위로 측정됩니다.

유형: Float

단위: 수

cpu_time_user

Linux, Windows Server, macOS

프로세스가 사용자 모드에 있는 시간입니다. 이 지표는 수백 초 단위로 측정됩니다.

단위: 수

cpu_usage

Linux, Windows Server, macOS

어떠한 용량에서든 프로세스가 활성화되어 있는 시간(백분율)입니다.

단위: 백분율

memory_data

Linux, macOS

프로세스가 데이터에 사용하는 메모리의 양입니다.

단위: 바이트

memory_locked

Linux, macOS

프로세스가 잠근 메모리의 양입니다.

단위: 바이트

memory_rss

Linux, Windows Server, macOS

프로세스에서 사용 중인 실제 메모리의 크기(실제 상주 메모리)입니다.

단위: 바이트

memory_stack

Linux, macOS

프로세스에서 사용 중인 스택 메모리의 양입니다.

단위: 바이트

memory_swap

Linux, macOS

프로세스에서 사용 중인 스왑 메모리의 양입니다.

단위: 바이트

memory_vms

Linux, Windows Server, macOS

프로세스에서 사용 중인 가상 메모리의 양입니다.

단위: 바이트

num_fds

Linux

이 프로세스가 열어둔 파일 설명자의 수입니다.

단위: 없음

num_threads

Linux, Windows, macOS

이 프로세스의 스레드 수입니다.

단위: 없음

pid

Linux, Windows Server, macOS

프로세스 식별자(ID)입니다.

단위: 없음

pid_count

Linux, Windows Server, macOS

프로세스와 관련된 프로세스 ID의 수입니다.

이 지표의 전체 이름은 Linux 서버 및 macOS 컴퓨터에서 procstat_lookup_pid_count이며 Windows Server에서는 procstat_lookup pid_count입니다.

단위: 없음

read_bytes

Linux, Windows Server

프로세스가 디스크에서 읽은 바이트 수입니다.

단위: 바이트

write_bytes

Linux, Windows Server

프로세스가 디스크에 기록한 바이트 수입니다.

단위: 바이트

read_count

Linux, Windows Server

프로세스에서 실행한 디스크 읽기 작업의 수입니다.

단위: 없음

rlimit_realtime_priority_hard

Linux

이 프로세스에 설정할 수 있는 실시간 우선 순위에 대한 엄격한 제한입니다.

단위: 없음

rlimit_realtime_priority_soft

Linux

이 프로세스에 설정할 수 있는 실시간 우선 순위에 대한 가벼운 제한입니다.

단위: 없음

rlimit_signals_pending_hard

Linux

이 프로세스에서 대기열에 넣을 수 있는 최대 신호 수에 대한 엄격한 제한입니다.

단위: 없음

rlimit_signals_pending_soft

Linux

이 프로세스에서 대기열에 넣을 수 있는 최대 신호 수에 대한 가벼운 제한입니다.

단위: 없음

rlimit_nice_priority_hard

Linux

이 프로세스에서 설정할 수 있는 최대 nice 우선 순위에 대한 엄격한 제한입니다.

단위: 없음

rlimit_nice_priority_soft

Linux

이 프로세스에서 설정할 수 있는 최대 nice 우선 순위에 대한 가벼운 제한입니다.

단위: 없음

rlimit_num_fds_hard

Linux

이 프로세스가 열 수 있는 최대 파일 설명자 수에 대한 엄격한 제한입니다.

단위: 없음

rlimit_num_fds_soft

Linux

이 프로세스가 열 수 있는 최대 파일 설명자 수에 대한 가벼운 제한입니다.

단위: 없음

write_count

Linux, Windows Server

프로세스에서 실행한 디스크 쓰기 작업의 수입니다.

단위: 없음

involuntary_context_switches

Linux

프로세스의 컨텍스트가 강제로 전환된 횟수입니다.

단위: 없음

voluntary_context_switches

Linux

프로세스의 컨텍스트가 자의적으로 전환된 횟수입니다.

단위: 없음

realtime_priority

Linux

프로세스에 대한 실시간 우선 순위의 현재 사용량입니다.

단위: 없음

nice_priority

Linux

프로세스에 대한 nice priority의 현재 사용입니다.

단위: 없음

signals_pending

Linux

프로세스에서 처리하도록 대기 중인 신호 수입니다.

단위: 없음

rlimit_cpu_time_hard

Linux

프로세스에 대한 하드 CPU 시간 리소스 제한입니다.

단위: 없음

rlimit_cpu_time_soft

Linux

프로세스에 대한 소프트 CPU 시간 리소스 제한입니다.

단위: 없음

rlimit_file_locks_hard

Linux

프로세스에 대한 하드 파일 잠금 리소스 제한입니다.

단위: 없음

rlimit_file_locks_soft

Linux

프로세스에 대한 소프트 파일 잠금 리소스 제한입니다.

단위: 없음

rlimit_memory_data_hard

Linux

데이터에 사용되는 메모리와 관련해 프로세스에 대한 하드 리소스 제한입니다.

단위: 바이트

rlimit_memory_data_soft

Linux

데이터에 사용되는 메모리와 관련해 프로세스에 대한 소프트 리소스 제한입니다.

단위: 바이트

rlimit_memory_locked_hard

Linux

잠긴 메모리와 관련해 프로세스에 대한 하드 리소스 제한입니다.

단위: 바이트

rlimit_memory_locked_soft

Linux

잠긴 메모리와 관련해 프로세스에 대한 소프트 리소스 제한입니다.

단위: 바이트

rlimit_memory_rss_hard

Linux

물리적 메모리와 관련해 프로세스에 대한 하드 리소스 제한입니다.

단위: 바이트

rlimit_memory_rss_soft

Linux

물리적 메모리와 관련해 프로세스에 대한 소프트 리소스 제한입니다.

단위: 바이트

rlimit_memory_stack_hard

Linux

프로세스 스택에 대한 하드 리소스 제한입니다.

단위: 바이트

rlimit_memory_stack_soft

Linux

프로세스 스택에 대한 소프트 리소스 제한입니다.

단위: 바이트

rlimit_memory_vms_hard

Linux

가상 메모리와 관련해 프로세스에 대한 하드 리소스 제한입니다.

단위: 바이트

rlimit_memory_vms_soft

Linux

가상 메모리와 관련해 프로세스에 대한 소프트 리소스 제한입니다.

단위: 바이트

CloudWatch 에이전트가 가져온 프로세스 지표 보기

프로세스 지표를 CloudWatch로 가져온 후 이러한 지표를 시계열 그래프로 보고, 해당 지표를 감시하여 지표가 지정된 임곗값을 위반하는 경우 이를 알릴 수 있는 경보를 생성할 수 있습니다. 다음 절차에서는 프로세스 지표를 시계열 그래프로 보는 방법을 보여 줍니다. 경보 설정에 대한 자세한 내용은 Amazon CloudWatch 경보 사용 단원을 참조하세요.

CloudWatch 콘솔에서 프로세스 지표를 보려면
  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. 탐색 창에서 지표를 선택합니다.

  3. 에이전트가 수집한 지표의 네임스페이스를 선택합니다. 기본적으로 이 네임스페이스는 CWAgent이지만, CloudWatch 에이전트 구성 파일에서 다른 네임스페이스를 지정했을 수 있습니다.

  4. 지표 측정기준(예: 인스턴스별 지표)을 선택합니다.

  5. 모든 지표 탭에 네임스페이스의 해당 측정기준에 대한 모든 지표가 표시됩니다. 다음을 수행할 수 있습니다.

    1. 측정치를 그래프로 표시하려면 측정치 옆에 있는 확인란을 선택합니다. 모든 지표를 선택하려면 테이블의 머리글 행에 있는 확인란을 선택합니다.

    2. 테이블을 정렬하려면 열 머리글을 사용합니다.

    3. 리소스로 필터링하려면 리소스 ID를 선택한 후 검색에 추가를 선택합니다.

    4. 지표로 필터링하려면 지표 이름을 선택한 후 검색에 추가를 선택합니다.

  6. (선택 사항) 이 그래프를 CloudWatch 대시보드에 추가하려면 [작업(Actions)], [대시보드에 추가(Add to dashboard)]를 선택합니다.