AWS 초보자는 CloudWatch Logs Insights를 사용해 봤습니다.

저는 AWS의 초보자입니다. 최근에 맡은 업무에서 API 출력의 로그를
상세히 분석·조사하고 싶은 장면이 있어 클라우드워치 로그 인사이트를 사용했다.
실제 조사에 사용된 조회 예시 등을 포함하여 비망록으로 종합할 수도 있다.
앞으로 클라우드워치 로그 인사이트를 이용하는 분들에게 조금이나마 도움이 됐으면 좋겠습니다.

CloudWatch Logs Insight란 무엇입니까?


CloudWatch Logs의 로그 데이터에 대한 고유한 구문 사용
조회처럼 데이터를 검색하고 분석할 수 있는 기능.
계량요금제입니다. 스캔한 데이터에 따라 요금을 받습니다.
GB당 0.0076달러의 스캔 데이터

사용법


차리다


AWS 관리 콘솔 > CloudWatch 를 열고 사이드바에서 "Insite"를 엽니다.

기본 작업



1. 검색할 로그 그룹 선택
로그 그룹 선택에서 검색할 로그 그룹을 선택합니다.
여러 로그 그룹을 동시에 선택할 수도 있습니다.
2. 객체를 읽어들이는 동안 설정(모두)
객체를 찾을 기간을 지정합니다.
(1시간 이내, 특정 시간 등)
3. 데이터 추출
텍스트 영역에 질의를 입력하고 질의 실행 을 누르면 질의 결과가 표시됩니다.
자세한 질의의 쓰기 방법과 의미는 질의 구문 섹션에서 설명합니다.
기본적으로 다음 조회를 입력하였습니다
어쨌든 어떤 느낌으로 뽑을 수 있는지 보고 싶으면 그렇게 실행하면 뽑을 수 있어요.
fields @timestamp, @message
| sort @timestamp desc
| limit 20
4. 원하는 대로 결과 내보내기(임의)
결과 내보내기에서 다음 형식의 추출 결과를 내보낼 수 있습니다.
  • 클립보드에 복사(태그)
  • 클립보드로 복사(csv)
  • 다운로드(csv)
  • 질의 구문 정보


    파이프(|)를 연결하여 사용할 수 있는 자체 질의 명령이 있습니다.
    다음은 기본적인 명령과 개인이 사용하는 명령을 설명한다.

    fields


    가져올 필드의 명령을 지정합니다.
    SQL로 말하자면select column1, column2의 인상이다.
    fields @timestamp, @message
    
    기본적으로 다음 필드를 지정할 수 있습니다.@log @logstream @timestamp @messageJSON 형식의 로그라면 JSON의 키를 필드로 직접 지정할 수 있습니다.
    총 객체의 로그에 사용할 수 있는 필드를 알고 싶을 때
    로그 그룹을 지정하고 화면 오른쪽에 있는 측면 메뉴 "필드"를 엽니다
    사용 가능한 필드를 나열합니다.

    filter


    추출 기준을 지정하는 명령입니다.
    like를 사용하여 부분 문자열이 일치하는 것을 찾습니다.
    SQL로 말하자면where column1 like '%error%'의 인상이다.
    filter @message like /error/
    
    in을 사용하여 SQL과 마찬가지로 목록에서 비교할 수 있습니다.
    filter status in[400, 500]
    

    sort


    정렬 순서를 지정하는 명령입니다.
    SQL로 말하자면order by의 인상이다.
    sort @timestamp asc
    
    asc/desc를 지정할 수 있습니다.

    display


    표시할 필드를 지정하는 명령입니다.
    필드와 비슷하지만 디스플레이는 지정한 결과에 표시된 필드만 사용합니다.

    limit


    가져올 기록 수를 지정하는 명령입니다.
    SQL로 말하자면limit의 인상이다.
    limit 20
    

    stats


    통계에 사용되는 명령입니다.avg(,sum(,count(),min(,max() 등을 사용할 수 있습니다.
    여기에 자기가 사용했던 것들을 소개해 주셨어요.
    기타 통계 함수에 관하여 공식 문서에 상세한 해설이 있다.
    명령하다
    컨텐트
    count()
    로그 이벤트의 수를 계산합니다.
    earliest(fieldName: LogField)
    검색을 실행한 결과의 가장 빠른 시간 스탬프에서fieldName 값을 되돌려줍니다.
    latest(fieldName: LogField)
    검색을 실행한 결과 가장 느린 시간 스탬프에서fieldName 값을 되돌려줍니다.

    parse


    로그에서 glob 또는 정규 표현식 사용하기
    임시 필드로 데이터를 추출할 수 있습니다.
    예를 들어 다음과 같이 요청 ID를 괄호로 묶고 로그 내용이 뒤에 있는 로그에
    요청 ID와 로그 내용을 분리하여 처리하고자 하는 경우
    로그 예
    (request-id-1) start.
    (request-id-1) success.
    (request-id-2) start.
    
    PARSE @message "(*) *" as requestID, message
    
    따라서 다음과 같은 데이터를 추출할 수 있다.
    requestID
    message
    request-id-1
    start.
    request-id-1
    success.
    request-id-2
    start.

    사용 예


    개인 조사에 사용된 조회를 예로 들어 소개하다.

    타임 스탬프 순서에 따라 문자열 "error" 를 포함하는 로그 20개를 가져옵니다

    fields @timestamp, @message
    | filter @message like /error/
    | sort @timestamp
    | limit 20
    

    각 status의 개수를 통계하다


    [status] 키에 응답을 출력하는 상태에서 JSON 형식으로 로그를 출력합니다.
    status 필드의 값에 따라 건수를 통계하다.
    JSON 형식 로그의 예
    {
        "requestId": "request-id-1",
        "ip": "XXX.XXX.XX.XX",
        "requestTime": "08/Apr/2020:04:00:59 +0000",
        "httpMethod": "GET",
        "resourcePath": "/api/hoge/",
        "status": "200"
    }
    
    fields @timestamp, @message
    | stats count(*) by status
    

    각 요청 ID의 총 처리에 소요된 시간


    다음 사전 요구 사항의 로그에서 각 요청 ID에 대해 처리 시간을 계산합니다.
  • 로그 측에서 요청한 처리 시간을 출력하지 않았습니다. (출력하면 비교적 쉬울 것입니다.)
  • 요청이 시작되었을 때와 끝날 때 각각 로그를 출력
  • 다음 레코드의 예와 같이 요청 ID와 로그 내용을 출력합니다
  • 로그 예
    (request-id-1) start.
    (request-id-1) success.
    (request-id-2) start.
    
    fields @timestamp, @message
    | PARSE @message "(*) *" as requestID, message
    | filter requestID in ["request-id-1", "request-id-2", "request-id-3"]
    | stats earliest(@timestamp) as startTime, latest(@timestamp) as endTime by requestID
    | display requestID, abs(endTime - startTime)
    
    하는 일은 아래와 같다.
    1. parse에서 @message에서 요청 ID 추출
    2. 모든 요청 ID에 대해 가장 먼저 기록된 이벤트의 시간 스탬프(=startTime), 가장 느린 이벤트의 시간 스탬프(=endTime)를 종합한다.
    3. 요청 ID 및 처리 시간 표시

    총결산


    간단하게 사용하기 시작한 편리한 기능이라고 생각합니다.
    대시보드에 질의 결과를 추가하거나 저장할 수 있습니다.
    나는 앞으로의 조사와 운용에 활용하고 싶다.
    끝까지 읽어주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기