단위 3 / 11

로그 분석 및 근본 원인 분석: 노이즈에서 신호 찾기

이득:

  • AI를 사용하여 로그를 요약, 그룹화 및 타임라인하여 소음 속의 신호를 빠르게 찾습니다.
  • 상관관계와 인과관계를 분리하고 인공지능의 근본 원인 제안을 검증이 필요한 가설로 처리하는 능력
  • 인공지능을 활용한 '5 Why' 방식을 운영하고, 각 단계를 실제 증거로 뒷받침하여 실제 근본 원인에 접근하는 능력

로그 분석 및 근본 원인 분석: AI를 통해 소음 속 신호 찾기

시스템이 충돌하면 가장 먼저 살펴보는 곳은 로그입니다. 로그는 시스템이나 애플리케이션의 "내가 한 일, 발생한 일, 고장난 일"에 대한 타임 스탬프 기록을 유지하는 텍스트 스트림입니다. 그러나 현대적인 인프라는 시간당 수백만 줄의 로그를 생성합니다. 그것은 정보의 바다가 아니라 종종 소음의 바다입니다. 로그 분석은 이러한 노이즈에서 중요한 신호(오류, 이상, 패턴)를 찾아내는 기술입니다. 사건이 발생한 후 "실제 원인은 무엇이었는가"라는 질문에 대답하는 과정을 근본 원인 분석(RCA - Root Cause Analysis)이라고 합니다. 여기에서 AI는 초당 수천 줄을 요약하고, 패턴을 추출하고, 타임라인을 설정하고, 가능한 원인을 나열하는 데 매우 강력합니다. 하지만 주의할 점은 AI가 가능한 원인을 생성한다는 것입니다. 당신은 시스템에서 어느 것이 진짜인지 확인하고 결정을 내리는 사람입니다.

본 단원에서는 AI로 로그를 자신있게 요약하는 방법, 이벤트의 타임라인을 설정하는 방법, 상관관계(함께 변화)와 인과관계(하나가 다른 하나를 유발함)를 구별하는 방법, AI를 사용하여 "5 Whys"와 같은 RCA 방법을 실행하는 방법을 배우게 됩니다.

상관관계가 인과관계가 아닌 이유는 무엇입니까?

이것이 이 유닛의 가장 중요한 개념이다. 두 가지 사건이 동시에 발생한다고 해서 하나가 다른 사건의 원인이 되는 것은 아닙니다. 서버의 CPU와 네트워크 트래픽이 동시에 증가할 수 있습니다. 그러나 하나는 다른 것의 결과가 아니며 둘 다 세 번째 이벤트(예: 일괄 작업 시작)의 결과일 수 있습니다. AI는 지표가 함께 변화하는 것을 볼 때 “아마도 X가 Y를 유발했다”는 가설을 세웁니다. 이는 결론이 아니라 출발점이다. 인과관계를 확인하려면 변수를 분리하거나(테스트 환경에서 X를 트리거하고 Y가 발생하는지 확인) 메커니즘을 증명해야 합니다(X가 Y를 생성하는 기술적 수단 표시).

주의: AI의 "아마도 이것이 원인일 것입니다"라는 문장을 발견이 아닌 가설로 받아들입니다. RCA에서는 잘못된 근본 원인으로 인해 잘못된 수정 및 이벤트 재발이 발생합니다. 원인이 아닌 첫 번째 용의자를 찾았습니다. 작업은 거기에서 시작됩니다.

단계별: AI를 이용한 로그 분석

  1. 범위를 좁혀보세요. 전체 로그가 아닌 이벤트 창을 제공합니다. "이벤트는 14:05에 시작되었으며 중요 기간은 14:00–14:20"입니다. AI에게 해당 시간대와 서비스를 알려준다.
  2. 마스크. 로그에는 내부 IP, 호스트 이름, 사용자 및 토큰이 포함됩니다. 해당 항목(10.x.x.x, 호스트 A, user1, 편집됨)을 마스크한 다음 내보냅니다.
  3. 요약 및 그룹화를 요청합니다. "이 로그를 심각도별로 그룹화하고, 반복되는 오류 수를 계산하고, 첫 번째 오류의 타임스탬프를 찾습니다." 원시 로그가 아닌 구조를 요청하세요.
  4. 타임라인을 설정하세요. "이러한 사건을 시간 순서대로 배열하고 그 뒤에 무엇이 오는지 보여주세요." 첫 번째 도미노를 찾는 것이 근본 원인을 찾는 길입니다.
  5. 증거가 아닌 가설을 요구하세요. “가능한 근본 원인을 확률 순으로 나열하고 각각에 대해 시스템에서 실행할 확인 명령을 보내주세요.” 결과가 아닌 진단을 요청하십시오.
  6. 시스템에서 확인하세요. 읽기 전용 진단 명령(log grep, 상태 쿼리, 메트릭)을 사용하여 각 가설을 테스트합니다. 확인된 근본 원인이 하나만 있을 때까지 제거합니다.

