stern
stern
Stern이란?
Stern은 Kubernetes 환경에서 여러 개의 Pod 로그를 동시에 모니터링할 수 있도록 도와주는 CLI 툴입니다. 특정 라벨 셀렉터(label selector)나 Pod 이름 패턴을 기반으로 로그를 필터링하고 실시간으로 출력할 수 있어, 애플리케이션 디버깅과 운영 모니터링에 유용합니다.
Stern의 특징
✅ 다중 Pod 로그 출력 • 특정 네임스페이스 또는 라벨 셀렉터를 이용해 여러 Pod의 로그를 한 번에 볼 수 있음
✅ 실시간 로그 스트리밍 • Pod이 삭제되거나 새로운 Pod이 생성되어도 자동으로 감지하여 로그를 계속 출력
✅ 색상 구분 및 포맷팅 • Pod 및 컨테이너별 로그를 색상으로 구분해 가독성이 높음
✅ 정규 표현식(Regex) 지원 • 특정 패턴의 로그만 필터링하여 출력 가능
✅ kubectl과 유사한 사용법 • kubectl logs와 비슷하지만 더 강력한 기능을 제공
Stern 설치 방법
- Homebrew (macOS & Linux)
brew install stern
- Scoop (Windows)
scoop install stern
- 바이너리 다운로드 (GitHub Releases)
Stern의 최신 릴리즈를 GitHub에서 다운로드하여 직접 설치 가능
Stern 사용법
- 특정 Pod의 로그 모니터링
stern
예시:
stern my-app
👉 my-app이라는 이름을 가진 Pod의 로그를 실시간으로 확인
- 라벨 셀렉터를 활용한 로그 조회
stern -l app=my-app
👉 app=my-app 라벨을 가진 모든 Pod의 로그를 확인
- 특정 네임스페이스에서 실행
stern
예시:
stern my-app -n dev
👉 dev 네임스페이스의 my-app Pod 로그 조회
- 컨테이너별 로그 확인
stern
예시:
stern my-app -c nginx
👉 nginx 컨테이너의 로그만 출력
- 로그 필터링 (정규 표현식 사용)
| stern my-app | grep “ERROR” |
👉 “ERROR”가 포함된 로그만 출력
- 로그 타임스탬프 포함 출력
stern my-app –timestamps
👉 로그에 타임스탬프 추가
- JSON 포맷 로그 출력
stern my-app -o json
👉 로그를 JSON 형식으로 출력
Stern vs. kubectl logs 비교
기능 kubectl logs stern 특정 Pod 로그 조회 ✅ ✅ 여러 Pod 로그 동시 조회 ❌ ✅ 새로운 Pod 자동 감지 ❌ ✅ 로그 색상 구분 ❌ ✅ 정규 표현식 필터링 ❌ ✅ JSON 포맷 지원 ✅ ✅
Stern 활용 예시 • 마이크로서비스 환경에서 여러 Pod 로그를 한 번에 모니터링 • 배포 후 특정 에러 메시지 감지 및 디버깅 • 새로운 Pod이 추가되거나 롤링 업데이트될 때 자동으로 로그 모니터링 • CI/CD 파이프라인에서 로그 확인 자동화
결론
Stern은 Kubernetes 환경에서 실시간 로그 모니터링을 손쉽게 할 수 있도록 도와주는 강력한 도구입니다. kubectl logs보다 훨씬 강력한 기능을 제공하며, 여러 Pod의 로그를 동시에 확인할 수 있어 마이크로서비스 운영, 디버깅, 실시간 문제 해결에 적합합니다. 🚀