프로메테우스 돌연 파업 선언

급한 일이 끝나서 다시 K8S를 하고 있는데 잘 되던 프로메테우스가 동작을 안한다
당연히 프로메테우스가 동작을 안하니 그라파나도 올스탑 ㅠㅠ

이 문제가 알고보니 되게 간단한 것이라 빠르게 해결해보겠다
(근데 뒤에 함정이 또 있었음... 번외 참조)
1. 원인 분석
일단 Error가 Out of Bounds이고, Last Scrape가 시간인데 음수?

이건 일단 서버 시간에 문제가 있음을 의심해야한다
K8S 한다고 이것저것 작업하다가 꼬인 것 같음..
2. 해결 방법
그냥 모든 서버의 시간을 통일해주면 되는 것이었다
근데 수동으로 잡아줬다가 나중에 K8S 때문에 또 틀어질까봐 NTP(Network Time Protocol) 클라이언트라는 것을 써보기로 했다
Linux에서는 chrony라는 것을 많이 쓴다고 한다
바로 설치한다
아 참고로 아래 과정은 모든 서버에서 실행한다
# 최신화 및 chrony 설치
sudo apt-get update
sudo apt-get install -y chrony
# chrony 실행 및 systemd에 등록
sudo systemctl start chrony
sudo systemctl enable chrony
# 정상동작 테스트
timedatectl status

아 잊지말고 프로메테우스 재실행해야 한다
sudo systemctl restart prometheus
3. 결과
나머지 서버들이 잘 연결이 된 것을 확인할 수 있었다

4. 번외
1) 그 어떤 쿼리도 동작하지 않는다면?
나 같은 경우엔 시간이 정상화되고 나서 어떤 쿼리도 동작하지 않았음

이게 시간이 계속 꼬인 데이터가 쌓였으면 정상화된 로그도 문제될 수 있다는 얘기
- 나 같은 경우엔 맥미니(중계서버) 혼자 미래에 있다가 온거라서 TSDB에 온갖 시간대가 뒤죽박죽 있는 셈이다
- 그러니까 데이터를 새로 쓰려고 해도 미래에 이미 데이터가 있고, 그걸 가져오자니 난 새로 쓰려고 하고... 이런 상황
- 답은 싹다 밀어버리는 것이라고 생각했음 (아이고 내 분산 데이터들 ㅠㅠ 백업을 까먹었네...)
아무튼 TSDB를 초기화하기 위해선 아래 명령어 순서대로 진행하면 됨
# 프로메테우스 멈추고 TSDB 전부 싹 밀고 재실행
sudo systemctl stop prometheus
sudo rm -rf /var/lib/prometheus/*
sudo systemctl start prometheus
이제 잘 나오는 것을 확인할 수 있었음

그라파나(Grafana)에서도 잘 나오는 것을 확인!

2) TSDB란?
- 그럼 결국 TSDB란 무엇인가에 대한 궁금증에 조사해봤음
- TSDB는 Time Series Database의 약자
- 결국 시간(Time) + 값(Value) 쌍으로 이루어진 데이터를 저장하는 DB인셈
- 프로메테우스는 시간마다 데이터를 조회하니까 이런 형태의 DB가 가장 효율적이라서 이런 DB를 쓰게 된 것!
'Infra > DevOps' 카테고리의 다른 글
| 쿠버네티스(Kubernetes, K8s) 구축 과정에 마주한 에러들 (0) | 2025.12.03 |
|---|---|
| 홈서버 4대로 쿠버네티스(Kubernetes, K8s) 구축하기 (0) | 2025.12.01 |
| Fail2Ban, 다시 iptables-nft 체제로 전환하기 (feat. 최최최종ver) (0) | 2025.11.24 |
| Fail2Ban, nftables 체제로 완전 전환하기 (feat. 눈물겨운 이유와 Ubuntu 22.04) (0) | 2025.11.15 |
| Fail2Ban 돌연사 사건 및 해결방법 (feat. 그지같은 nftables) (0) | 2025.11.15 |