Grafana로 메트릭 시각화하기
Grafana 대시보드로 Calico 컴포넌트 메트릭을 확인하는 방법을 다뤄요. Prometheus가 수집한 Felix, Typha, node 성능 지표를 그래프로 시각화하면 비정상 동작을 빠르게 발견할 수 있어요. Calico가 제공하는 대시보드 템플릿을 그대로 가져다 쓸 수도 있어요.
출처: 문서
본문
큰 그림
Grafana 대시보드를 사용해 Calico 컴포넌트 메트릭을 확인해요.
활용 가치
Grafana를 사용하면 그래프를 통해 메트릭을 시각화할 수 있어서 비정상적인 활동을 빠르게 식별하는 데 도움이 돼요. 다음 이미지는 이 목표를 달성하는 데 활용할 수 있는 그래프와 메트릭의 일부를 보여줘요.

개념
Grafana란?
Grafana는 다양한 데이터 소스의 메트릭을 쿼리하고, 시각화하고, 알림을 설정하고, 탐색할 수 있는 오픈 소스 시각화·분석 도구예요. Calico 컴포넌트 메트릭은 Prometheus에 저장되며 Grafana에서 조회할 수 있어요.
Prometheus란?
Prometheus는 계측(instrumented)된 컴포넌트에서 메트릭을 수집(scrape)하고 시계열 데이터로 저장하는 오픈 소스 모니터링 도구예요. 저장된 데이터는 Grafana 같은 도구로 시각화할 수 있어요.
시작하기 전에...
이 튜토리얼에서는 다음을 가정해요
- Calico가 설치되고 calicoctl과 kubectl이 준비된 실행 중인 Kubernetes 클러스터
- Calico 컴포넌트 메트릭을 수집하도록 Prometheus를 설정하기 위한 monitor component metrics 가이드의 모든 단계 완료
방법
이 튜토리얼은 Grafana로 Calico 메트릭 대시보드를 만드는 데 필요한 단계를 안내해요.
Prometheus 준비하기
여기서는 Grafana가 여러분의 Prometheus를 볼 수 있도록 서비스를 만들어요.
kubectl apply -f - <<EOF
apiVersion: v1
kind: Service
metadata:
name: prometheus-dashboard-svc
namespace: calico-monitoring
spec:
selector:
app: prometheus-pod
role: monitoring
ports:
- port: 9090
targetPort: 9090
EOF
Grafana 파드 준비하기
1. 데이터소스 프로비저닝
Grafana 데이터소스는 시계열 데이터의 스토리지 백엔드예요. 각 데이터 소스에는 해당 데이터 소스가 노출하는 기능과 능력에 맞춰 커스터마이즈된 Query Editor가 있어요.
SECONDARY: Grafana 데이터소스에 대해 더 자세히 설명하는 가이드는 이 링크에서 볼 수 있어요.
이 섹션에서는 Grafana의 프로비저닝 기능을 사용해 Prometheus 데이터소스를 만들어요.
SECONDARY: 프로비저닝에 대해 더 자세히 설명하는 가이드는 이 링크에서 볼 수 있어요.
여기서는 데이터소스를 설정하고 클러스터 안의 Prometheus 서비스를 가리키게 만들어요.
kubectl apply -f - <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
name: grafana-config
namespace: calico-monitoring
data:
prometheus.yaml: |-
{
"apiVersion": 1,
"datasources": [
{
"access":"proxy",
"editable": true,
"name": "calico-demo-prometheus",
"orgId": 1,
"type": "prometheus",
"url": "http://prometheus-dashboard-svc.calico-monitoring.svc:9090",
"version": 1
}
]
}
EOF
2. Calico 대시보드 프로비저닝
여기서는 Felix와 Typha 대시보드가 담긴 configmap을 만들어요.
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.33.0/manifests/grafana-dashboards.yaml
3. Grafana 파드 만들기
이 단계에서는 앞서 만든 설정 파일을 사용해 Grafana 파드를 만들어요.
SECONDARY: Grafana는 기본적으로 3000 포트를 사용해요. 이 포트를 수정하는 방법에 대한 자세한 가이드는 이 링크에서 볼 수 있어요.
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: grafana-pod
namespace: calico-monitoring
labels:
app: grafana-pod
role: monitoring
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- name: grafana-pod
image: grafana/grafana:latest
resources:
limits:
memory: "128Mi"
cpu: "500m"
volumeMounts:
- name: grafana-config-volume
mountPath: /etc/grafana/provisioning/datasources
- name: grafana-dashboards-volume
mountPath: /etc/grafana/provisioning/dashboards
- name: grafana-storage-volume
mountPath: /var/lib/grafana
ports:
- containerPort: 3000
volumes:
- name: grafana-storage-volume
emptyDir: {}
- name: grafana-config-volume
configMap:
name: grafana-config
- name: grafana-dashboards-volume
configMap:
name: grafana-dashboards-config
EOF
4. Grafana 대시보드 접근하기
이 시점에서 Grafana 대시보드를 보기 위해 필요한 모든 컴포넌트를 설정했어요. port-forward 기능을 사용해 Grafana를 로컬 머신으로 노출하세요.
kubectl port-forward pod/grafana-pod 3000:3000 -n calico-monitoring
이제 http://localhost:3000에서 Grafana 웹 UI에 접근할 수 있어요. Felix 대시보드로 바로 가고 싶다면 여기를 클릭하세요.
SECONDARY: 사용자 이름과 비밀번호는 둘 다
admin이에요.
로그인하면 기본 비밀번호를 바꾸라는 안내가 떠요. 여기서 바로 바꾸고(권장) Save를 클릭하거나, Skip을 클릭하고 나중에 설정 메뉴에서 바꿀 수도 있어요.
축하해요! Felix 대시보드에 도착했어요.
이 튜토리얼에서는 Typha 대시보드도 준비했어요. 클러스터에서 Typha를 사용하지 않는다면 Grafana 웹 UI에서 안전하게 삭제할 수 있어요.
WARNING: Typha 감지와 설정에 대한 더 자세한 가이드는 이 링크에서 볼 수 있어요.
정리(Cleanup)
아래 명령어를 실행하면, 이 튜토리얼과 monitor component metrics 가이드를 따라 만든 것들을 포함해 모든 Calico 모니터링 리소스가 삭제돼요.
kubectl delete namespace calico-monitoring
더 알아보기 (Learn more)
Grafana + Prometheus 조합은 Calico 컴포넌트의 CPU, 메모리, 커넥션 수 같은 지표를 눈으로 확인하는 가장 빠른 방법이에요. 기본 계정은 admin/admin이니 첫 로그인 후 비밀번호를 바꾸는 것을 권장해요. 튜토리얼을 마친 뒤에는 calico-monitoring 네임스페이스 삭제로 깔끔하게 정리할 수 있어요.