Prometheus 3.13 LTS: 운영자가 확인할 보안 패치·PromQL 변경·Native Histogram 성능 개선
Prometheus LTS란 무엇인가
Prometheus는 2024년 11월 3.0을 릴리스하며 7년 만의 메이저 업그레이드를 단행했다. Native Histogram, UTF-8 라벨, OTLP 수집 지원, UI 전면 개편 등이 포함된 이 릴리스 이후 3.x 계열은 빠른 속도로 발전하고 있다.
그러나 운영 환경에서는 새 기능 추가보다 안정성과 보안 수명이 더 중요한 경우가 많다. Prometheus 팀은 이를 위해 LTS(Long Term Support) 릴리스 정책을 운영한다.
LTS 정책의 핵심:
- 6주 주기로 일반 릴리스가 나오며, 이 중 일부가 LTS로 지정된다.
- LTS 릴리스는 지정 후 1년간 버그 수정·보안 패치·문서 수정만 받는다.
- 새 기능이나 기능 변경은 LTS에 추가되지 않는다.
- 이전 LTS인 Prometheus 3.5는 2025년 6월 3일 지정되어 2026년 7월 31일 지원 종료된다.
Prometheus 3.13.0은 2026년 7월 1일 릴리스된 새 LTS 버전이다. 지원 기간은 2027년 7월 31일까지다. 3.5 LTS를 사용 중인 운영자라면 지원 종료 전에 3.13으로 업그레이드해야 한다.
보안 수정: 두 가지 CVE
CVE-2026-44990 — UI XSS
Prometheus 3.13은 UI에서 사용하는 sanitize-html npm 패키지를 업데이트해 교차 사이트 스크립팅(XSS) 취약점을 수정했다. 공격 시나리오: Prometheus UI에서 알림 어노테이션이나 메트릭 레이블에 HTML/JavaScript가 포함된 값이 표시될 때 스크립트가 실행될 수 있었다.
영향 범위: Prometheus UI를 인터넷에 직접 노출하거나, 외부에서 수집하는 메트릭의 레이블 값을 신뢰하는 환경.
완화 조치: UI를 내부 네트워크로 제한하거나, Ingress 수준에서 인증 레이어를 추가하는 것이 이미 적용되어 있다면 즉각적인 위험은 낮다. 그래도 업그레이드를 권장한다.
CVE-2025-4673 / CVE-2023-45289 — HTTP 인증 헤더 유출
이전 버전에서 Prometheus의 HTTP 클라이언트(Remote Write, Alertmanager 연결, Service Discovery API 호출 등)는 리다이렉트(3xx 응답)를 따라갈 때 다른 호스트로의 리다이렉트에도 Authorization 헤더를 전달했다.
공격 시나리오: http://internal-target.example.com으로 설정된 Remote Write 엔드포인트가 공격자가 제어하는 도메인으로 리다이렉트를 반환할 경우, Prometheus가 해당 도메인에도 인증 토큰을 보냈다.
3.13 수정 내용: HTTP 클라이언트는 이제 다른 호스트로 리다이렉트될 때 Authorization 헤더를 제거한다. 같은 호스트 내 경로 변경 리다이렉트에는 영향을 주지 않는다.
운영 확인 사항: Remote Write나 Alertmanager가 리다이렉트를 반환하는 구성이라면 동일 호스트 리다이렉트인지 확인한다.
브레이킹 체인지: 운영자가 반드시 확인할 네 가지
1. PromQL 기간 함수 이름 변경: min() / max() → min_of() / max_of()
Prometheus 3.x는 스칼라 값을 처리하는 기간 표현식(duration expression) 기능을 실험적으로 도입했다. 이 기능의 min(a, b) / max(a, b) 함수가 PromQL 집계 연산자 min / max와 이름이 겹쳐 혼동을 유발했다.
3.13에서 이 함수들은 min_of(a, b) / max_of(a, b)로 이름이 변경된다.
영향 범위: experimental-duration-expr 피처 플래그를 활성화한 환경에서 기간 표현식에 min() / max()를 사용 중인 경우. 실험적 기능이므로 프로덕션 사용자 비율은 낮지만, 사용 중이라면 알림 규칙이나 기록 규칙을 즉시 업데이트해야 한다.
2. Rule Group 페이지네이션 토큰: SHA-1 → SHA-256
/api/v1/rules 엔드포인트의 페이지네이션 토큰 생성 알고리즘이 SHA-1에서 SHA-256으로 변경된다. 이전 버전에서 발행된 토큰은 3.13에서 유효하지 않다.
운영 영향: 페이지네이션을 사용해 규칙 목록을 순차 조회하는 자동화 스크립트나 도구가 있다면, 업그레이드 직후 이전 토큰으로 다음 페이지를 요청하는 중간 상태에서 오류가 발생한다. 업그레이드 후 첫 번째 조회부터 새 토큰을 사용해야 한다.
3. HTTP 설정 파일의 상대 경로 해석 방식 변경
scrape_configs나 remote_write에서 HTTP 설정을 참조하는 파일 내 상대 경로가 이전에는 설정 파일의 부모 디렉터리 기준으로 해석되었다. 3.13부터는 설정 파일 자체가 위치한 디렉터리 기준으로 해석된다.
예시:
# /etc/prometheus/conf.d/scrape.yaml 내
http_config:
tls_config:
cert_file: ../certs/client.crt # 이전: /etc/prometheus/certs/client.crt
# 3.13: /etc/prometheus/conf.d/certs/client.crt운영 확인 사항: 여러 파일로 분리된 Prometheus 설정 구조에서 상대 경로로 TLS 인증서, CA 파일, 토큰 파일을 참조하는 경우 경로를 점검한다. 절대 경로를 사용하면 영향을 받지 않는다.
4. 제3자 npm 라이선스 파일 위치 변경
이전에는 별도 아카이브로 배포되던 npm 라이선스 파일이 바이너리에 내장되어 /assets/third-party-licenses.txt로 접근 가능해진다. 라이선스 파일을 별도로 패키지하거나 배포 검증에 포함한 자동화 프로세스가 있다면 수정이 필요하다.
새 기능: 운영자 관점 요약
Native Histogram 성능 성숙
Native Histogram은 Prometheus 3.0에서 안정화(stable) 상태에 진입했고 3.13에서 계속 성능 개선이 이루어졌다.
- V2 히스토그램 WAL 디코더: 메모리 할당이 50% 감소했다. 고카디널리티 히스토그램 메트릭을 대규모로 수집할 때 Prometheus 서버의 메모리 사용량이 눈에 띄게 줄어든다.
- Smoothed/anchored rate 연산: Native Histogram에서 평활화된(smoothed) 비율 계산을 지원한다. 이는 히스토그램 분위수 추정의 정확도를 높이는 데 사용된다.
쿼리 성능 개선
- 케이스 무감각 정규식 매칭: 약 2배 빨라졌다.
=~"(?i).*pattern.*"형태의 쿼리가 많은 Grafana 대시보드에서 체감 성능 향상. - 청크 채우기(chunk population) 오버헤드 감소: 쿼리 시 청크를 메모리에 로드하는 과정이 최적화되어 12~15% 쿼리 속도 개선.
실험적 기능 추가
- 메트릭/라벨 검색 API:
/api/v1/search/metrics와/api/v1/search/labels엔드포인트가 실험적으로 추가된다. 메트릭 이름이나 라벨 키를 문자열로 검색할 수 있어 카디널리티가 높은 환경에서 탐색이 쉬워진다. - AWS RDS 인스턴스 필터링: EC2 서비스 디스커버리의 AWS 통합에 RDS 인스턴스 기반 필터링이 추가된다.
- 런타임 float 청크 인코딩 선택:
xor또는xor2인코딩을 실행 중에 선택할 수 있다.xor2는 변화율이 낮은 메트릭에서 더 효율적이다.
주요 버그 수정
범위 쿼리 샘플 계산 오류: rate()나 increase() 같은 범위 쿼리에서 샘플 수가 부정확하게 계산되는 경우가 있었다. 이 수정은 샘플 경계 조건 처리를 개선하므로, 알림 규칙의 평가 결과가 미세하게 달라질 수 있다.
fill_left/fill_right 누락 샘플: binary operator의 fill_left/fill_right 수정자를 사용할 때 일부 시계열 샘플이 누락되던 버그가 수정된다.
smoothed() 표현식 패닉: 특정 조건에서 smoothed() 함수가 Prometheus 프로세스를 패닉시키는 버그가 수정된다. Native Histogram + smoothed() 조합을 사용 중이라면 즉각 업그레이드를 권장한다.
TSDB 청크 스냅샷 인코딩 손상: 특정 워크로드에서 청크 스냅샷 파일이 손상될 수 있는 경로가 수정된다.
아키텍처: Prometheus 3.x 서빙 레이어 구조
3.13의 보안 수정(HTTP 리다이렉트 헤더 차단)과 쿼리 성능 개선이 어느 레이어에 영향을 주는지 살펴보면 다음과 같다.
업그레이드 체크리스트
사전 점검
- PromQL 알림·기록 규칙 스캔:
experimental-duration-expr피처 플래그가 활성화되어 있다면,min(...)/max(...)를 사용하는 규칙을min_of(...)/max_of(...)로 수정한다.
- HTTP 설정 파일 상대 경로 점검: TLS 인증서, CA 파일, 토큰 파일 경로가 상대 경로라면 절대 경로로 변경하거나 파일 구조를 조정한다.
- 페이지네이션 토큰 의존 자동화 확인:
/api/v1/rulesAPI를 페이지네이션으로 호출하는 스크립트가 있다면 업그레이드 직후 재시작 기준으로 토큰이 초기화됨을 인지한다.
smoothed()사용 여부 확인:smoothed()함수를 사용 중이라면 패닉 버그 수정으로 인해 우선 업그레이드를 권장한다.
- Remote Write / Alertmanager 리다이렉트 경로 확인: 리다이렉트를 반환하는 HTTP 엔드포인트에 연결하는 경우 동일 호스트 리다이렉트인지 확인한다. 다른 호스트로의 리다이렉트를 의도적으로 사용한다면 설정을 직접 목적지로 변경해야 한다.
업그레이드 절차
# 1. 현재 버전 스냅샷 백업
promtool tsdb create-blocks-from rules ...
# 2. 메트릭 지속성 확인 (TSDB 백업)
cp -r /var/lib/prometheus/data /backup/prometheus-$(date +%Y%m%d)
# 3. 설정 파일 검증 (새 바이너리 사용)
./promtool check config prometheus.yml
# 4. 알림 규칙 검증
./promtool check rules rules/*.yml
# 5. 롤링 업그레이드 (단일 노드) 또는 카나리 배포 (분산)업그레이드 후 확인
# 청크 스냅샷 무결성 확인
./promtool tsdb analyze /var/lib/prometheus/data
# 쿼리 성능 변화 확인 (느린 쿼리 로그 활성화)
--query.max-samples=50000000
--query.timeout=2m
# Native Histogram WAL 사용량 모니터링
prometheus_tsdb_wal_storage_size_bytes
prometheus_tsdb_head_chunks_storage_size_bytes3.5 LTS에서 3.13 LTS로의 주요 차이점
3.5 LTS(2025-06-03)에서 3.13 LTS(2026-07-01) 사이의 일반 릴리스 기간 동안 누적된 주요 변화 요약이다.
| 영역 | 3.5 → 3.13 주요 변화 |
|---|---|
| Native Histogram | stable → 성숙화, WAL 효율 50% 개선 |
| PromQL | min_of/max_of 도입, 범위 쿼리 정확도 수정 |
| 보안 | 2개 CVE 수정, HTTP 리다이렉트 강화 |
| 성능 | 케이스 무감각 정규식 2×, 청크 채우기 12-15% |
| UI | XSS 수정, npm 라이선스 내장 |
| TSDB | 청크 스냅샷 손상 수정 |
| Service Discovery | AWS RDS 필터링 추가 |
LTS 선택 기준
Prometheus 3.5 LTS와 3.13 LTS 중 선택이 아니라, 3.13 LTS로의 전환이 현재 유일한 지원받는 경로다. 3.5 LTS는 2026년 7월 31일 지원이 종료된다.
다음 LTS는 3.13 이후 약 6~8개월 후에 지정될 것으로 예상되며, 현재로서는 3.13이 운영 환경의 표준 선택이다.
Open question: Prometheus 3.x의 Native Histogram이 클래식 히스토그램 수집을 완전히 대체할 시점에 대한 공식 로드맵은 아직 없다. 현재 두 형식을 동시에 지원하는 이중 처리 비용이 언제까지 유지될지는 불확실하다.
정리
Prometheus 3.13 LTS는 기능 추가보다 운영 내구성에 집중한 릴리스다. 두 CVE 수정, HTTP 리다이렉트 보안 강화, 범위 쿼리와 청크 처리의 버그 수정이 핵심이다.
LTS 업그레이드의 우선순위는 다음 순서로 권장한다:
- 즉각:
smoothed()함수를 사용 중이면 패닉 버그로 인해 우선 업그레이드 - 단기 (2026-07-31 전): Prometheus 3.5 LTS 지원 종료 전에 3.13으로 이전
- 중기: Native Histogram 전환을 계획 중이라면 WAL 효율 개선을 고려