Grafana
Grafana는 Lumie의 운영자 대상 시각화 허브입니다. Prometheus와 별도로 배포되며, 로컬 SQLite 데이터베이스나 PVC가 아니라 공유 infra-db 클러스터에 상태를 저장합니다.
소스 경로
lumie-infra/observability/grafana/argocd.yamllumie-infra/observability/grafana/helm-values.yamllumie-infra/observability/grafana/common-values.yamllumie-infra/observability/grafana/dashboards/*.jsonlumie-infra/security/teleport/agent/helm-values.yaml
런타임 계약
grafana네임스페이스에서 replica 1개 실행- 로컬 영속성 대신
infra-db의 PostgreSQL 백엔드 스토리지 사용 - VaultStaticSecret이 렌더링한
grafana-db-app시크릿에서 데이터베이스 연결 필드 읽기 - 다음 datasource 노출
- 기본 메트릭 소스로 Prometheus
- Loki
- Alertmanager
- Tempo
데이터 소스 표면
- name: Prometheus
url: http://prometheus-kube-prometheus-prometheus.prometheus.svc.cluster.local:9090
isDefault: true
- name: Loki
url: http://loki.loki.svc.cluster.local:3100
- name: Tempo
url: http://tempo.tempo.svc.cluster.local:3100
소스 경로: lumie-infra/observability/grafana/helm-values.yaml
접근 경계
- Helm ingress는 비활성화됩니다.
- Teleport가
grafana앱을 게시하고http://grafana.grafana.svc.cluster.local:80을 프록시합니다. grafana.ini.server.root_url은 여전히https://grafana.lumie-infra.com으로 설정되어 있으며, 이는 reverse-proxied 접근의 기대 외부 origin입니다.
대시보드 관리
- JSON 대시보드는
lumie-infra/observability/grafana/dashboards/에 저장됩니다. - Helm values는 대시보드를 UI에서 수동 임포트한다고 명시합니다.
- Grafana는 상태를 PostgreSQL에 저장하므로
persistence.enabled가false여도 임포트된 대시보드는 pod 재생성 후 살아남습니다.
장애 지점
infra-db가 degraded되거나 시크릿 연결이 어긋나면 Prometheus, Loki, Tempo가 healthy해도 대시보드가 뜨기 전에 Grafana가 실패합니다.- 팀이 JSON 파일에서 대시보드가 자동으로 준비된다고 기대하면, 저장소가 현재 이 파일들을 자동 마운트 계약이 아닌 참고 아티팩트로 취급한다는 점을 놓치게 됩니다.
- anonymous viewer 접근이 활성화되어 있고 login form이 비활성화되어 있으므로, 접근 제어는 Grafana 로컬 자격 증명이 아니라 주변 프록시와 운영자 경로에 의존합니다.
검증
kubectl get applications.argoproj.io -n argocd grafana
kubectl get pods -n grafana
kubectl get secret -n grafana grafana-db-app
kubectl describe deploy -n grafana grafana
성공은 grafana Application이 Synced/Healthy이고, Grafana pod가 Ready이며, grafana-db-app이 데이터베이스 자격 증명을 갖고 존재하고, deployment 설명에 기대한 chart 관리 컨테이너와 환경 연결이 보이는 것을 의미합니다.