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

업데이트:

로그 분석

참고링크

운영체제 프론트엔드 백엔드 데이터베이스 인프라
리눅스구조 js필터 아파치에러로그 행삭제 아파치스쿱
프로세스 헬로월드 웹서버개념 ES기초 로그분석
네임스페이스 프로젝트생성 아파치설치 MySQL기초 beeline
디렉토리 헤더생성 flask연동 큐브리드 하둡기초
리다이렉션 async-get 장고MsSQL연결 null공백 나이파이
쓰레드 async-post 장고MySQL연결 MySQL설치(win) 백본
라즈베리파이설치 로그인페이지 장고inpectdb MySQL테이블생성 제플린
OSI7계층소개   장고read   SSL인증
OSI1계층   장고insert   커버로스
OSI2계층   장고put   도커개념
OSI3계층   장고del   도커설치
OSI4계층   flask한글요청   도커기초
OSI5,6,7계층       도커이미지
DNS서버       컨테이너네트워크
DHCP       도커API
bashrc       도커컴포즈
bash       도커볼륨
ifconfig       장고이미지
소켓프로그래밍       도커postgre
리눅스유저생성       도커이미지삭제
netstat포트열기       도커Redis
컴파일러       k8s구조
운영체제vs커널       k8s설치
작업스케쥴링       k8s서비스배포
디스크추가       POD네트워크
aws유저추가       퍼시스턴트볼륨
기초명령어       k8s에러
포트번호        

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