Prometheus 및 Grafana를 활용한 지표
클러스터와 애플리케이션 지표를 수집하도록 Prometheus를 설정하고 Grafana로 시각화하세요.
Prometheus 및 Grafana를 활용한 지표은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
메트릭의 힘
메트릭은 애플리케이션과 인프라의 상태 및 성능을 설명하는 수치 측정값입니다. 소프트웨어의 활력 징후라고 생각해 보십시오!
메트릭은 다음과 같은 정보를 제공합니다.
- 성능: 애플리케이션이 얼마나 빠르게 응답합니까?
- 리소스 사용량: 서버의 메모리가 부족해지고 있습니까?
- 가용성: 사용자가 서비스를 이용할 수 있도록 서비스가 실행 중입니까?
메트릭을 추적하면 추세를 파악하고 이상을 감지하며 문제를 사전에 해결할 수 있습니다.
Prometheus 알아보기
Prometheus는 안정성과 확장성을 위해 설계된 오픈 소스 모니터링 시스템입니다. 클라우드 네이티브 관찰 가능성 스택의 핵심 도구입니다.
주요 기능은 다음과 같습니다.
- 수집: 구성된 대상(애플리케이션 등)에서 메트릭을 수집합니다.
- 저장: 이러한 메트릭을 시계열 데이터베이스에 저장합니다.
- 조회: 수집된 데이터에 대해 질문할 수 있도록 합니다.
Prometheus를 사용하면 Kubernetes 클러스터 내부에서 어떤 일이 일어나는지 명확하게 파악할 수 있습니다.
Prometheus의 "스크레이핑" 모델
Prometheus는 메트릭을 수집할 때 "풀" 모델을 사용합니다. 애플리케이션이 Prometheus로 데이터를 보내는 대신 Prometheus가 애플리케이션에서 메트릭을 능동적으로 "스크레이핑"하거나 가져옵니다.
일반적인 작동 방식은 다음과 같습니다.
- 애플리케이션이 특정 HTTP 엔드포인트(대개
/metrics)에서 메트릭을 노출합니다. - Prometheus에 애플리케이션의 IP와 포트 같은 대상 목록을 구성합니다.
- 일정한 간격으로 Prometheus가 각 대상의
/metrics엔드포인트에 HTTP 요청을 보냅니다. - 대상이 현재 메트릭으로 응답하면 Prometheus가 이를 저장합니다.
메트릭: 키-값 쌍
Prometheus는 데이터를 시계열로 저장합니다. 시계열은 타임스탬프가 지정된 값의 흐름입니다. 각 시계열은 메트릭 이름과 레이블이라고 하는 키-값 쌍 집합으로 고유하게 식별됩니다.
예: http_requests_total{method="GET", path="/api"}
Prometheus의 핵심 메트릭 유형은 다음과 같습니다.
- 카운터: 계속 증가하기만 하는 누적 메트릭입니다(예: 전체 요청 수).
- 게이지: 증가하거나 감소할 수 있는 값입니다(예: 현재 CPU 사용량).
- 히스토그램/요약: 관측값을 표본으로 수집하고 구성 가능한 구간별로 집계하는 데 사용합니다(예: 요청 처리 시간).
애플리케이션이 메트릭을 "말하게" 만들기
Prometheus가 메트릭을 스크레이핑하려면 애플리케이션이 Prometheus가 이해할 수 있는 형식으로 메트릭을 노출해야 합니다. 일반적으로 HTTP 엔드포인트를 통해 이 작업을 수행합니다.
많은 프로그래밍 언어에는 코드에 계측 기능을 쉽게 추가할 수 있는 클라이언트 라이브러리가 있습니다.
- 이벤트가 발생할 때 카운터를 증가시킵니다.
- 현재 상태를 게이지에 설정합니다.
- 작업에 걸린 시간을 관측합니다.
메트릭 카운터를 노출하는 매우 간단한 애플리케이션 예제를 살펴보겠습니다.
메트릭을 노출하는 Python 애플리케이션
다음은 간단한 카운터 메트릭을 노출하는 작은 Python Flask 애플리케이션입니다. 페이지 조회 수를 세는 상황을 모의합니다.
이 코드를 실행한 다음 브라우저나 터미널에서 /metrics에 접근해 보십시오(예: 실행 후 http://localhost:5000/metrics 방문).
from flask import Flask
from prometheus_client import Counter, generate_latest
import time
app = Flask(__name__)
c = Counter('my_app_requests_total', 'Total requests to my app')
@app.route('/')
def hello():
c.inc() # Increment the counter
return "Hello, CoddyKit!"
@app.route('/metrics')
def metrics():
return generate_latest().decode('utf-8')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)클러스터의 Prometheus
Kubernetes에서 Prometheus를 효율적으로 배포할 때는 보통 Prometheus Operator를 사용합니다. 이 오퍼레이터는 Prometheus 인스턴스와 구성을 관리하는 데 도움을 줍니다.
Prometheus에 사용되는 주요 Kubernetes 리소스는 다음과 같습니다.
- ServiceMonitor: 메트릭 엔드포인트를 찾을 위치(스크레이핑할 Service와 Pod 등)를 Prometheus에 알려 줍니다.
- PodMonitor: ServiceMonitor와 비슷하지만 Pod를 직접 대상으로 지정합니다.
이 리소스를 사용하면 배포된 애플리케이션에서 Prometheus가 메트릭을 자동으로 검색하고 스크레이핑할 수 있습니다.
Grafana: 대시보드의 지휘자
Prometheus가 메트릭을 수집하고 저장하는 동안 Grafana는 메트릭을 시각화하는 대표적인 도구입니다. Grafana는 오픈 소스 분석 및 대화형 시각화 웹 애플리케이션입니다.
Grafana를 사용하면 다음과 같은 작업을 할 수 있습니다.
- 보기 좋고 유용한 대시보드를 만듭니다.
- 여러 데이터 소스(예: Prometheus)를 조회합니다.
- 메트릭 임계값을 기반으로 경고를 설정합니다.
원시 메트릭 데이터를 실행 가능한 정보로 변환합니다.
Grafana와 Prometheus: 강력한 조합
Grafana 자체는 메트릭 데이터를 저장하지 않고 외부 데이터 소스에서 데이터를 조회합니다. Kubernetes 메트릭을 시각화하려면 Grafana에서 Prometheus를 데이터 소스로 구성하십시오.
단계:
- Grafana에서 새 데이터 소스를 추가합니다.
- 유형으로 "Prometheus"를 선택합니다.
- Prometheus 서버의 URL을 입력합니다.
- Prometheus의 쿼리 언어인 PromQL을 사용하여 대시보드 작성을 시작합니다!
이 조합을 사용하면 클러스터를 완전히 제어하며 모니터링할 수 있습니다.
지식을 확인해 보세요!
Prometheus와 Grafana에 대한 이해도를 확인해 볼 시간입니다!
복습: 메트릭 및 시각화
잘하셨습니다! 이 레슨에서 다음 내용을 배웠습니다.
- 관찰 가능성에서 메트릭의 중요성
- 시계열 메트릭을 강력하게 스크레이핑하고 저장하는 시스템인 Prometheus
- Prometheus가 수집할 수 있도록 애플리케이션이 메트릭을 노출하는 방법
- 유용한 대시보드를 만들고 메트릭 데이터를 시각화하는 Grafana
이러한 도구를 이해하는 것은 Kubernetes 애플리케이션을 정상적이고 효율적으로 유지하는 데 매우 중요합니다. 직접 애플리케이션을 계측하는 방법을 계속 탐색해 보십시오!
자주 묻는 질문
“Prometheus 및 Grafana를 활용한 지표” 강의는 무료인가요?
네 — “Prometheus 및 Grafana를 활용한 지표” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“Prometheus 및 Grafana를 활용한 지표”에서 뭘 배우나요?
클러스터와 애플리케이션 지표를 수집하도록 Prometheus를 설정하고 Grafana로 시각화하세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“Prometheus 및 Grafana를 활용한 지표” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- kubectl logs를 활용한 로그 기록
- Prometheus 및 Grafana를 활용한 지표
- 상태 확인: 활성 및 준비성 프로브
- 분산 추적과 이벤트