Prometheus
메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 제공하는 오픈소스 모니터링 컴포넌트
Prometheus는 메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 모두 제공하는 오픈 소스 모니터링 시 스템입니다.
특히, 시계열 데이터를 수집하고 저장하는데 사용되며 키-값 형태로 타임스탬프와 함께 저장됩니다.
수집된 데이터는 Grafana와 같은 서비스를 통해 시각화가 가능합니다.
임계치 초과 등 실시간 경고 기능을 지원하여 각 기업에서 많이 사용하고 있으며 대표적인 기능은 다음과 같습니다.
- 메트릭 이름과 Key-Value 쌍으로 식별되는 시계열 데이터가 있는 다차원 데이터 모델
- PromQL 지원
- 기본적으로 Pull 방식으로 다른 곳의 시계열 데이터 수집
- Push 방식의 데이터도 가져올 수 있도록 하는 Push gateway가 존재하여 두 방식 모두 지원
- 다양한 대시보드와 그래프를 지원
Turaco에서는 간단한 몇가지 설정만으로 Promethues 서비스를 배포할 수 있습니다.
본 챕터에서는 Promethues 컴포넌트 사용법에 대해 설명합니다.
컴포넌트 배치
Prometheus 컴포넌트는 아키텍처 설계 화면 (이하 디자이너 화면)에서 좌측에 위치한 컴포넌트 목록에서 '수집 및 분석' 카테고리에 있습니다.
- 설계화면 왼쪽 컴포넌트 리스트 화면에서 Prometheus 컴포넌트를 선택 후 디자이너 화면으로 드래그 & 드롭합니다.

- 배치된 Prometheus 컴포넌트에 대한 이름과 설명을 입력 후 확인 버튼을 클릭합니다.
이름과 설명은 필수 입력값이며 입력하지 않으면 확인 버튼이 활성화되지 않습니다.
포트 설정
원하는 포트 번호를 입력할 수 있으며
설정된 포트는 쿠버네티스의 서비스로 외부에 노출됩니다.

환경 설정
Proemetheus 컴포넌트는 다음과 같은 항목들에 대해 설정이 가능합니다.
-
구성 -> Prometheus가 동작하기 위한 환경을 설정합니다.
메트릭 수집 주기 및 규칙 파일 위치 지정 그리고 수집을 위한 환경등을 설정할 수 있습니다. -
알람 규칙 -> PromQL 표현식을 기반으로 알림 조건을 정의하고 알림 실행에 대한 결과를 외부 서비스에 보낼 수 있습니다.
-
레코딩 규칙 -> 집계 쿼리의 결과를 하나의 벡터 요소로 저장하는 규칙을 설정합니다.
구성
Prometheus가 동작하기 위한 환경을 설정합니다.

-
환경 설정을 위한 아이콘을 클릭합니다.
-
드롭다운 아이콘을 클릭합니다.
-
드롭다운 메뉴에서 Prometheus Setting를 항목을 선택합니다.
선택 시, Prometheus Setting 설정 내용이 팝업창에 표시됩니다. -
적용 버튼을 클릭합니다.
-
Prometheus Setting에서 선택한 내용이 환경 설정 입력창에 반영됩니다.
알람 규칙 (Alerting Rule)
Alerting Rule은 PromQL 혹은 Recording Rule을 통해 쿼리된 시계열에 대해 알람 조건을 지정하며, 조건을 충족하는 경우 해당 시계열에 대해서 ALERTS라는 시계열에 저장되는 알람 세트를 생성해 냅니다.

-
환경 설정을 위한 아이콘을 클릭합니다.
-
드롭다운 아이콘을 클릭합니다.
-
드롭다운 메뉴에서 Alerting Rules를 항목을 선택합니다.
선택 시, Alerting Rules 설정 내용이 팝업창에 표시됩니다. -
적용 버튼을 클릭합니다.
-
Alerting Rules에서 선택한 내용이 환경 설정 입력창에 반영됩니다.
알림 규칙을 작성하는 방법은 다음과 같습니다.
groups:
- name: my_prometheus_test
# ...
- alert: ErrorStatus4xxGreaterThan5
expr: sum(rate(nginx_http_response_count_total{status=~"4.."}[1m])) > 5
# ...
여기서 alert와 expr은 필수로 기입해야 합니다.
기타 알람 규칙을 작성하는 예제는 여기를 참고하세요.
레코딩 규칙 (Recording Rule)
미리 계산(집계)된 PromQL의 쿼리 결과를 새로운 시계열 데이터로 저장하는 방식입니다.
새롭게 생성된 시계열 데이터는 다른 데이터들처럼 PromQL을 통해 쿼리할 수 있습니다.
보통 매번 원본 데이터를 가져와서 집계하는 방식이 아닌 미리 레코딩 규칙에 정의된 시계열 데이터에 대해 쿼리를 하면 성능 및 처리 과정이 단순해 지는 장점이 있습니다.

-
환경 설정을 위한 아이콘을 클릭합니다.
-
드롭다운 아이콘을 클릭합니다.
-
드롭다운 메뉴에서 Recording Rules를 항목을 선택합니다.
선택 시, Recording Rules 설정 내용이 팝업창에 표시됩니다. -
적용 버튼을 클릭합니다.
-
Recording Rules에서 선택한 내용이 환경 설정 입력창에 반영됩니다.
레코딩 규칙을 설정하는 방법은 다음과 같습니다.
groups:
- name: test_rule # rule 그룹 이름
interval: 1m # (Optional) rule 실행 주기 설정, 기본 값은 global.evaluation_interval
rules:
- record: job:requests:rate1m # rule로 생성될 시계열 데이터의 이름
expr: sum without (job) (rate(http_request_count_total[1m])) # 실행될 PromQL 표현식