본문 바로가기
클라우드/쿠버네티스

🚨 Pushgateway 사용 시 주의! 사라지지 않는 좀비 메트릭 👻

by gasbugs 2025. 10. 12.

안녕하세요! 오늘은 Prometheus 생태계에서 단기 실행 작업(short-lived jobs)의 메트릭을 수집하는 데 유용한 도구인 Pushgateway에 대해 이야기해 보려고 합니다.

 

Pushgateway는 Cron Job, 배치 작업(Batch Job)처럼 수명이 짧아 Prometheus가 직접 메트릭을 수집(pull)하기 어려운 대상의 데이터를 효과적으로 모니터링할 수 있게 해줍니다. 하지만 이 편리한 도구에는 우리가 꼭 알아야 할 함정이 숨어있습니다. 바로 "오래된(Stale) 메트릭" 또는 "좀비 메트릭" 문제입니다.

 


🤔 Pushgateway는 어떻게 동작하나요?

Pushgateway의 핵심 동작 방식은 '캐시(Cache)' 와 같습니다.

  1. 작업 시작 🚀: 배치 작업이나 임시 작업이 실행됩니다.
  2. 메트릭 전송 (Push) 📊: 작업은 자신의 상태나 결과에 대한 메트릭을 Pushgateway로 보냅니다.
  3. 메트릭 저장 📥: Pushgateway는 전달받은 메트릭을 내부에 저장합니다.
  4. Prometheus 수집 (Scrape) 🔍: Prometheus는 주기적으로 Pushgateway에 저장된 메트릭을 가져갑니다.

여기까지만 보면 완벽해 보이죠? 하지만 문제는 작업이 끝난 후에 발생합니다.

🧟‍♂️ 좀비 메트릭은 왜 생겨날까요?

배치 작업이 성공적으로 완료되고 종료되었다고 가정해 봅시다.

  • 작업(Job): 실행 종료 ✅
  • Pushgateway: "작업 A가 마지막으로 보낸 메트릭은 이거였어!" 라고 계속해서 보관 중 📝

Pushgateway는 마지막으로 푸시된 메트릭을 그대로 유지합니다. 즉, 메트릭을 보냈던 작업이 사라졌다는 사실을 스스로 인지하지 못합니다. 마치 이벤트가 끝난 뒤에도 벽에 붙어있는 낡은 포스터처럼 말이죠. 📌

 

이 상태에서 Prometheus는 계속해서 Pushgateway를 스크래핑하고, Pushgateway는 이미 종료된 작업의 오래된(stale) 메트릭을 계속해서 Prometheus에게 전달합니다. 이 메트릭이 바로 '좀비 메트릭'입니다.

 

😱 오래된 메트릭이 왜 심각한 문제일까요?

  1. 잘못된 데이터와 대시보드 📉 이미 존재하지 않는 작업에 대한 데이터가 대시보드에 계속 표시됩니다. 이는 시스템 상태를 오판하게 만드는 원인이 됩니다. 예를 들어, '마지막 백업 성공' 메트릭이 3일 전 데이터임에도 불구하고 계속 '성공'으로 표시될 수 있습니다.
  2. 가짜 알림 (False-Positive Alerts) 🚨 가장 치명적인 문제입니다. Prometheus는 Pushgateway로부터 받은 오래된 메트릭을 기반으로 알림 규칙을 평가합니다. 만약 "작업 실패" 메트릭이 삭제되지 않고 남아있다면, 이미 해결된 문제에 대해 계속해서 경고 알림을 받게 될 수 있습니다. 이는 운영자의 피로도를 높이고 진짜 문제에 대한 대응을 늦추게 만듭니다.

이것이 Pushgateway를 사용할 때 가장 흔하게 겪는, 그리고 가장 주의해야 할 문제입니다.

 


✨ 어떻게 해결해야 할까요?

해결책은 간단합니다. "사용한 자리는 깨끗하게 치우자!"

작업이 성공적으로 완료된 후, 해당 작업의 메트릭을 Pushgateway에서 수동으로 삭제하는 로직을 반드시 포함해야 합니다.

올바른 작업 흐름:

  1. 작업 시작 🚀
  2. 메트릭 전송 📊 (작업 진행 중)
  3. 작업 완료
  4. Pushgateway에서 메트릭 삭제 🗑️ (작업 스크립트의 마지막 단계)

이렇게 하면 Prometheus는 더 이상 오래된 메트릭을 수집하지 않게 되어 데이터의 정합성을 유지하고, 불필요한 알림을 방지할 수 있습니다.

 

맺음말

Pushgateway는 분명 단기 실행 작업 모니터링에 강력한 도구입니다. 하지만 그 특성을 정확히 이해하고 사용하지 않으면, 오히려 모니터링 시스템 전체의 신뢰도를 떨어뜨릴 수 있습니다.

 

Pushgateway를 사용하신다면, 작업 완료 후 메트릭을 삭제하는 것을 절대 잊지 마세요! 건강한 모니터링 환경을 위해 이 작은 습관이 정말 중요합니다. 😊