Prometheus
프로메테우스
는 대상의 HTTP 메트릭을 주기적으로 수집하고 시계열로 저장·질의하는 모니터링 시스템이다. 메트릭 이름과 조합이 시계열을 구분하며 경보 평가는 수집과 별도 주기로 실행된다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
로고: Prometheus Authors 공식 자료. 제품 식별을 위해 표시하며 각 상표의 권리는 권리자에게 있습니다.
01무엇이고, 어떤 일을 하나
- 와 계측된 애플리케이션에서 수치를 가져온다.
- ··Histogram의 의미에 맞춰 로 분석한다.
- 지속 조건을 가진 경보를 평가하고 에 전달한다.
02어떤 순서로 동작하나
- 표본 노출
가 · 등 정의된 의미의 측정값을 HTTP 응답으로 제공한다.
- 주기적
가 scrape_interval에 따라 요청하고 성공·실패를 up과 관련 지표로 기록한다.
- 시계열 저장
집합별 sample을 저장한다. 대상이 사라져 표본이 없는 상태와 값 0은 다르다.
- 규칙 평가
evaluation_interval에 따라 식을 평가한다. 는 reset을 고려한 뒤에 목적별 집계를 적용한다.
- 경보 상태 변화
조건이 지속되어 for 요건을 충족하면 pending에서 firing으로 이어질 수 있다.
- 통지
가 grouping·중복 억제·silence·수신자 routing을 적용한다. 한 통지가 원시 사건 한 건과 같지는 않다.
03먼저 알아둘 용어와 구성요소
- 대상의 메트릭 엔드포인트를 조회해 표본을 수집하는 동작.
- job·instance 등 시계열을 구분하는 이름·값 쌍.
- 증가하다 재시작 등으로 리셋될 수 있는 누적값.
- 시간 구간의 증가율을 리셋 보정·외삽을 고려해 추정하는 함수.
- 시계열을 선택·계산·집계하는 질의 언어.
- 대상 시스템의 지표를 수집해 가능한 형식으로 제공하는 프로그램.
- 현재 온도·사용량처럼 증가와 감소가 가능한 측정값.
- 시간·값·로 구분되는 시계열을 저장하는 데이터베이스.
- 경보의 그룹화·중복 제거··억제 등을 처리하는 구성 요소.
- 메모리의 최근 자료를 복구할 수 있도록 기록하는 쓰기 전 로그.
Targets의 UP·DOWN을 서비스 구성과 연결하기
실행과 성공, 애플리케이션 정상 여부를 구분하고 실패 위치를 좁힌다.
실습 구성과 전제
- 자신의 격리 와 Node 를 사용한다.
- 서버별 시각·주소·포트는 실제 시험 환경에 맞추고 사진의 사설 주소로 접속하지 않는다.
Exporter 프로세스의 실행 조건을 읽는다
- 의 ExecStart는 실행 파일, Wants·After는 다른 유닛과의 의존·순서 조건을 나타낸다. network-online.target이 있다고 원격 대상까지 항상 연결되는 것은 아니다.
- 서비스가 active인 것과 /metrics가 올바르게 응답하는 것은 따로 확인한다.
shellsystemctl status node_exporter --no-pager curl --fail --max-time 5 http://127.0.0.1:9100/metrics자신의 에서 읽기 전용으로 조회한다.
원본 크기로 보기 ↗- ExecStart가 node_exporter 바이너리를 가리키며 Wants·After가 network-online.target으로 설정되어 있다.
- User=root와 WantedBy=default.target도 보인다. 실제 운영에서는 필요한 최소 권한과 활성화 대상을 따로 검토한다.
확인 기준상태·리스닝 포트·metrics 응답을 각각 확인한다.
각 job의 endpoint와 scrape 오류를 읽는다
- Targets 화면의 UP은 해당 에서 메트릭을 가져왔다는 뜻이다. 호스트의 모든 서비스가 정상이라는 의미가 아니다.
- DOWN의 no route to host는 연결 경로·방화벽 거부 등 네트워크 조건을 조사할 출발점이다. 에 경로가 없다는 단일 원인으로 확정하지 않는다.
원본 크기로 보기 ↗- 로컬·Ubuntu job은 1/1 up이며 다른 client job은 0/1 up과 DOWN을 보여 준다.
- 실패 행에는 9100/metrics endpoint, scrape duration 3.68s, no route to host 메시지가 함께 나타난다.
확인 기준서버에서 같은 endpoint를 확인해야 하며 브라우저 PC의 접속 결과로 대체하지 않는다.
설정 대상과 지표 의미를 재검증한다
- static_configs.targets가 의도한 를 가리키는지 본다. 자체의 9090과 Node 의 9100은 서로 다른 수집 대상이다.
- 경로를 수정한 뒤 UP 변화를 확인하고 실제 node 메트릭의 이름·단위·라벨을 조사한다.
textup node_uname_info조회 예시. up과 노드 정보 메트릭은 서로 다른 확인 항목이다.
원본 크기로 보기 ↗- job_name은 prometheus이고 target은 localhost:9090이다.
- metrics_path와 scheme은 주석으로 기본값을 설명한다. 이 항목을 Node Exporter 연결 성공 증거로 쓰면 안 된다.
확인 기준UP 회복 뒤에도 실제 필요한 메트릭이 존재하는지 별도로 확인한다.
실습에서 확인한 동작 원리
- UP은 수집 성공 지표다.
- 문제 확인은 실제 수집 주체인 서버 위치에서 수행한다.
04예제로 따라가기
- 표본 조건: 0·15·30·45초에서 차례로 100·130·10·40이 관찰되었다고 가정한다. 중간에 재시작이 한 번 있었다는 교육용 모형이다.
- 첫 구간: 100에서 130으로 늘어 관찰 증가량은 30이다. 두 번째 구간은 값이 줄어 단순 차이 −120을 정상 증가량으로 쓰면 안 된다.
- 리셋 구간: 0으로 리셋된 뒤 10까지 증가했다고 보정하면 이 구간의 관찰 가능한 증가분은 10이다. 리셋 직전 미관측 증가는 알 수 없다.
- 관측 평균: 마지막 증가 30을 더한 보정 증가량은 70이고 표본 사이 평균은 70/45≈1.56/s다. 이것은 설명용 계산이다.
- 함수와 차이: 실제 결과는 조회 범위·표본 경계·외삽에 따라 이 값과 다를 수 있다. 그래프의 를 검증할 때 실제 표본 시각을 함께 본다.
05혼동하기 쉬운 점과 확인 기준
- 없는 시계열: 값 0과 시계열 부재는 다르다. Target 제거·라벨 변경·staleness가 빈 결과를 만들 수 있다.
- 샘플 수: 범위에 충분한 표본이 있는지 확인한다. 간격보다 지나치게 짧은 창은 계산 가능한 자료를 부족하게 만든다.
- 라벨 결합: 벡터 연산에서 라벨 집합이 맞지 않아 결과가 사라지는지 본다. 원본 양쪽 시계열이 존재해도 자동으로 모두 결합되는 것은 아니다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
함께 보는 학습 자료
아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.
Prometheus: Histogram·Summary의 합과 개수
관측 합과 개수로 평균을 계산하는 공식과 classic·native histogram의 표현 차이를 비교한다.
- classic _sum·_count와 의 결합
- 관측값이 음수일 때 _sum의 가정 문제
- bucket 기반 quantile과 Summary quantile의 집계 차이
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.