

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 예제: HTTP 404 코드 수 계산
<a name="Counting404Responses"></a>

CloudWatch Logs를 사용하여 Apache 서버가 발견되지 않은 페이지에 대한 응답 코드인 HTTP 404 응답을 반환하는 횟수를 모니터링할 수 있습니다. 사이트 방문자들이 원하는 리소스를 찾지 못하는 빈도를 파악하기 위해 모니터링을 원할 수 있습니다. 로그 레코드는 각 로그 이벤트(사이트 방문)에 대해 다음 정보를 포함하도록 구성되었다고 가정합니다.
+ 요청자 IP 주소
+ RFC 1413 ID
+ 사용자 이름
+ 타임스탬프
+ 요청된 리소스와 프로토콜이 포함된 요청 메서드
+ 요청할 HTTP 응답 코드
+ 요청 시 전송되는 바이트

예를 들어 다음과 같은 형태일 수 있습니다.

```
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 404 2326
```

다음 예제에서 알 수 있듯이, HTTP 404 오류에서 해당 구조의 이벤트와 매칭을 시도하는 규칙을 지정할 수 있습니다.

**CloudWatch 콘솔을 사용하여 지표 필터를 생성하려면**

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

1. 탐색 창에서 **로그 그룹**을 선택합니다.

1. 작업, **지표 필터 생성**을 선택합니다.

1. **필터 패턴**에 **[IP, UserInfo, User, Timestamp, RequestInfo, StatusCode=404, Bytes]**를 입력합니다.

1. (선택 사항) 필터 패턴을 테스트하려면 **테스트 패턴**에 패턴을 테스트하는 데 사용할 로그 이벤트를 하나 이상 입력합니다. 줄 바꿈은 **로그 이벤트 메시지** 상자에서 로그 이벤트를 구분할 때 사용하므로 각 로그 이벤트는 한 줄을 넘지 않아야 합니다.

1. **다음**을 선택하고 **필터 이름**에 **HTTP404Errors**를 입력합니다.

1. **지표 세부 정보**의 **지표 네임스페이스**에 **MyNameSpace**를 입력합니다.

1. **지표 이름**에 **ApacheNotFoundErrorCount**를 입력합니다.

1. **지표 값**이 1인지 확인합니다. 이는 모든 404 오류 이벤트에 대해 개수가 1씩 증가하도록 지정합니다.

1. **기본값**에 0을 입력하고 **다음**을 선택합니다.

1. **지표 필터 생성**을 선택합니다.

**를 사용하여 지표 필터를 생성하려면 AWS CLI**  
명령 프롬프트에서 다음 명령을 실행합니다.

```
aws logs put-metric-filter \
  --log-group-name MyApp/access.log \
  --filter-name HTTP404Errors \
  --filter-pattern '[ip, id, user, timestamp, request, status_code=404, size]' \
  --metric-transformations \
      metricName=ApacheNotFoundErrorCount,metricNamespace=MyNamespace,metricValue=1
```

이 예제에서는 왼쪽/오른쪽 대괄호, 큰따옴표, 문자열 404 같은 리터럴 문자가 사용되었습니다. 패턴은 모니터링하려는 로그 이벤트의 전체 로그 이벤트 메시지와 일치해야 합니다.

**describe-metric-filters** 명령을 사용하여 지표 필터가 생성되었는지 확인할 수 있습니다. 다음과 유사한 출력 화면이 표시되어야 합니다.

```
aws logs describe-metric-filters --log-group-name MyApp/access.log

{
    "metricFilters": [
        {
            "filterName": "HTTP404Errors", 
            "metricTransformations": [
                {
                    "metricValue": "1", 
                    "metricNamespace": "MyNamespace", 
                    "metricName": "ApacheNotFoundErrorCount"
                }
            ], 
            "creationTime": 1399277571078, 
            "filterPattern": "[ip, id, user, timestamp, request, status_code=404, size]"
        }
    ]
}
```

수동으로 몇 가지 이벤트를 게재할 수 있습니다.

```
aws logs put-log-events \
--log-group-name MyApp/access.log --log-stream-name hostname \
--log-events \
timestamp=1394793518000,message="127.0.0.1 - bob [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb.gif HTTP/1.0\" 404 2326" \
timestamp=1394793528000,message="127.0.0.1 - bob [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb2.gif HTTP/1.0\" 200 2326"
```

이러한 샘플 로그 이벤트를 게재하고 나면 그 즉시 CloudWatch 콘솔에서 ApacheNotFoundErrorCount로 명명된 지표를 검색할 수 있습니다.