예제: HTTP 404 코드 수 계산 - Amazon CloudWatch Logs

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

예제: HTTP 404 코드 수 계산

CloudWatch Logs를 사용하여 Apache 서버가 발견되지 않은 페이지에 대한 응답 코드인 HTTP 404 응답을 반환하는 횟수를 모니터링할 수 있습니다. 사이트 방문자들이 원하는 리소스를 찾지 못하는 빈도를 파악하기 위해 모니터링을 원할 수 있습니다. 로그 레코드는 각 로그 이벤트(사이트 방문)에 대해 다음 정보를 포함하도록 구성되었다고 가정합니다.

  • 요청자 IP 주소

  • RFC 1413 ID

  • 사용자 이름

  • Timestamp

  • 요청된 리소스와 프로토콜이 포함된 요청 메서드

  • 요청할 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/에서 CloudWatch 콘솔을 엽니다.

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

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

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

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

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

  7. 지표 세부 정보지표 네임스페이스MyNameSpace를 입력합니다.

  8. 지표 이름ApacheNotFoundErrorCount를 입력합니다.

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

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

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

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로 명명된 지표를 검색할 수 있습니다.