
이번에는 홈랩의 모니터링 서버를 구축해보려고 합니다. 고도화 해볼 요소가 많은 부분인데, 우선 간단하게
Node-Exporter/kube-state-metrics + Prometheus + Grafana를 사용하겠습니다.
우선 공통적으로 모니터링 서버를 클러스터와 격리시키면 좋겠다고 생각했습니다. 외부 클라우드 서비스에 모니터링 서버를 띄우는게 괜찮은지는 모르겠다만,,
‘클러스터와 모니터링 서버의 격리’에 초점을 두기로 했습니다.

장점단점
장점Hole Punching단점Metric Gateway 로도 사용하게 됨.(트래픽 집중 현상이 발생하지 않을까..? 하는 생각이 듭니다.)클러스터 아키텍처상 Bastion 방식을 채택하고 있으므로 이를 유지하고자
2안의 방식으로 구축을 진행하겠습니다.
Node Exporter & Kube-state-metrics 가 각각 하드웨어 지표와 쿠버네티스 상태 정보를 생성Prometheus 가 Tailscale을 통해 라즈베리파이의 데이터를 Scraping 하여 저장하고, Grafana 가 이를 시각화
ACCEPT 하도록 설정kube-state-metrics) 전송 시 패킷 유실을 방지하기 위해 Tailscale 인터페이스의 MTU를 1280으로 조정Node Exporterkube-state-metricsDocker Compose 구성Prometheus 네트워크 모드 (network_mode: host)prometheus.yml 설정cluster: ‘raspberry-pi-cluster’ 라벨을 강제로 부여⚠️ 문제 발생
- 현재 모니터링 서버는 OCI(Oracle Cloud Architecture) 프리티어 계정으로 받은 인스턴스에 띄워져 있습니다.
- Node-Exporter가 수집하는
매트릭 + Refresh 1m는 문제가 없는데,kube-state-metrics + Refresh 1m조합은 인스턴스가 터지는 상황이 계속 발생했습니다.- 너무 많은 양의 매트릭 + 전송량 + Refresh 주기 등의 문제로 OOM이 발생하여 인스턴스가 다운되는 것 같음.
→ 우선, 모니터링 대시보드 구축이 첫 목표였기에 Node-Exporter 의 매트릭을 사용하여 모니터링 대시보드를 구축하겠습니다.
→ Relabeling 기능 사용, 인스턴스 사양 업그레이드, gRPC 도입 등으로 추후 해결해보겠습니다.

Prometheus 는 정상적으로 연결이 되어 있는 상태이므로,,, 추후 모니터링 고도화 작업을 진행하며 kube-state-metrics 또한 살려보겠습니다..!
📌 모니터링 방법론 (USE, RED, Fore golden signal)
- 이번 포스팅에서 자세히 다룰 것은 아니지만, 다양한 방법론이 있기에 이들을 학습해보고 적절히 도입을 해보면 좋을 것 같습니다.
USE Method - 인프라 시스템 중심 / Node-Exporter
하드웨어 자원의 상태를 확인하기 위한 방법론
Utilization (사용률)
- 자원이 얼마나 사용되었는가?
- ex: node_cpu_seconds_total
Saturation (포화도)
- 자원이 얼마나 줄을 서서 기다리고 있는가?
- ex: node_load1
Errors (에러)
- 하드웨어/드라이버 레벨의 에러 발생 횟수
- ex: node_net_errs_total
RED Method - 서비스 중심 / App 메트릭, kube-state-metrics
사용자가 느끼는 서비스의 품질을 측정하기 위한 방법론
Rate (TPS 등)
- 초당 요청 수
- ex: http_request_total
Errors (에러)
- 실패한 요청 수
- ex: HTTP 500 에러 비율
Durations (응답 시간)
- 요청을 처리하는 데 걸린 시간
- ex: http_request_duration_seconds_bucket
Four golden signal / 구글 SRE 팀의 핵심 지표
구글에서 정의한 가장 유의미한 4가지 지표. RED 메서드의 확장판..?
Latency (지연 시간)
- 서비스 응답에 걸리는 시간
Traffic (트래픽)
- 서비스에 대한 수요
Errors (에러)
- 명시적에러(500), 암시적 에러(성공했지만 응답 내용이 잘못됨) 등
Saturation (포화도)
- 서비스가 얼마나 꽉 찼는지.
- CPU 뿐만 아니라 큐의 길이나 메모리 잔량 포함
USE - 인프라(Hardware)
RED - 서비스(Software)
Golden Signals - 사용자 경험(SRE)
모니터링 시스템 고도화와 로깅 시스템 고도화에 재밌는 작업들이 많을 것으로 예상됩니다. 현재는 Node-Exporter + Prometheus + Granfana 조합만을 사용하고 있지만, 고도화 과정에서
등을 해보면 좋을 것 같습니다. (gRPC로 로그나 매트릭을 보내게 된다면 통신 부담이 조금은 덜 하지 않을까 싶습니다..)
그리고 매번 모니터링 시스템을 ‘구축’ 만 해보았는데, 이번 기회에 다양한 방법론도 도입해보고 ‘어떻게 유의미한 데이터를 만들어낼 수 있을지’ 에 대해서도 고민해보면 좋을 것 같습니다.