6290322f1b
- VM stack 10 charts: victoria-metrics-cluster/auth, victoria-logs-cluster, victoria-metrics-agent/alert, opentelemetry-collector, kube-state-metrics, prometheus-node-exporter, alertmanager, perses (JWT/OIDC, Infisical-ready) - ArgoCD ApplicationSet (syncWave) + per-chart dip-values overlays - doc/victoria-metrics-architecture.md, define-chart-resources updates - includes pending working-tree changes (mlflow, kubeflow, apisix, CLAUDE.md) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
143 lines
5.3 KiB
YAML
143 lines
5.3 KiB
YAML
# =============================================================================
|
|
# vmagent — PaaSup 커스텀 오버라이드 (Kubernetes 메트릭 수집)
|
|
# 차트: victoria-metrics/victoria-metrics-agent
|
|
# 역할: kubelet / cadvisor / kube-state-metrics / node-exporter / 파드 annotation scrape
|
|
# 전송 대상: VictoriaMetrics Cluster vminsert:8480 (쓰기 경로는 vmauth 미경유)
|
|
#
|
|
# accountID 매핑(예시): 0=플랫폼 공통(fallback) / 1=demo01 / 2=demo02 / 9000=platform
|
|
# 네임스페이스별 분기는 urlRelabelConfig(ConfigMap: vmagent-relabel-configs) 마운트로 처리.
|
|
# 해당 ConfigMap은 온보딩 시 별도 생성한다(CUSTOM-README 참조).
|
|
# =============================================================================
|
|
|
|
# remoteWrite — 최소 1개 필요. accountID별 엔드포인트 + urlRelabelConfig 파일 분기
|
|
remoteWrite:
|
|
- url: "http://vmcluster-victoria-metrics-cluster-vminsert.monitoring.svc.cluster.local:8480/insert/1/prometheus/api/v1/write"
|
|
urlRelabelConfig: /relabel/demo01.yaml
|
|
- url: "http://vmcluster-victoria-metrics-cluster-vminsert.monitoring.svc.cluster.local:8480/insert/2/prometheus/api/v1/write"
|
|
urlRelabelConfig: /relabel/demo02.yaml
|
|
- url: "http://vmcluster-victoria-metrics-cluster-vminsert.monitoring.svc.cluster.local:8480/insert/9000/prometheus/api/v1/write"
|
|
urlRelabelConfig: /relabel/platform.yaml
|
|
- url: "http://vmcluster-victoria-metrics-cluster-vminsert.monitoring.svc.cluster.local:8480/insert/0/prometheus/api/v1/write"
|
|
|
|
extraVolumes:
|
|
- name: relabel-configs
|
|
configMap:
|
|
name: vmagent-relabel-configs
|
|
extraVolumeMounts:
|
|
- name: relabel-configs
|
|
mountPath: /relabel
|
|
|
|
resources:
|
|
requests:
|
|
cpu: 50m
|
|
memory: 128Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 512Mi
|
|
|
|
# 스크레이프 설정 — kubelet/cadvisor/exporters/파드 annotation
|
|
config:
|
|
global:
|
|
scrape_interval: 30s
|
|
external_labels:
|
|
cluster: local
|
|
|
|
scrape_configs:
|
|
- job_name: kubelet
|
|
scheme: https
|
|
tls_config:
|
|
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
|
insecure_skip_verify: true
|
|
authorization:
|
|
credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
|
|
kubernetes_sd_configs:
|
|
- role: node
|
|
relabel_configs:
|
|
- target_label: __address__
|
|
replacement: kubernetes.default.svc:443
|
|
- source_labels: [__meta_kubernetes_node_name]
|
|
regex: (.+)
|
|
target_label: __metrics_path__
|
|
replacement: /api/v1/nodes/$1/proxy/metrics
|
|
- source_labels: [__meta_kubernetes_node_name]
|
|
target_label: node
|
|
|
|
- job_name: cadvisor
|
|
scheme: https
|
|
tls_config:
|
|
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
|
insecure_skip_verify: true
|
|
authorization:
|
|
credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
|
|
kubernetes_sd_configs:
|
|
- role: node
|
|
relabel_configs:
|
|
- target_label: __address__
|
|
replacement: kubernetes.default.svc:443
|
|
- source_labels: [__meta_kubernetes_node_name]
|
|
regex: (.+)
|
|
target_label: __metrics_path__
|
|
replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor
|
|
- source_labels: [__meta_kubernetes_node_name]
|
|
target_label: node
|
|
|
|
- job_name: kube-state-metrics
|
|
honor_labels: true
|
|
kubernetes_sd_configs:
|
|
- role: endpoints
|
|
namespaces:
|
|
names: [monitoring]
|
|
relabel_configs:
|
|
- source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_name]
|
|
regex: kube-state-metrics
|
|
action: keep
|
|
- source_labels: [__meta_kubernetes_endpoint_port_name]
|
|
regex: http
|
|
action: keep
|
|
|
|
- job_name: node-exporter
|
|
kubernetes_sd_configs:
|
|
- role: endpoints
|
|
namespaces:
|
|
names: [monitoring]
|
|
relabel_configs:
|
|
- source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_name]
|
|
regex: prometheus-node-exporter
|
|
action: keep
|
|
- source_labels: [__meta_kubernetes_endpoint_port_name]
|
|
regex: metrics
|
|
action: keep
|
|
- source_labels: [__meta_kubernetes_pod_node_name]
|
|
target_label: node
|
|
|
|
- job_name: kubernetes-pods
|
|
kubernetes_sd_configs:
|
|
- role: pod
|
|
relabel_configs:
|
|
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
|
|
regex: "true"
|
|
action: keep
|
|
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
|
|
regex: (.+)
|
|
target_label: __metrics_path__
|
|
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
|
|
regex: ([^:]+)(?::\d+)?;(\d+)
|
|
replacement: $1:$2
|
|
target_label: __address__
|
|
- source_labels: [__meta_kubernetes_namespace]
|
|
target_label: namespace
|
|
- source_labels: [__meta_kubernetes_pod_name]
|
|
target_label: pod
|
|
- source_labels: [__meta_kubernetes_pod_label_app]
|
|
target_label: app
|
|
|
|
# RBAC — kubelet/cadvisor/엔드포인트 접근 권한
|
|
rbac:
|
|
create: true
|
|
extraRules:
|
|
- apiGroups: [""]
|
|
resources: [nodes, nodes/proxy, nodes/metrics, pods, services, endpoints, namespaces]
|
|
verbs: [get, list, watch]
|
|
- nonResourceURLs: [/metrics, /metrics/cadvisor]
|
|
verbs: [get]
|