From 5b595967eb963eb2f8fc4546e9004fc7cfa88cea Mon Sep 17 00:00:00 2001 From: kappa Date: Wed, 8 Apr 2026 20:49:17 +0900 Subject: [PATCH] =?UTF-8?q?victorialogs:=20Grafana=20=ED=86=B5=ED=95=A9=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C=20=EA=B8=B0=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - vm-stack helm values에 victoriametrics-logs-datasource plugin 추가 - ConfigMap sidecar 패턴으로 datasource 등록 (helm additionalDataSources는 vm-stack 구조상 미적용) - Grafana PVC RWO Multi-Attach 주의사항 기록 --- infra/victorialogs.md | 45 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/infra/victorialogs.md b/infra/victorialogs.md index 6e046e5..3e5add4 100644 --- a/infra/victorialogs.md +++ b/infra/victorialogs.md @@ -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)