Monitoring

Grafana 설치 (Helm 기반) 가이드

Somaz 2025. 7. 24. 09:26
728x90
반응형

Overview

클러스터 내 상태를 시각화하고 알림까지 자동화할 수 있는 Grafana는 DevOps 환경에서 빠질 수 없는 필수 툴이다.
특히 Kubernetes 환경에서는 Helm을 활용해 빠르게 배포하고 유지관리할 수 있어 실무에서 매우 유용하게 사용된다.

 

 

이 글에서는 Helm Chart를 활용한 Grafana 설치 과정을 DNS 설정부터 Dashboard 커스터마이징까지 단계별로 정리해보겠다.

 

 

 

 

 

📅 관련 글

2024.03.05 - [Monitoring] - Fluent Bit (With Loki)

2024.09.12 - [Monitoring] - Prometheus와 Thanos란?

2024.09.12 - [Monitoring] - Prometheus 와 Thanos 설치 및 구성

2024.09.12 - [Monitoring] - Loki란?

2024.09.13 - [Monitoring] - Loki와 Promtail 설치

2025.01.13 - [Monitoring] - ELK Stack 구축해보기

2025.04.01 - [Monitoring] - Grafana란?

 

 

 

 

 


 

 

Grafana 설치 (Helm 기반) 가이드

2024.08, 09 기준의 최신 버전의 Helm Chart로 작성된 문서이다.

 

 

 

DNS 레코드 설정

Grafana를 외부에서 접속 가능하도록 Ingress를 구성했다면, DNS 설정이 필요하다.

보통 Route53이나 가비아, Cafe24 등의 DNS 등록 서비스에서 설정

 

 

 

 

Helm Chart 준비

# Helm Chart Repo 등록
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

# Chart 복사
git clone https://github.com/grafana/helm-charts.git
cp -r helm-charts/charts/grafana .
cd grafana

# 의존성 업데이트
helm dependency update .

 

 

 

 

Values 파일 생성 및 설정 (`values/mgmt.yaml`)

  • Onpremise Ingress-Nginx-Controller 사용 예제이다.
replicas: 1
adminUser: admin
adminPassword: admin

service:
  type: ClusterIP

ingress:
  enabled: true
  ingressClassName: nginx
  hosts:
    - grafana-somaz.link
  annotations:
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTP"

persistence:
  enabled: true
  storageClassName: default
  size: 10Gi

tolerations:
  - key: "monitoring"
    operator: "Equal"
    effect: "NoSchedule"

nodeSelector:
  local-path: enabled

 

👉 위 설정은 기본 Grafana + Ingress + PVC 구성이다. 필요 시 datasources, dashboards, sidecar 등을 확장 가능하다.

  • 그리고 Monitoring Node 를 지정하였고, 해당 노드의 저장 공간을 사용한다.
  • 따라서 `tolerations` 와 `nodeSelector` 를 사용하여 노드를 선택하였다.

 

 

 

설치 실행

# 사전 확인
helm lint --values ./values/mgmt.yaml
helm install grafana . -n monitoring -f ./values/mgmt.yaml --create-namespace --dry-run >> output.yaml

# 설치
helm install grafana . -n monitoring -f ./values/mgmt.yaml --create-namespace
 
⚠️ 업데이트 시에는 `helm upgrade grafana . -n monitoring -f ./values/mgmt.yaml` 사용

 

 

 

 

Grafana 접속

설치 후에는 다음 URL로 접속:

https://grafana-mgmt-cluster.sia-service.kr
  • 기본 로그인 정보는 admin / admin이며, 최초 로그인 시 비밀번호 변경을 요구한다.

 

 

 

Dashboard Import & Custom(선택) 

추천 Dashboard #13770 (Kubernetes All-in-One)

 

옛날에 작성된 Dashboard 라서 최신 Prometheus의 맞는 값으로 쿼리를 수정해줘야 한다.

 

DataSource 등록후에 진행해줘야 한다.

 

 

 

쿼리 수정 예시 (실제 운영 환경 반영)

 

CPU 점유율

- irate(node_cpu_seconds_total{mode!~"guest.*|idle|iowait", kubernetes_node="$node"}[5m])
+ irate(node_cpu_seconds_total{instance="$instance", mode!~"guest.*|idle|iowait"}[5m])

 

 

메모리 사용량

- node_memory_MemTotal_bytes{kubernetes_node="m-k8s"} - node_memory_MemAvailable_bytes{kubernetes_node="m-k8s"}
+ node_memory_MemTotal_bytes{instance="$instance"} - node_memory_MemAvailable_bytes{instance="$instance"}
  • Pods 수 / 메모리 실패 수 / CPU 코어 등도 `json` 내부 `expr` 필드만 수정하면 된다.

 

 

 

 


 

 

 

Grafana 설치 이후 필수 구성 3가지

 

 

 

1-1. 데이터 소스 등록 (Loki & Prometheus)

Grafana 설치 후, 메트릭과 로그 데이터를 시각화하려면 데이터 소스 등록이 필수이다.

 

 

Prometheus 등록