5 왜 방법인가

RCA의 고전적이고 강력한 도구는 "5가지 이유"입니다. 하나의 증상에서 시작하여 "왜?"라고 묻는 것입니다. 다섯 번. 질문함으로써 표면적인 증상 아래에 있는 근본 원인을 찾을 수 있습니다. 예: "사이트가 충돌했습니다. 왜? 메모리 부족으로 애플리케이션이 종료되었습니다. 왜? 쿼리가 모든 메모리를 소비했습니다. 왜? 쿼리가 인덱스를 사용하지 않았습니다. 왜? 인덱스가 마지막 릴리스에서 삭제되었습니다. 이유는 변경 검토에서 발견되지 않았습니다." 근본 원인은 표면적인 "사이트 충돌"이 아니라 "약한 변경 검토 프로세스"입니다. AI는 이 체인을 구축하는 데 좋은 파트너가 될 것입니다. 하지만 실제 증거로 각 "이유" 단계를 뒷받침해야 합니다. 그렇지 않으면 AI가 그럴듯하지만 잘못된 체인을 제시할 수도 있습니다.

세 개의 미니 케이스

사례 1 - 40,000줄, 3분. 관리자는 밤새 중단된 동안 40,000줄의 애플리케이션 로그를 수동으로 스캔하기 시작했습니다. 마스킹된 로그 중 해당 20분 분량의 부분을 AI에게 주고 요약과 그룹화를 요청했다. AI는 시간 초과 버그가 늘어난 직후인 02:14에 첫 번째 OutOfMemory 버그를 표시했습니다. 엔지니어는 3분 만에 시간표를 받았습니다. 자체 미터법 패널에서 원래 진단을 확인했습니다.

사례 2 - 잘못된 근본 원인에서 돌아옴. 한 팀은 AI의 첫 번째 가설("로그가 디스크를 채웠다")이 정확하다고 생각하고 로그를 삭제했습니다. 그러나 사건은 다음 날에도 반복됐다. 두 번째 라운드에서는 규율을 바탕으로 "5가지 이유"를 구현했습니다. 실제 이유는 애플리케이션 오류로 인해 초당 수백 개의 코어 덤프가 작성되었기 때문입니다. 첫 번째 가설은 상관관계였습니다. 진짜 이유는 따로 있었다. 검증 없이 수락하면 하루만 유예될 뿐입니다.

사례 3 - 타임라인이 범인을 찾았습니다. 간헐적으로 네트워크가 중단되는 동안 수십 개의 장치에 대한 로그가 있었습니다. 엔지니어는 마스킹된 로그를 AI에 전달하고 통합된 타임라인을 생성하도록 했습니다. 차트에서는 각 중단이 중복 스위치 상태 확인 메시지가 표시된 후 정확히 30초 후에 시작되었음을 보여줍니다. 이 상관관계는 강력한 단서였습니다. 팀에서는 기기의 키 펌웨어 오류를 확인하고 교체했습니다.

복사 가능한 템플릿 4개

1) 로그 요약 및 그룹화:

아래는 14시부터 14시 20분까지 [서비스]에 대한 마스킹된 로그입니다. (1) 심각도(ERROR/WARN/INFO)별로 줄을 그룹화하고 계산합니다. (2) 반복되는 상위 5개 오류 패턴을 나열합니다. (3) 첫 번째 오류의 타임스탬프를 찾습니다. 원시 로그를 다시 작성하지 말고 구조화된 요약만 제공하세요. 구성선 추가.로그: [마스크된 로그]

2) 타임라인 설정:

다음과 같은 마스킹된 이벤트 기록을 단일 타임라인(타임스탬프 + 소스 + 이벤트)으로 정리했습니다. 무엇이 다음에 오는지 보여주고 첫 번째 트리거인 것으로 보이는 이벤트를 표시합니다. 이는 가설이므로 인과관계를 검증해야 합니다. 녹음: [마스킹된 녹음]

3) RCA 파트너의 5가지 이유:

귀하의 역할: RCA 진행자. 증상: [증상]. "5가지 이유"를 저와 함께 해보세요: "왜?" 각 단계에서. 물어보세요. 제가 가지고 있는 증거로 대답하겠습니다. 다음 질문을 하세요. 증거가 약하면 경고하고 어떤 데이터를 수집해야 하는지 알려주세요. 증거 없이 근본 원인을 선언하지 마세요.

4) 가설 + 검증 명령:

이 증상[증상]의 가능한 근본 원인을 확률 순으로 나열합니다. 각각의 이유에 대해: (a) 무엇을 의심하십니까? (b) 내 시스템에서 실행할 수 있는 읽기 전용 확인 명령을 제공하십시오(삭제/변경 없음). 어떤 결과가 가설을 확인하거나 반증하는지 설명합니다.

