LabHub

리눅스 네트워크 진단 · HTTP 진단 · 실습

HTTP 진단

LabHub 에서 이어서 보기

목표

HTTP 응답을 상태코드·헤더·타이밍·본문 네 축으로 나눠 읽고, 그것을 헬스체크 스크립트로 묶습니다.

왜 중요한가

"응답이 느리다"는 신고를 받았을 때 필요한 것은 더 많은 대시보드가 아니라 한 요청의 시간을 구간별로 쪼개 보는 것입니다. curl -w 의 타이밍 변수는 이름 해석 / TCP 연결 / TLS / 서버 첫 바이트 / 본문 전송을 각각 알려 줍니다. time_connect 까지 정상인데 time_starttransfer 만 크면 네트워크는 무고하고 애플리케이션이 범인입니다 - 그 자리에서 논쟁이 끝납니다. 그리고 헬스체크에는 반드시 최대 대기 시간을 걸어야 합니다. 없으면 상대가 응답하지 않을 때 스크립트가 영원히 멈추고, 크론이 그것을 5분마다 띄우면 프로세스가 쌓입니다.

단계

/root/www 를 문서 루트로, /root/http 를 작업 디렉터리로 씁니다.

1. /root/www/index.html 을 만들어 labhub-http-ok 를 넣고, python3 -m http.server 8000 --bind 127.0.0.1 --directory /root/www 를 백그라운드로 띄운 뒤 PID 를 /root/http/server_pid.txt 에 적으세요.
2. 없는 경로를 요청했을 때의 상태코드를 /root/http/status404.txt 에 숫자만 적으세요.
3. /index.html응답 헤더만 받아 /root/http/headers.txt 에 저장하세요. 본문이 섞이면 안 됩니다.
4. 요청의 time_namelookup, time_connect, time_total 세 값을 공백으로 구분해 한 줄로 /root/http/timing.txt 에 저장하세요.
5. /root/www/api.json 을 만드세요. namelabhub, tags 는 값이 2개 이상인 배열이어야 합니다. 그리고 그 파일을 서버에서 받아 tags두 번째 값을 /root/http/tag.txt 에 적으세요.
6. /root/www/sub 디렉터리를 만들고 파일을 하나 넣으세요. http://127.0.0.1:8000/sub 를 리다이렉트를 따라가지 않고 요청했을 때와 따라갔을 때의 상태코드를 /root/http/redirect.txt 에 다음 두 줄로 적으세요.

참고

단계 8개

  1. 로컬 HTTP 서버 띄우기
  2. 상태코드만 뽑기
  3. 헤더만 받기
  4. 구간별 소요 시간 재기
  5. JSON 응답에서 값 뽑기
  6. 리다이렉트 따라가기
  7. 미구현 메서드 응답
  8. 헬스체크 스크립트