Logs Insights 쿼리의 핵심 "Big 4"
1. 기본 에러 검색 (Filter & Regex)
가장 많이 쓰이는 방식은 특정 단어나 정규표현식을 활용하는 것입니다.
대소문자 구분 없는 검색:
fields @timestamp, @message | filter @message like /(?i)error|exception|fail/ | sort @timestamp desc | limit 20
특정 상태 코드 필터링 (JSON 로그 기준):
fields @timestamp, @message | filter statusCode >= 500 | sort @timestamp desc
2. 에러 발생 추이 분석
단순 조회가 아니라 "언제 에러가 폭증했는지" 파악할 때 유용합니다.
5분 단위 에러 카운트:
filter @message like /ERROR/ | stats count(*) as errorCount by bin(5m)
3. 로그 패턴 자동 클러스터링 (Pattern Analysis) [강력 추천]
수만 개의 로그를 일일이 읽을 수 없을 때, 유사한 로그끼리 묶어주는 기능입니다.
패턴 추출:
filter @message like /ERROR/ | pattern @message
팁: 이 명령어를 실행하면 비슷한 에러 문구끼리 그룹화하여, 어떤 종류의 에러가 가장 빈번한지 '비율'로 보여줍니다.
고급 트러블슈팅 기법
✨ 1. AI 쿼리 어시스턴트 (Natural Language Query)
이제 복잡한 쿼리 문법을 외울 필요가 없습니다. 콘솔 상단의 AI 입력창에 한국어로 물어보세요.
"최근 1시간 동안 가장 많이 발생한 상위 5개 에러 메시지를 그룹화해서 보여줘" 라고 입력하면 AI가 즉석에서
stats count(*) by @message형태의 쿼리를 생성해 줍니다.
2. 이상 징후 탐지 (Anomaly Detection)
평소와 다른 패턴의 로그가 발생했을 때 이를 감지하는 쿼리입니다.
filter @message like /ERROR/ | anomaly @message
이 쿼리는 과거 데이터를 학습하여 '평소에 안 나던 에러'가 갑자기 튀어나올 때 이를 붉은색으로 하이라이트해 줍니다.
3. 시간 차이 분석 (diff)
"어제는 괜찮았는데 오늘 왜 이러지?" 싶을 때 사용합니다.
filter @message like /ERROR/ | diff(1d) # 24시간 전 데이터와 현재 데이터 비교
Tip
필드 인덱싱(Field Indexing) 활용: 필드 인덱스 정책을 설정하세요. 특정 필드(예:
requestId,statusCode)를 인덱싱해두면 스캔 속도가 최대 10배 빨라지고 비용도 절감됩니다.시간 범위 좁히기: 전체 데이터를 다 뒤지는 대신, 장애 발생 시점 전후 15~30분으로 범위를 좁히는 것만으로도 쿼리 속도가 급상승합니다.
로그 클래스 확인: 보관용 로그(Infrequent Access)인지 실시간 분석용(Standard)인지 확인하세요. 인사이츠 쿼리는 Standard 클래스에서 훨씬 강력한 성능을 발휘합니다.
쿼리를 짰는데 결과가 너무 많다면
| dedup @message명령어를 추가해 보세요. 중복되는 똑같은 에러 메시지를 하나로 합쳐줘서 가독성이 훨씬 좋아집니다. 데이터는 많을수록 '정리'가 생명입니다!
댓글
댓글 0개
이 문서에는 댓글을 달 수 없습니다.