관측성
관측성 (Observability)
SGLang 서버가 노출하는 프로덕션 메트릭, 로깅, 요청 덤프·재생, 크래시 덤프·재생 기능을 설명합니다. 서버를 운영할 때 상태를 추적하고 문제를 진단하는 방법을 다뤄요.
출처: 문서
본문
프로덕션 메트릭 (Production Metrics)
SGLang은 Prometheus를 통해 다음 메트릭을 노출합니다. 서버를 시작할 때 --enable-metrics를 추가하면 활성화할 수 있어요. 조회는 다음과 같이 합니다:
curl http://localhost:30000/metrics
자세한 내용은 Production Metrics와 Production Request Tracing을 참고하세요.
로깅 (Logging)
기본적으로 SGLang은 요청 내용을 로그로 남기지 않습니다. --log-requests를 사용하면 요청을 기록할 수 있어요. 상세 정도는 --log-request-level로 조절합니다. 자세한 내용은 Logging을 참고하세요.
런타임 중에도 상세 정도를 바꿀 수 있습니다:
python3 -m sglang.srt.managers.configure_logging --url http://localhost:30000 --log-level=debug
요청 덤프와 재생 (Request Dump and Replay)
모든 요청을 덤프해 두었다가 나중에 벤치마킹이나 다른 목적으로 재생할 수 있습니다.
덤프를 시작하려면 다음 명령으로 서버에 요청을 보내세요:
python3 -m sglang.srt.managers.configure_logging --url http://localhost:30000 --dump-requests-folder /tmp/sglang_request_dump --dump-requests-threshold 100
서버는 100개 요청마다 요청들을 pickle 파일로 덤프합니다.
요청 덤프를 재생하려면 scripts/playground/replay_request_dump.py를 사용하세요.
크래시 덤프와 재생 (Crash Dump and Replay)
때로는 서버가 크래시할 수 있고, 크래시 원인을 디버깅하고 싶을 때가 있어요. SGLang은 최근 요청 데이터를 재생용으로 보존하고, 저수준 디버깅을 위해 CUDA 디바이스 코어덤프(coredump)를 수집할 수 있습니다.
크래시 진단 폴더는 --crash-dump-folder /tmp/crash_dump로 설정하세요.
SGLang이 크래시를 처리할 때, 크래시 덤프 버퍼가 유지한 완료된 요청과 처리 중(in-flight) 요청을 /tmp/crash_dump/<hostname>/crash_dump_<timestamp>.pkl에 기록합니다. 파일에는 서버 인자와 실행 명령도 포함돼요. scripts/playground/replay_request_dump.py로 재생할 수 있습니다.
NVIDIA CUDA에서는 이 옵션이 CUDA 초기화 전에 기본 환경 변수도 설정합니다. 이 기본값은 CUDA 예외에서 디바이스 코어덤프를 활성화하고, SGLang이 크래시를 처리할 때 라이브 스케줄러 프로세스의 디바이스 코어덤프를 트리거하게 합니다. CUDA 디바이스 코어덤프는 /tmp/crash_dump/<hostname>/core.cuda.<timestamp>.<pid>에 기록됩니다. 명시적으로 구성한 CUDA 코어덤프 환경 변수(커스텀 CUDA_COREDUMP_FILE 경로 포함)가 우선합니다. 이 옵션은 OS 프로세스 코어 덤프를 구성하지는 않습니다.