LabHub
배우기 러닝패스 코스

Linux基礎

ログから答えを取り出す

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 에 다음 세 줄을 이 순서로 만드세요.
    • total=<전체 줄 수>
    • errors=<200 이 아닌 줄 수>
    • top_path=<가장 많이 요청된 경로>

참고

ERROR 줄 세기

ERROR 가 들어간 줄의 개수를 /root/error_count.txt 에 숫자만 적으세요.

고르는 도구와 세는 도구를 파이프로 이으세요. grep 에는 개수만 세는 옵션도 있습니다.

가장 많이 요청한 IP

가장 많이 등장한 IP 하나를 /root/top_ip.txt 에 적으세요.

첫 번째 필드를 뽑아 sort | uniq -c | sort -rn 순으로 이으세요. uniq -c 는 인접한 중복만 셉니다.

500 응답만 뽑기

상태코드가 500 인 줄만 그대로 /root/five_hundreds.txt 에 저장하세요.

상태코드는 5번째 필드입니다. 문자열로 grep 하면 다른 필드에 든 500 까지 걸릴 수 있습니다.

고유 경로 목록

등장하는 고유 경로(4번째 필드) 목록을 /root/paths.txt 에 한 줄에 하나씩 저장하세요.

경로는 4번째 필드입니다. 중복을 제거하는 옵션이 sort 에 이미 있습니다.

상태코드별 집계

상태코드별 개수를 코드 개수 형식으로, 코드 오름차순 3줄로 /root/status_counts.txt 에 저장하세요.

'코드 개수' 형식으로 코드 오름차순 3줄입니다. awk 의 연관 배열과 END 블록을 쓰거나 sort|uniq -c 를 조합하세요.

요청 많은 경로 TOP 3

요청 수 상위 3개 경로를 경로 개수 형식으로, 개수 내림차순 3줄로 /root/top3_paths.txt 에 저장하세요.

'경로 개수' 형식입니다. uniq -c 의 출력은 '개수 값' 순서라 마지막에 순서를 뒤집어야 합니다.

오류율 계산

200 이 아닌 응답의 비율을 소수점 첫째 자리까지, % 기호 없이 /root/error_rate.txt 에 적으세요.

전체 줄 수와 200 이 아닌 줄 수가 모두 필요합니다. awk 의 END 블록에서 한 번에 계산하면 파일을 두 번 읽지 않아도 됩니다.

요약 리포트 만들기

/root/report.txt 에 다음 세 줄을 이 순서로 만드세요.

앞 단계에서 구한 값들을 합쳐 세 줄로 만드세요. 형식과 순서가 정확해야 합니다.