일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Spring
- Java
- intellijIDEA
- JavaScript
- database
- docker
- nodejs
- nginx
- Git
- react
- MySQL
- useEffect
- mybatis
- log4j2
- tibero
- JPA
- Linux
- Kubernetes
- gradle
- BPMN
- maven
- Windows
- VSCode
- IntelliJ
- LOG4J
- sapfiorielements
- springboot
- NCP
- gson
- dbeaver
- Today
- Total
두 손끝의 창조자
Stern을 사용한 Kubernetes 다중 Pod 모니터링 가이드 본문
Kubernetes 환경에서 여러 Pod의 로그를 동시에 모니터링해야 할 때가 자주 있습니다. 특히 마이크로서비스 아키텍처에서는 단일 애플리케이션이 여러 Pod에 분산되어 있어 전체 시스템을 모니터링하기가 쉽지 않습니다. 이런 상황에서 Stern은 매우 강력한 도구가 될 수 있습니다. Stern은 여러 Pod의 로그를 동시에 모니터링할 수 있게 해주며, 색상 구분을 통해 가독성을 높여줍니다.
Stern 설치 방법
Stern은 다양한 운영 체제에서 쉽게 설치할 수 있습니다.
macOS
brew install stern
Linux
wget https://github.com/stern/stern/releases/download/v1.25.0/stern_1.25.0_linux_amd64.tar.gz
tar -xvf stern_1.25.0_linux_amd64.tar.gz
sudo mv stern /usr/local/bin/
Windows
choco install stern
또는 GitHub에서 바이너리를 직접 다운로드하여 PATH에 추가할 수 있습니다.
Stern 사용 방법
Stern은 기본적으로 정규식을 사용하여 Pod 이름을 매칭합니다. 이를 통해 여러 Pod를 한 번에 모니터링할 수 있습니다.
기본 사용법
stern <pod-name-regex>
예를 들어, 'nginx'라는 이름을 포함한 모든 Pod의 로그를 모니터링하려면:
stern nginx
네임스페이스 지정
특정 네임스페이스의 Pod만 모니터링하려면:
stern <pod-name-regex> --namespace <namespace>
모든 네임스페이스에서 Pod를 모니터링하려면:
stern <pod-name-regex> --all-namespaces
컨테이너 지정
특정 컨테이너의 로그만 모니터링하려면:
stern <pod-name-regex> --container <container-name>
색상 설정
Pod별로 다른 색상을 사용하려면:
stern <pod-name-regex> --color always
고급 옵션
최대 Pod 수 늘리기
기본적으로 Stern은 모든 매칭되는 Pod의 로그를 표시합니다. 하지만 매우 많은 Pod가 있을 경우, 특정 수의 Pod만 모니터링하고 싶을 수 있습니다. 이때 --max-log-requests 옵션을 사용할 수 있습니다:
stern <pod-name-regex> --max-log-requests 10
이 명령은 최대 10개 Pod의 로그만 모니터링합니다.
로그 부하 줄이는 방법
패턴 필터링
특정 패턴을 포함하는 로그만 표시하려면:
stern <pod-name-regex> --include "ERROR|WARN"
특정 패턴을 제외하려면:
stern <pod-name-regex> --exclude "DEBUG|INFO"
시간 조건 설정
특정 시간 이후의 로그만 표시하려면:
stern <pod-name-regex> --since 10m
이 명령은 최근 10분 동안의 로그만 표시합니다. 지원되는 시간 단위는 s(초), m(분), h(시간), d(일) 등이 있습니다.
특정 시점부터의 로그를 보려면 타임스탬프를 사용할 수도 있습니다:
stern <pod-name-regex> --since-time "2023-04-09T10:00:00Z"
기타 유용한 옵션
로그 꼬리(tail) 설정
stern <pod-name-regex> --tail 100
각 Pod의 최근 100줄의 로그만 표시합니다.
출력 형식 지정
기본적으로 Stern은 각 라인 앞에 Pod와 컨테이너 이름을 추가합니다. 출력 형식을 커스터마이즈하려면:
stern <pod-name-regex> --template '{{.PodName}} | {{.Message}}'
실시간 로그 확인
stern <pod-name-regex> --follow
이 옵션은 기본적으로 활성화되어 있으며, 실시간으로 로그를 계속 표시합니다.
결론
Stern은 Kubernetes 환경에서 여러 Pod의 로그를 효율적으로 모니터링할 수 있는 강력한 도구입니다. 패턴 필터링, 시간 조건 설정, 최대 Pod 수 제한 등의 옵션을 통해 로그 부하를 줄이고 필요한 정보만 집중적으로 모니터링할 수 있습니다. 특히 마이크로서비스 아키텍처나 대규모 Kubernetes 클러스터에서 디버깅 및 모니터링을 수행할 때 Stern의 다양한 기능은 큰 도움이 될 것입니다.