# grafana/values/mgmt.yaml
datasources:
  datasources.yaml:
    apiVersion: 1
    datasources:
      - name: Prometheus
        type: prometheus
        url: http://prometheus.monitoring.svc.cluster.local:9090
        access: proxy
        isDefault: true
  • Console에서 등록도 가능하다.

 

 

Loki 등록

      - name: Loki
        type: loki
        url: http://loki-gateway.monitoring.svc.cluster.local
        access: proxy
        isDefault: false

⚠ url: 은 클러스터 내에서 접근 가능한 서비스 주소로 설정해야 한다.

 

 

등록 후에는 Grafana UI에서도 [Settings] → [Data Sources] 메뉴에서 확인할 수 있다.

 

 

 

1-2. Console 기반 데이터 소스 등록 방법 (Prometheus & Loki)

Grafana는 Helm Values를 통해 프로비저닝하지 않고도 UI에서 손쉽게 데이터 소스를 등록할 수 있다.

 

 

 

Prometheus 등록 (UI 기반)

  1. Grafana 로그인 → Gear(⚙) 아이콘 클릭 → Data Sources
  2. → Add data source 버튼 클릭
  3. → Prometheus 선택
  4. → URL 입력: `http://prometheus.monitoring.svc.cluster.local:9090`
  5. → Save & Test 클릭

 

 

Loki 등록 (UI 기반)

  1. → Add data source → Loki 선택
  2. → URL 입력: `http://loki-gateway.monitoring.svc.cluster.local`
  3. → Save & Test 클릭

Console로 설정한 데이터 소스는 `grafana.db` 에 저장되며, 배포 시 지속적으로 유지하려면 `Helm values` 또는 `ConfigMap` 방식으로 이전하는 것이 안정적입니다.

 

 

 

 

 

 

2. Alertmanager 연동 (Slack & Email)

Grafana는 Notification Channel 기능으로 다양한 경보 수신 시스템과 연동할 수 있다.

 

 

Slack 연동 예시

  1. Slack에서 Webhook URL 발급
  2. Grafana UI에서 Alerting > Contact Points 메뉴 진입
  3. New Contact Point > Slack 선택
  4. Webhook URL 입력 → 알림 템플릿 설정

 

 

Email 연동 예시

smtp:
  enabled: true
  host: smtp.gmail.com:587
  user: your-email@gmail.com
  password: your-app-password
  fromAddress: grafana@example.com
  fromName: Grafana
  • Gmail은 앱 비밀번호 사용 필수

 

이후 `Notification policies` 에서 조건을 설정하고, 알림 룰과 연결하면 자동 알림이 가능하다.

 

 

 

 

 

3. Dashboard 자동 배포 (Provisioning with ConfigMap or sidecar)

운영 환경에서는 JSON 파일로 미리 만든 Grafana 대시보드를 자동으로 로딩하는 것이 효율이다.

 

방법 1. ConfigMap 방식

# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: grafana-dashboards
  labels:
    grafana_dashboard: "1"
data:
  13770_rev1.json: |
    { ... 대시보드 JSON ... }

 

 

 

`grafana.values.yaml` 에 아래와 같이 sidecar 설정 추가한다.

sidecar:
  dashboards:
    enabled: true
    label: grafana_dashboard
    folder: "K8S Cluster Dashboards"

 

 

 

방법 2. Helm values에 직접 삽입 (Sidecar 방식)

dashboards:
  default:
    kubernetes-cluster:
      file: /var/lib/grafana/dashboards/13770_rev1.json

 

 

 

 

 

 


 

 

 

 

마무리

이번 글에서는 Grafana를 Helm을 통해 설치하고, 클러스터 운영에 실질적으로 필요한 구성 요소인,

데이터 소스 연결, 알림 연동, 자동 대시보드 배포—까지 실전 기준으로 모두 정리해봤다.

 

단순한 설치를 넘어서 Grafana를 운영 환경에 통합하려면 다음을 고려해야 한다.

  • 팀 단위 권한 관리 (Folder/Team Role 기반 RBAC)
  • SAML, LDAP, OAuth 기반 로그인 통합
  • GitOps 기반 대시보드/알림 Git 연동
  • 상태 기반 알림 정책의 세분화
  • Grafana Agent / Mimir / Tempo 와의 통합 확장

 

 

Grafana는 단순한 시각화 툴을 넘어, Observability 중심의 DevOps 플랫폼으로 성장하고 있다.

 

이번 설치와 구성이 그 첫 걸음이라면,
다음 단계에서는 더 자동화되고, 팀 단위로 확장 가능한 운영형 Grafana 인프라로 성장시켜보시길 추천드린다.

 

 

 

 

 

 

 

 

 

 

 


 

Reference

 

 

728x90
반응형

'Monitoring' 카테고리의 다른 글

Grafana란?  (2) 2025.07.10
ELK Stack 구축해보기  (2) 2025.01.27
Loki와 Promtail 설치  (5) 2024.10.02
Loki란?  (4) 2024.09.26
Prometheus 와 Thanos 설치 및 구성  (0) 2024.09.19