victorialogs: Grafana 통합 완료 기록

- vm-stack helm values에 victoriametrics-logs-datasource plugin 추가
- ConfigMap sidecar 패턴으로 datasource 등록 (helm additionalDataSources는 vm-stack 구조상 미적용)
- Grafana PVC RWO Multi-Attach 주의사항 기록
This commit is contained in:
kappa
2026-04-08 20:49:17 +09:00
parent ec9df443eb
commit 5b595967eb

View File

@@ -1,7 +1,7 @@
---
title: VictoriaLogs (K3s 로그 저장)
updated: 2026-04-08
tags: [k3s, logging, vector, observability]
updated: 2026-04-08 Grafana 통합
tags: [k3s, logging, vector, observability, grafana]
---
# VictoriaLogs
@@ -84,6 +84,45 @@ Vector helm values는 [[vector|vector]] 문서 또는 `helm get values vector -n
- Traefik 로그는 별도 sink로 [[crowdsec-safeline|CrowdSec]]에 전송 (vector의 다른 transform/sink). VictoriaLogs로는 안 보내고 있음. 필요하면 sink inputs에 `parse_traefik` 추가하면 됨.
## Grafana 통합
vm-stack의 Grafana(`monitoring/vm-stack-grafana`)에 등록되어 있음. Explore에서 data source를 `VictoriaLogs`로 선택하면 LogsQL 쿼리 가능.
### 등록 방법
두 단계로 구성:
1. **플러그인 설치** — vm-stack helm values의 `grafana.plugins``victoriametrics-logs-datasource` 추가하고 `helm upgrade vm-stack`. Grafana 시작 시 자동 다운로드/설치 (현재 v0.26.3).
2. **datasource 등록**`grafana.additionalDataSources`는 vm-stack chart 구조상 sub-chart로 전달이 안 되므로 무시됨. 대신 **sidecar ConfigMap 패턴** 사용:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: vlogs-grafana-datasource
namespace: monitoring
labels:
grafana_datasource: "1" # ← grafana-sc-datasources sidecar가 자동 발견
data:
vlogs.yaml: |
apiVersion: 1
datasources:
- name: VictoriaLogs
type: victoriametrics-logs-datasource
access: proxy
url: http://vlogs-victoria-logs-single-server.logging.svc.cluster.local:9428
isDefault: false
editable: true
```
`kubectl apply -f` 한 번이면 sidecar가 즉시 picks up하고 grafana가 hot reload (`Writing /etc/grafana/provisioning/datasources/vlogs.yaml`).
### 주의
- Grafana PVC가 ReadWriteOnce이므로 helm upgrade 시 새 pod이 다른 노드에 스케줄되면 Multi-Attach error → 기존 pod 수동 삭제 필요. (또는 Grafana Deployment의 strategy를 Recreate로 변경)
- helm values의 `grafana.additionalDataSources`는 무시되지만 plugin 설치는 작동하므로, plugin 라인은 helm values에 두는 게 맞음.
## LogsQL 쿼리 예시
```logsql
@@ -130,7 +169,7 @@ kubectl get cm vector -n logging -o jsonpath='{.data.vector\.yaml}'
## 향후 작업
- [ ] Grafana data source 추가 (vm-stack helm upgrade로 `victoriametrics-logs-datasource` plugin 설치)
- [x] Grafana data source 추가 (2026-04-08 완료, 위 "Grafana 통합" 섹션 참조)
- [ ] CrowdSec와 통합 (APISIX 로그 → CrowdSec 시나리오)
- [ ] AI 분석 컴포넌트 (CronJob 또는 streaming, 새 공격 패턴 자동 차단 룰 생성)
- [ ] Traefik 로그도 VL로 동시 sink (현재는 CrowdSec only)