

# procstat 플러그 인을 사용하여 프로세스 지표 수집
<a name="CloudWatch-Agent-procstat-process-metrics"></a>

 *procstat* 플러그인을 사용하면 개별 프로세스에서 지표를 수집할 수 있습니다. 이 플러그인은 Linux 서버와 지원되는 Windows Server 버전을 실행하는 서버에서 지원됩니다. 이 섹션에서는 procstat용 CloudWatch 에이전트를 구성하는 방법과 CloudWatch 에이전트가 가져오는 지표를 보는 방법을 설명합니다. procstat가 수집하는 지표도 나열되어 있습니다.

**참고**  
Amazon ECS 환경의 Fargate 시작 유형에는 `procstat` 플러그인이 지원되지 않습니다.

**Topics**
+ [Procstat용 CloudWatch 에이전트 구성](#CloudWatch-Agent-procstat-configuration)
+ [procstat가 수집하는 지표](#CloudWatch-Agent-procstat-process-metrics-collected)
+ [CloudWatch 에이전트가 가져온 프로세스 지표 보기](#CloudWatch-view-procstat-metrics)

## Procstat용 CloudWatch 에이전트 구성
<a name="CloudWatch-Agent-procstat-configuration"></a>

procstat 플러그 인을 사용하려면 CloudWatch 에이전트 구성 파일의 `metrics_collected` 섹션에 `procstat` 섹션을 추가합니다. 모니터링할 프로세스를 지정하는 방법은 세 가지가 있습니다. 이러한 메서드는 하나만 사용할 수 있지만 해당 메서드를 사용해 모니터링할 프로세스를 여러 개 지정할 수 있습니다.
+ `pid_file`: 프로세스를 통해 생성된 프로세스 식별 번호(PID)의 이름으로 프로세스를 선택합니다.
+ `exe`: 정규식 일치 규칙을 사용하여 프로세스 이름이 지정한 문자열과 일치하는 프로세스를 선택합니다. 일치는 “포함”일치입니다. 즉, 일치시킬 용어로 `agent`를 지정하면 `cloudwatchagent`와 같은 이름의 프로세스는 해당 용어와 일치합니다. 자세한 내용은 [구문](https://github.com/google/re2/wiki/Syntax)을 참조하세요.
+ `pattern`: 프로세스를 시작하는 데 사용된 명령줄로 프로세스를 선택합니다. 정규식 일치 규칙을 사용하여 명령줄이 지정한 문자열과 일치하는 프로세스가 모두 선택됩니다. 명령과 함께 사용된 파라미터 및 옵션을 포함하여 전체 명령줄을 확인합니다.

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

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

Linux 서버의 경우 `exe` 또는 `pattern` 섹션에서 지정한 문자열은 정규식으로 평가됩니다. Windows Server를 실행하는 서버에서 이러한 문자열은 WMI 쿼리로 평가됩니다. 예를 들어 `pattern: "%apache%"`가 됩니다. 자세한 내용은 [LIKE 연산자](https://docs.microsoft.com/en-us/windows/desktop/WmiSdk/like-operator)를 참조하세요.

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

다음 단윈의 예제에서 `procstat` 섹션은 에이전트 구성 파일의 `metrics_collected` 섹션에 포함된 유일한 섹션입니다. 실제 구성 파일에서는 `metrics_collected`에 다른 섹션을 포함할 수도 있습니다. 자세한 내용은 [수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집](CloudWatch-Agent-Configuration-File-Details.md) 섹션을 참조하세요.

### pid\$1file을 사용하여 구성
<a name="CloudWatch-Agent-procstat-configuration-pidfile"></a>

다음 예제 `procstat` 섹션에서는 PID 파일 `example1.pid` 및 `example2.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를 사용하여 구성
<a name="CloudWatch-Agent-procstat-configuration-exe"></a>

다음 예제 `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을 사용하여 구성
<a name="CloudWatch-Agent-procstat-configuration-pattern"></a>

다음 예제 `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가 수집하는 지표
<a name="CloudWatch-Agent-procstat-process-metrics-collected"></a>

다음 표에는 `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 |  Nice 게스트에서 프로세스가 실행되는 시간입니다. 이 지표는 수백 초 단위로 측정됩니다. 유형: 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 에이전트가 가져온 프로세스 지표 보기
<a name="CloudWatch-view-procstat-metrics"></a>

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

**CloudWatch 콘솔에서 프로세스 지표를 보려면**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

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

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

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

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

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

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

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

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

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