OBSERVE FIRST

로그만으로 부족하면 OS가 보는 증거를 따라가며 원인을 좁힌다

시스템 콜, `/proc` 상태, 커널 로그, 코어 덤프, CPU 샘플을 같은 문제로 보지 말고 증상에 맞는 첫 도구를 고른다.

증상별 첫 확인 지점

1
파일을 못 찾거나 DB 연결이 멈춘다

`strace -e trace=file`이나 `trace=network`로 실제 경로와 연결 대상, 에러 코드를 본다.

2
프로세스 상태와 자원 사용량이 궁금하다

`/proc/[pid]/status`, `fd`, `maps`, `io`에서 스레드, 열린 파일, 메모리 맵을 확인한다.

3
OOM, 디스크, 드라이버처럼 커널 이벤트가 의심된다

`dmesg --level=err,warn`과 `journalctl -p err`로 커널과 서비스 로그를 맞춰 본다.

4
세그먼테이션 폴트나 CPU 병목을 재현했다

코어 덤프는 `gdb bt`로 콜 스택을 보고, 느린 구간은 `perf record -g`로 샘플링한다.

도구가 말해 주는 증거

출력예시 신호
해석다음 확인 방향
`open(...) = -1 ENOENT`strace 파일 추적
경로 문제설정 파일 위치, 상대 경로, 권한을 확인한다.
`socket:[12345]`, `VmRSS`, `read_bytes`/proc 프로세스 정보
자원 사용 패턴fd 누수, 메모리 증가, 실제 디스크 I/O를 분리한다.
`Out of memory: Kill process`dmesg 커널 메시지
커널이 종료시킨 사건메모리 제한, OOM score, 서비스 재시작 로그를 본다.

읽는 순서: 문제를 재현하고, 첫 도구로 관측한 증거를 로그와 맞춘 다음, 코드 수정이나 커널/서비스 설정 변경으로 이어간다.