LabHub

리눅스 기초 · 텍스트 처리 파이프라인 · 실습

로그에서 답 뽑아내기

LabHub 에서 이어서 보기

목표

로그 파일 하나에서 질문을 명령으로 옮기는 훈련을 합니다. /opt/lab/data/app.logIP 날짜 메서드 경로 상태코드 [ERROR] 형식이며 480줄입니다.

왜 중요한가

장애 상황에서 필요한 건 로그 뷰어가 아니라 질문을 파이프라인으로 옮기는 능력입니다. "무엇이 가장 많은가"라는 질문은 거의 항상 sort | uniq -c | sort -rn | head 라는 하나의 관용구로 답할 수 있습니다. uniq -c 가 인접한 중복만 세기 때문에 앞의 sort 가 필수라는 점, 파이프로 이어진 명령들은 각각 별도 프로세스에서 동시에 흘러가기 때문에 거대한 파일도 메모리에 올리지 않고 처리된다는 점 - 이 두 가지가 이 관용구가 빠른 이유입니다.

단계

1. ERROR 가 들어간 줄의 개수를 /root/error_count.txt 에 숫자만 적으세요.
2. 가장 많이 등장한 IP 하나를 /root/top_ip.txt 에 적으세요.
3. 상태코드가 500 인 줄만 그대로 /root/five_hundreds.txt 에 저장하세요.
4. 등장하는 고유 경로(4번째 필드) 목록을 /root/paths.txt 에 한 줄에 하나씩 저장하세요.
5. 상태코드별 개수를 코드 개수 형식으로, 코드 오름차순 3줄로 /root/status_counts.txt 에 저장하세요.
6. 요청 수 상위 3개 경로를 경로 개수 형식으로, 개수 내림차순 3줄로 /root/top3_paths.txt 에 저장하세요.
7. 200 이 아닌 응답의 비율을 소수점 첫째 자리까지, % 기호 없이 /root/error_rate.txt 에 적으세요.
8. /root/report.txt 에 다음 세 줄을 이 순서로 만드세요.

참고

단계 8개

  1. ERROR 줄 세기
  2. 가장 많이 요청한 IP
  3. 500 응답만 뽑기
  4. 고유 경로 목록
  5. 상태코드별 집계
  6. 요청 많은 경로 TOP 3
  7. 오류율 계산
  8. 요약 리포트 만들기