패턴 분석 - Amazon CloudWatch Logs

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

패턴 분석

CloudWatch Logs Insights는 기계 학습 알고리즘을 사용하여 로그를 쿼리할 때 패턴을 찾습니다. 패턴은 로그 필드 간에 반복되는 공유 텍스트 구조입니다. 쿼리 결과를 볼 때 패턴 탭을 선택하여 결과 샘플을 기반으로 CloudWatch 로그가 찾은 패턴을 볼 수 있습니다. 또는 쿼리에 pattern 명령을 추가하여 일치하는 로그 이벤트의 전체 세트에서 패턴을 분석할 수 있습니다.

많은 수의 로그 이벤트를 몇 가지 패턴으로 압축할 수 있기 때문에 패턴은 큰 로그 세트를 분석하는 데 유용합니다.

다음 세 가지 로그 이벤트 샘플을 고려해 보세요.

2023-01-01 19:00:01 [INFO] Calling DynamoDB to store for ResourceID: 12342342k124-12345 2023-01-01 19:00:02 [INFO] Calling DynamoDB to store for ResourceID: 324892398123-1234R 2023-01-01 19:00:03 [INFO] Calling DynamoDB to store for ResourceID: 3ff231242342-12345

이전 샘플에서 세 로그 이벤트는 모두 한 가지 패턴을 따릅니다.

<Date-1> <Time-2> [INFO] Calling DynamoDB to store for resource id <ResourceID-3>

패턴 내의 필드를 토큰이라고 합니다. 요청 ID나 타임스탬프 같이 패턴 내에서 달라지는 필드를 동적 토큰이라고 합니다. 동적 토큰에 대해 발견된 각 값을 토큰 값이라고 합니다.

CloudWatch 로그가 동적 토큰이 나타내는 데이터 유형을 추론할 수 있는 경우 토큰이 로 표시됩니다<string-number>. 는 string 는 토큰이 나타내는 데이터 유형에 대한 설명입니다. 는 number 는 다른 동적 토큰과 비교하여 이 토큰이 나타나는 패턴을 보여줍니다.

CloudWatch Logs는 이름이 포함된 로그 이벤트의 내용을 분석하여 이름의 문자열 부분을 할당합니다.

CloudWatch 로그가 동적 토큰이 나타내는 데이터 유형을 추론할 수 없는 경우 토큰이 <Token-로 표시됩니다.number> 및 number 는 다른 동적 토큰과 비교하여 이 토큰이 나타나는 패턴을 나타냅니다.

동적 토큰의 일반적인 예로는 오류 코드, IP 주소, 타임스탬프 및 요청 등이 있습니다IDs.

토큰 값은 동적 토큰의 특정 값을 나타냅니다. 예를 들어 동적 토큰이 HTTP 오류 코드를 나타내는 경우 토큰 값은 일 수 있습니다501.

패턴 감지는 CloudWatch Logs 이상 탐지기 및 비교 기능에도 사용됩니다. 자세한 내용은 로그 이상 탐지(diff)를 이전 시간 범위와 비교 단원을 참조하세요.

패턴 분석 시작하기

패턴 감지는 모든 CloudWatch Logs Insights 쿼리에서 자동으로 수행됩니다. pattern 명령이 포함되지 않은 쿼리는 결과에 로그 이벤트와 패턴을 모두 가져옵니다.

쿼리에 pattern 명령을 포함하면 일치하는 전체 로그 이벤트 세트에서 패턴 분석이 수행됩니다. 이렇게 하면 더 정확한 패턴 결과를 얻을 수 있지만 pattern 명령을 사용하면 원시 로그 이벤트가 반환되지 않습니다. 쿼리에 pattern이 포함되지 않은 경우 패턴 결과는 반환된 첫 1,000개의 로그 이벤트 또는 쿼리에 사용한 한도 값을 기반으로 합니다. 쿼리에 pattern을 포함하면 패턴 탭에 표시되는 결과는 쿼리와 일치하는 모든 로그 이벤트에서 파생됩니다.