약한 프롬프트 / 강한 프롬프트

약한 프롬프트:

이 로그에 어떤 문제가 있나요? [10,000줄의 원시 로그]

이 프롬프트는 민감한 데이터를 마스크 없이 유출하고 AI에 맥락을 제공하지 않습니다. AI는 무작위 라인을 우연히 발견하고 피상적이거나 심지어 꾸며낸 이유를 제시할 수 있습니다.

강력한 프롬프트:

귀하의 역할: 수석 SRE. 이벤트: 결제 서비스에서 02:10~02:25 사이에 50% 오류가 발생했습니다. 아래는 해당 창의 마스크된 로그입니다. (1) 심각도별로 그룹화된 요약, (2) 첫 번째 오류의 타임스탬프, (3) 확률 순으로 가능한 근본 원인, 각각에 대한 읽기 전용 확인 명령을 알려주세요. 인과관계 주장을 가설로 표시합니다. 로그: [마스킹된 로그]

단계

목적

AI의 역할

남자의 역할

요약/그룹화

소음을 줄이다

수천 개의 행 구성

범위 및 마스크 결정

타임라인

첫 번째 도미노 찾기

이벤트 정렬

스탬프 확인

가설 생성

용의자를 분류하다

가능성을 나열하다

상황별 필터링

확인

진짜 이유를 찾아라

진단 명령 제안

명령을 실행하고 주석을 달아보세요.

결정

수정 선택

제안 옵션

결정하고 확인하세요

일반적인 실수

  • 인과관계를 혼동하는 상관관계. 함께 변경되는 두 측정항목을 "하나가 다른 하나의 원인"으로 받아들이면 잘못된 수정이 발생합니다.
  • 마스크 없이 원시 로그를 붙여넣습니다. IP, 토큰, 사용자가 포함된 로그를 공개된 도구에 제공하는 것은 보안 위반입니다.
  • 첫 번째 가설을 근본 원인으로 선언합니다. AI의 첫 번째 제안을 확인하지 않고 수락하는 것은 이벤트 반복에 대한 초대입니다.
  • 전체 로그를 내보내는 중입니다. 맥락이 없는 거대한 로그는 AI를 임의의 라인에 연결합니다. 이벤트 창으로 축소합니다.
  • 증거 없는 5가지 이유. 각 "이유" 단계를 실제 데이터로 백업하지 않으면 그럴듯하지만 조작된 체인으로 끝나게 됩니다.
팁: RCA를 종료하기 전에 "이 근본 원인이 실제로 해결되면 다시 발생하지 않을까요?"라고 물어보세요. 질문을 해보세요. 대답이 "아마도"라면 아직 근본 원인을 파악하지 못한 것입니다. 또 다른 "이유"를 물어보세요.

요약하면

로그 분석은 잡음의 바다에서 신호를 찾는 것입니다. AI는 이 바다를 몇 초 만에 요약하고 구성하며 타임라인을 설정하고 가설을 생성합니다. 하지만 상관관계는 인과관계가 아닙니다. AI가 제시한 원인은 초기 의심이지 확인될 때까지 발견된 것이 아닙니다. 로그를 이벤트 창으로 축소하고 마스크한 후 구조를 요청하고 "5가지 이유"를 자세히 조사한 후 읽기 전용 명령을 사용하여 시스템의 각 가설을 테스트합니다. 근본 원인을 찾고 해결 방법을 확인하는 사람은 바로 당신입니다. AI는 당신의 동반자입니다.

응용과제

과거 이벤트(또는 테스트 이벤트)의 로그를 가져와 이벤트 창으로 축소하고 민감한 영역을 마스킹합니다. 위의 '로그 요약' 및 '타임라인' 템플릿을 사용하여 AI에 요약 및 일정을 요청하세요. 그런 다음 "5가지 이유 RCA 파트너" 템플릿을 사용하여 증상에서 근본 원인으로 이동합니다. 각 단계에 대한 자신만의 증거를 작성하세요. 마지막으로 AI의 초기 가설을 검증 명령으로 테스트하고, 확인 여부를 기록합니다. 그 과정을 6가지 항목으로 요약해보세요.

체크리스트

  • [ ] 로그를 이벤트 창으로 축소하고 민감한 영역을 가렸습니까?
  • [ ] 원시 로그가 아닌 구조화된 요약과 타임라인을 AI에 요청했나요?
  • [ ] AI의 인과관계 주장을 가설로 표시했나요?
  • [ ] 읽기 전용 검증 명령을 사용하여 시스템에서 각 가설을 테스트했습니까?
  • [ ] "5가지 이유"의 각 단계를 실제 증거로 뒷받침했습니까?
  • [ ] 근본 원인이 실제로 사건을 방해할 것인지 질문하고 결정을 내렸습니까?