Prometheus 는 메트릭을 시계열 데이터로 수집 및 집계하기 위한 오픈 소스 모니터링 솔루션입니다. 간단히 말해서 Prometheus 스토어의 각 항목은 발생한 타임스탬프가 포함된 메트릭 이벤트입니다.
Prometheus는 원래 Soundcloud에서 개발되었지만 현재는 CNCF( Cloud Native Computing Foundation )에서 지원하는 커뮤니티 프로젝트입니다. 쿼리 기능과 클라우드 네이티브 아키텍처가 결합되어 최신 애플리케이션을 위한 이상적인 모니터링 스택이 되면서 지난 10년 동안 빠르게 성장했습니다.
이 기사에서는 Prometheus의 역할을 설명하고 Prometheus가 데이터를 저장 및 노출하는 방법을 살펴보고 Prometheus의 책임이 어디에서 끝나는지 강조할 것입니다. 인기의 일부는 보다 편리한 형식으로 데이터를 표시할 수 있는 다른 플랫폼과의 소프트웨어 상호 운용성 때문입니다.
프로메테우스는 무엇을 합니까?
Prometheus는 실시간으로 이벤트를 저장합니다. 이러한 이벤트는 메모리 소비, 네트워크 활용 또는 개별 수신 요청과 같이 애플리케이션과 관련된 모든 것이 될 수 있습니다.
기본 데이터 단위는 "메트릭"입니다. 각 메트릭에는 참조할 수 있는 이름과 레이블 집합이 할당됩니다. 레이블은 데이터베이스의 메트릭을 필터링하는 데 사용할 수 있는 임의의 키-값 데이터 쌍입니다.
측정항목은 항상 다음 네 가지 핵심 도구 유형 중 하나를 기반으로 합니다 .
- 카운터 – 감소하거나 재설정되지 않고 꾸준히 증가하는 값입니다.
- 게이지 – 언제든지 어떤 방향으로든 변경될 수 있는 값입니다.
- 히스토그램 – 저장된 모든 값의 합계와 기록된 이벤트 수를 제공하는 여러 값의 샘플링입니다.
- 요약 – 요약 기능은 히스토그램과 유사하지만 슬라이딩 기간 동안 집계 모니터링을 위해 구성 가능한 분위수를 지원합니다.
Prometheus는 끌어오기 기반 데이터 가져오기 메커니즘을 사용하여 메트릭의 현재 값을 결정합니다. 각 메트릭을 지원하는 데이터 소스를 주기적으로 폴링한 다음, 결과를 시계열 데이터베이스에 새 이벤트로 저장합니다. 모니터링되는 응용 프로그램은 데이터 원본으로 사용되는 끝점을 구현해야 합니다. 이러한 데이터 공급자는 일반적으로 내보내기 로 설명됩니다 .
풀 기반 모델은 Prometheus를 애플리케이션에 통합하는 것을 단순화합니다. 수집할 메트릭 의 현재 값을 표시하는 호환 가능한 끝점을 제공하기만 하면 됩니다 . Prometheus는 다른 모든 것을 처리합니다. 예를 들어 Prometheus가 데이터가 변경되기 전에 엔드포인트를 다시 폴링하는 경우 이는 비효율성을 초래할 수 있지만 이는 코드에서 메트릭 전송을 처리할 필요가 없음을 의미합니다.
수출업체에 대한 추가 정보
내보내기는 Prometheus가 수집할 준비가 된 애플리케이션의 메트릭을 노출할 책임이 있습니다. 많은 사용자는 설치된 Linux 호스트에서 기본 시스템 메트릭을 수집 하는 Node Exporter 의 간단한 배포로 시작합니다 .
Prometheus 자체 또는 공식 커뮤니티 공급업체에서 제공하는 다양한 내보내기 도구 를 사용할 수 있습니다 . MySQL, PostgreSQL 및 MongoDB와 같은 인기 있는 데이터베이스 엔진을 모니터링하든 HTTP 서버, 로깅 엔진 또는 메시징 버스를 추적하든 상관없이 내보내기 도구가 이미 존재할 가능성이 높습니다.
자신의 내보내기를 작성하여 애플리케이션의 자체 메트릭을 추적할 수 있습니다 . 이 접근 방식에는 제한이 없습니다. 방문 페이지, 판매량, 사용자 등록 또는 시스템에 중요한 모든 것에 소요된 시간을 캡처할 수 있습니다.
내보내기는 간단한 HTTP API 끝점이므로 모든 프로그래밍 언어로 구성할 수 있습니다. Prometheus는 Go, Java/Scala, Python 및 Ruby용 공식 클라이언트 라이브러리를 제공하여 코드를 더 쉽게 계측할 수 있습니다. 커뮤니티 이니셔티브는 대부분의 다른 인기 있는 언어 에 대한 비공식 라이브러리 도 제공했습니다.
Prometheus 데이터 쿼리
Prometheus 내의 데이터 는 다양한 연산자와 함수를 사용하여 메트릭을 선택, 구문 분석 및 형식화할 수 있는 내장 쿼리 언어인 PromQL 을 사용하여 쿼리됩니다. Prometheus는 시계열 저장소를 사용하므로 특정 기간 내에 추가된 데이터를 간단히 표시할 수 있도록 시간 기반 범위 및 기간 선택을 지원합니다.
프로메테우스로 할 수 없는 것
Prometheus는 포괄적인 모니터링 솔루션이지만 일부 역할에는 적합하지 않습니다. Prometheus는 안정성과 성능을 핵심 원칙으로 하여 설계되었습니다. 이는 메트릭의 정확성에 대한 절충으로 이어집니다.
Prometheus는 수집된 데이터가 100% 정확하다고 보장하지 않습니다. 가끔 삭제되는 이벤트가 더 큰 그림에 영향을 미치지 않는 대용량 시나리오를 위한 것입니다. 정확해야 하는 민감한 통계를 추적하는 경우 해당 측정항목에 대해 다른 플랫폼을 사용해야 합니다. 시스템에서 덜 중요한 값에 대해서는 여전히 Prometheus를 채택할 수 있습니다.
또한 Prometheus가 모니터링 스택에서 원하는 유일한 구성 요소가 아닐 수도 있습니다. 주로 HTTP API를 사용하여 이벤트를 저장하고 쿼리하는 데 중점을 둡니다. 기본 제공 웹 UI는 기본 그래프 기능을 제공하지만 고급 사용자 지정 대시보드는 지원할 수 없습니다. 데이터 시각화 시나리오는 일반적으로 Grafana 인스턴스를 함께 배포하여 처리됩니다. 이것은 내장된 Prometheus 통합 으로 대시보드 및 메트릭 분석 기능을 제공합니다 .
댓글