CloudWatch Logs Insights에서 패턴 분석을 시작하려면
  1. 에서 CloudWatch 콘솔을 엽니다https://console.aws.amazon.com/cloudwatch/.

  2. 탐색 창에서 로그, Logs Insights를 선택합니다.

    로그 인사이트 페이지의 쿼리 편집기에는 최신 로그 이벤트 20개를 반환하는 기본 쿼리가 포함되어 있습니다.

  3. 쿼리가 다음과 같이 보이도록 쿼리 상자의 | limit 20 줄을 제거합니다.

    fields @timestamp, @message, @logStream, @log | sort @timestamp desc
  4. 로그 그룹 선택 드롭다운에서 쿼리할 로그 그룹을 하나 이상 선택합니다.

  5. (선택 사항) 시간 간격 선택기를 사용하여 쿼리할 기간을 선택합니다.

    5~30분 간격, 1시간, 3시간, 12시간 간격 또는 사용자 지정 시간 범위 중에서 선택할 수 있습니다.

  6. 쿼리 실행을 선택하여 쿼리를 시작합니다.

    쿼리 실행이 완료되면 로그 탭에 쿼리에서 반환된 로그 이벤트 테이블이 표시됩니다. 테이블 위에는 일치하는 레코드 71,101개 중 10,000개 표시와 비슷하게 쿼리에 일치한 레코드 수에 대한 메시지가 있습니다.

  7. 패턴 탭을 선택합니다.

  8. 이제 쿼리에서 발견된 패턴이 테이블에 표시됩니다. 쿼리에 pattern 명령이 포함되지 않았기 때문에 이 탭에는 로그탭의 테이블에 표시된 10,000개의 로그 이벤트에서 발견된 패턴만 표시됩니다.

    각 패턴마다 다음 정보가 표시됩니다.

    • 패턴<string-number>으로 표시된 각 동적 토큰.

    • 쿼리된 로그 이벤트에 패턴이 나타난 횟수인 이벤트 개수. 패턴을 빈도별로 정렬하려면 이벤트 개수 열 제목을 선택합니다.

    • 이 패턴을 포함하는 쿼리된 로그 이벤트의 백분율인 이벤트 비율.

    • 다음 중 하나인 Severity type(심각도 유형).

      • ERROR 패턴에 Error라는 단어가 포함된 경우.

      • WARN 패턴에 경고라는 단어가 포함되어 있지만 오류 가 포함되어 있지 않은 경우.

      • INFO 패턴에 경고 또는 오류가 포함되어 있지 않은 경우.

      심각도 기준으로 패턴을 정렬하려면 Severity info(심각도 정보) 열 제목을 선택합니다.

  9. 이제 쿼리를 변경합니다. 전체 쿼리가 다음과 같아지도록 쿼리의 | sort @timestamp desc 줄을 | pattern @message로 바꿉니다.

    fields @timestamp, @message, @logStream, @log | pattern @message
  10. 쿼리 실행을 선택합니다.

    쿼리가 완료되면 로그 탭에 결과가 없습니다. 그러나 패턴 탭에는 쿼리된 총 로그 이벤트 수에 따라 더 많은 패턴 수가 나열될 수 있습니다.

  11. 쿼리에 pattern을 포함했는지 여부에 관계없이 쿼리가 반환하는 패턴을 추가로 검사할 수 있습니다. 그러려면 패턴 중 하나의 검사 열에서 아이콘을 선택합니다.

    패턴 검사 창이 나타나고 다음이 표시됩니다.

    • 패턴. 패턴 내에서 토큰을 선택하여 해당 토큰의 값을 분석합니다.

    • 쿼리된 시간 범위에서 패턴의 발생 횟수를 보여주는 히스토그램. 이는 패턴 발생의 갑작스러운 증가 등 흥미로운 추세를 식별하는 데 도움이 될 수 있습니다.

    • 로그 샘플 탭에는 선택한 패턴과 일치하는 몇 가지 로그 이벤트가 표시됩니다.

    • 토큰 값 탭에는 선택한 동적 토큰의 값이 표시됩니다(동적 토큰을 선택한 경우).

      참고

      각 토큰마다 최대 10개의 토큰 값이 캡처됩니다. 토큰 수가 정확하지 않을 수 있습니다. CloudWatch 로그는 확률적 카운터를 사용하여 절대값이 아닌 토큰 수를 생성합니다.

    • 관련 패턴 탭에는 검사 중인 패턴과 거의 동일한 시간에 자주 발생한 다른 패턴이 표시됩니다. 예를 들어 ERROR 메시지의 패턴에 일반적으로 추가 세부 정보와 함께 INFO로 표시된 다른 로그 이벤트가 수반된 경우 해당 패턴이 여기에 표시됩니다.

패턴 명령에 대한 세부 정보

이 섹션에는 pattern 명령 및 명령 사용에 대한 추가 정보가 포함되어 있습니다.

  • 이전 자습서에서는 pattern을 추가할 때 sort 명령을 제거했습니다. sort 명령 뒤에 pattern 명령을 포함하는 쿼리는 유효하지 않기 때문입니다. patternsort 앞에 있어야 유효합니다.

    pattern 구문에 대한 자세한 내용은 패턴 섹션을 참조하세요.

  • 쿼리에서 pattern을 사용하는 경우 @messagepattern 명령에서 선택한 필드 중 하나여야 합니다.

  • pattern 명령 앞에 filter 명령을 포함하여 필터링된 로그 이벤트 집합만 패턴 분석의 입력으로 사용되도록 할 수 있습니다.

  • parse 명령에서 파생된 필드 등 특정 필드의 패턴 결과를 보려면 pattern @fieldname을 사용하세요.

  • stats 명령이 있는 쿼리와 같이 로그가 아닌 출력이 있는 쿼리는 패턴 결과를 반환하지 않습니다.