본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Grafana로 메트릭 시각화하기

원문 보기 위키 갱신

Grafana 대시보드로 Calico 컴포넌트 메트릭을 확인하는 방법을 다뤄요. Prometheus가 수집한 Felix, Typha, node 성능 지표를 그래프로 시각화하면 비정상 동작을 빠르게 발견할 수 있어요. Calico가 제공하는 대시보드 템플릿을 그대로 가져다 쓸 수도 있어요.

출처: 문서

본문

큰 그림

Grafana 대시보드를 사용해 Calico 컴포넌트 메트릭을 확인해요.

활용 가치

Grafana를 사용하면 그래프를 통해 메트릭을 시각화할 수 있어서 비정상적인 활동을 빠르게 식별하는 데 도움이 돼요. 다음 이미지는 이 목표를 달성하는 데 활용할 수 있는 그래프와 메트릭의 일부를 보여줘요.

Screenshot of a Grafana dashboard displaying Calico component metrics including CPU usage, memory usage, client connections, and other performance graphs

개념

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 네임스페이스 삭제로 깔끔하게 정리할 수 있어요.