[Infra] 로그 분석 - 로그를 읽는 기술

업데이트:

로그 분석

syslog는 로그의 기본

  • 유닉스 계열에서 로그는 syslog가 기본임.
  • 처음에는 단순히 메일 서버 전용 로거(logger) 프로그램이었음.
  • 개발자들은 이것이 편리하다고 생각하여 다른 애플리케이션 에서도 로그 정보를 출력하엿고 어느새 표준이 됨
  • 이렇게 표준이 된 syslog를 RFC 3164로 체계적으로 정리한 것이 syslog 프로토콜이다.

  • 행 수 세기 : wc -l
  • grep 결과 세기 : grep -c
  • 오류가 있는지 확인 : grep -v

집약해서 갯수 세기 : uniq -c

매시간마다 요청수를 세는 방법은 로그에서 분초를 제외한 일 시 부분을 추출해서 동일한 것을 세면 된다. grep 으로 패턴에 맞는 부분만 추출 하려면 -o 옵션 사용. uniq -c 를 이용하면 센 개수와 일시가 함께 표시됨.

프로세스 치환

  • 프로세스 치환 : 명령의 실행 결과를 파일로 다룰 수 있는 기능.

ex1) file1, file2가 있고 각각 정렬한 결과의 차이를 diff로 조사하고자 할 때, 다음과 같이 정렬한 결과를 다른 파일로 저장한 후 이것을 diff로 확인하면 간단함.

$ sort file1 > file1.sorted
$ sort file2 > file2.sorted
$ diff file1.sorted file2.sorted

프로세스 치환을 이용하면 다음과 같이 한번에 실행 가능

$ diff <(sort file1) <(sort file2)

위와같이 “<” 같은 기법으로 명령의 실행 결과를 파일을 이용해 다른 명령으로 전달 할 수 있는데,

로그로 출력해야할 항목

언제(when) : 일시

누가(who) : 사용자 ID

어디서(where) : 소스 IP 주소

무엇을 이용해서(How) : UserAgent

무엇을 하고(what) : 요청 URL

어떻게 됐는지(what) : 처리결과

이용자의 유입 경로 추적 : Referer

관련된 요청/응답을 엮기 : 세션 ID