添加helm仓库
helm repo add vm https://victoriametrics.github.io/helm-charts/
helm repo update
搜索victoriametrics仓库
helm search repo vm/
NAME CHART VERSION APP VERSION DESCRIPTION
vm/victoria-logs-single 0.9.2 v1.14.0 Victoria Logs Single version - high-performance...
vm/victoria-metrics-agent 0.17.0 v1.113.0 Victoria Metrics Agent - collects metrics from ...
vm/victoria-metrics-alert 0.15.0 v1.113.0 Victoria Metrics Alert - executes a list of giv...
vm/victoria-metrics-anomaly 1.8.0 v1.20.0 Victoria Metrics Anomaly Detection - a service ...
vm/victoria-metrics-auth 0.10.0 v1.113.0 Victoria Metrics Auth - is a simple auth proxy ...
vm/victoria-metrics-cluster 0.19.0 v1.113.0 Victoria Metrics Cluster version - high-perform...
vm/victoria-metrics-common 0.0.41 Victoria Metrics Common - contains shared templ...
vm/victoria-metrics-distributed 0.9.0 v1.113.0 A Helm chart for Running VMCluster on Multiple ...
vm/victoria-metrics-gateway 0.8.0 v1.113.0 Victoria Metrics Gateway - Auth & Rate-Limittin...
vm/victoria-metrics-k8s-stack 0.39.0 v1.113.0 Kubernetes monitoring on VictoriaMetrics stack....
vm/victoria-metrics-operator 0.43.0 v0.54.1 Victoria Metrics Operator
vm/victoria-metrics-single 0.15.0 v1.113.0 Victoria Metrics Single version - high-performa...
拉取victoria-metrics-operator的chart包
helm pull vm/victoria-metrics-operator
如果遇到如下问题,说明需要科学shangwang,下载victoria-metrics-operator-0.43.0.tgz
压缩包
Error: Get "https://github.com/VictoriaMetrics/helm-charts/releases/download/victoria-metrics-operator-0.43.0/victoria-metrics-operator-0.43.0.tgz": read tcp 10.0.2.21:36530->20.205.243.166:443: read: connection reset by peer
安装victoria-metrics-operator
创建命名空间
kubectl create namespace vmtrics-monitor
tar -xvf victoria-metrics-operator-0.43.0.tgz
cd victoria-metrics-operator-0.43.0
helm install vmoperator . -f values.yaml -n vmtrics-monitor
如果已经可以科学shangwang可以直接使用如下命令:
helm install vmoperator vm/victoria-metrics-operator -f values.yaml -n vmtrics-monitor
安装成功提示
NOTES:
victoria-metrics-operator has been installed. Check its status by running:kubectl --namespace vmtrics-monitor get pods -l "app.kubernetes.io/instance=vmoperator"Get more information on https://github.com/VictoriaMetrics/helm-charts/tree/master/charts/victoria-metrics-operator.
See "Getting started guide for VM Operator" on https://docs.victoriametrics.com/guides/getting-started-with-vm-operator
这个helm install vmoperator . -f values.yaml -n vmtrics-monitor
执行后,需要等待一定的时间。检查victoria-metrics-operator是否启动成功
kubectl --namespace vmtrics-monitor get pods -l "app.kubernetes.io/instance=vmoperator"
大概会出现以下错误,是因为拉取不到镜像失败
NAME READY STATUS RESTARTS AGE
vmoperator-victoria-metrics-operator-5b8dc96466-zcc2g 0/1 ImagePullBackOff 0 13m
通过以下地址搜索国内镜像
https://docker.aityp.com/
修改values.yaml文件
image:# -- Image registryregistry: ""# -- Image repositoryrepository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/operator #修改镜像仓库# -- Image tag# override Chart.AppVersiontag: "v0.53.0" #修改镜像tag
再次参考安装情况
helm list --all-namespaces
kubectl get all -n vmtrics-monitor
显示结果
[root@mk8s-master op]# helm list --all-namespaces
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
vmoperator vmtrics-monitor 1 2025-03-14 17:02:58.383908049 +0800 CST deployed victoria-metrics-operator-0.43.0 v0.54.1
[root@mk8s-master op]# kubectl get all -n vmtrics-monitor
NAME READY STATUS RESTARTS AGE
pod/vmoperator-victoria-metrics-operator-684997574c-5sll5 1/1 Running 0 5m30sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/vmoperator-victoria-metrics-operator ClusterIP 10.106.48.186 <none> 8080/TCP,9443/TCP 5m30sNAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/vmoperator-victoria-metrics-operator 1/1 1 1 5m30sNAME DESIRED CURRENT READY AGE
replicaset.apps/vmoperator-victoria-metrics-operator-684997574c 1 1 1 5m30s
安装victoria-metrics相关组件
创建文件vmcluster.yaml
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMCluster
metadata:name: demonamespace: vmtrics-monitor
spec:retentionPeriod: "1"replicationFactor: 2vmstorage:image:repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/vmstoragetag: v1.110.0-clusterpullPolicy: AlwaysreplicaCount: 1storageDataPath: "/vm-data"storage:volumeClaimTemplate:spec:accessModes:- ReadWriteOncestorageClassName: nfs-scresources:requests:storage: "1Gi"resources:limits:cpu: "1"memory: "1Gi"vmselect:image:repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/vmselecttag: v1.110.0-clusterpullPolicy: AlwaysreplicaCount: 1cacheMountPath: "/select-cache"storage:volumeClaimTemplate:spec:accessModes:- ReadWriteOncestorageClassName: nfs-scresources:requests:storage: "1Gi"resources:limits:cpu: "1"memory: "1Gi"requests:cpu: "0.5"memory: "500Mi"vminsert:image:repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/vminserttag: v1.110.0-clusterpullPolicy: AlwaysreplicaCount: 1resources:limits:cpu: "1"memory: "1Gi"requests:cpu: "0.5"memory: "500Mi"
部署组件
kubectl apply -f vmcluster.yaml
查看组件部署结果
kubectl get pods -n vmtrics-monitor -l "app.kubernetes.io/instance=my-vm"
Scraping
安装VMAgent
创建vmagent.yaml
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMAgent
metadata:name: demonamespace: vmtrics-monitor
spec:image:repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/vmagenttag: v1.110.0pullPolicy: AlwaysselectAllByDefault: trueremoteWrite:- url: "http://vminsert-demo.vmtrics-monitor.svc:8480/insert/0/prometheus/api/v1/write"
部署vmagent.yaml
kubectl apply -f vmagent.yaml
查看是否启动
kubectl get pods -n vmtrics-monitor -l "app.kubernetes.io/instance=demo" -l "app.kubernetes.io/name=vmagent"
kubectl port-forward svc/vmagent-demo 8429:8429 -n vmtrics-monitor
vmagent-service.yaml
apiVersion: v1
kind: Service
metadata:name: vmagent-demo-nodeportnamespace: vm
spec:ports:- name: httpport: 8429protocol: TCPtargetPort: 8429selector:app.kubernetes.io/component: monitoringapp.kubernetes.io/instance: demoapp.kubernetes.io/name: vmagenttype: NodePort
安装VMServiceScrape
创建vmservicescrape.yaml
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMServiceScrape
metadata:name: vmoperator-demonamespace: vmtrics-monitor
spec:selector:matchLabels:app.kubernetes.io/instance: vmoperatorapp.kubernetes.io/name: victoria-metrics-operatornamespaceSelector:matchNames:- vmtrics-monitorendpoints:- port: http
部署vmservicescrape.yaml
kubectl apply -f vmservicescrape.yaml
查看结果
kubectl get VMServiceScrape -n vmtrics-monitor
Access
VMAuth
创建vmauth.yaml
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMAuth
metadata:name: demonamespace: vmtrics-monitorlabels:app: vmauth-demo
spec:image:repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/vmauthtag: v1.108.1pullPolicy: AlwaysselectAllByDefault: trueuserNamespaceSelector: {}userSelector: {}
部署
kubectl apply -f vmauth.yaml
查看
kubectl get svc -n vmtrics-monitor | grep vmauth-demo
转发
kubectl port-forward svc/vmauth-demo 8427:8427 -n vmtrics-monitor
vmauth-service.yaml
apiVersion: v1
kind: Service
metadata:name: vmauth-demo-nodeportnamespace: vm
spec:ports:- name: httpport: 8427protocol: TCPtargetPort: 8427selector:app.kubernetes.io/component: monitoringapp.kubernetes.io/instance: demoapp.kubernetes.io/name: vmauthtype: NodePort
VMUser
创建vmuser.yaml
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMUser
metadata:name: demonamespace: vmtrics-monitor
spec:name: demousername: demogeneratePassword: truetargetRefs:# vmui + vmselect- crd:kind: VMCluster/vmselectname: demonamespace: vmtrics-monitortarget_path_suffix: "/select/0"paths:- "/vmui"- "/vmui/.*"- "/prometheus/api/v1/query"- "/prometheus/api/v1/query_range"- "/prometheus/api/v1/series"- "/prometheus/api/v1/status/.*"- "/prometheus/api/v1/label/"- "/prometheus/api/v1/label/[^/]+/values"
部署
kubectl apply -f vmauth.yaml
查看是否部署成功
kubectl get secret -n vmtrics-monitor -l "app.kubernetes.io/instance=demo" -l "app.kubernetes.io/name=vmuser"
查看密码
kubectl get secret -n vm vmuser-demo -o jsonpath="{.data.password}" | base64 --decode
vmalert配置
vmalert
通过指定alertmanager url方式配置vmalert
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMAlert
metadata:name: example-hanamespace: vmonitor
spec:configReloaderImageTag: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jimmidyson/configmap-reload:v0.3.0image:repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/vmalerttag: v1.110.0pullPolicy: AlwaysreplicaCount: 2evaluationInterval: "10s"selectAllByDefault: truedatasource:url: http://vmselect-demo.vmonitor.svc:8481/select/0/prometheusnotifiers:- url: http://vmalertmanager-example-vmalertmanager.vmonitor.default.svc:9093remoteWrite:url: http://vminsert-demo.vmonitor.svc:8480/insert/0/prometheusremoteRead:url: http://vmselect-demo.vmonitor.svc:8481/select/0/prometheus
通过服务发现alertmanager配置vmalert
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMAlert
metadata:name: vmalert-2namespace: vmonitor
spec:configReloaderImageTag: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jimmidyson/configmap-reload:v0.3.0image:repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/victoriametrics/vmalerttag: v1.110.0pullPolicy: AlwaysreplicaCount: 2datasource:url: http://vmselect-demo.vmonitor.svc:8481/select/0/prometheusnotifiers:- selector:namespaceSelector:matchNames:- vmonitorlabelSelector:matchLabels:isalertmanager: "true"evaluationInterval: "10s"ruleSelector: {}
配置alertmanager
默认配置文件配置alertmanager
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMAlertmanager
metadata:name: example-vmalertmanagernamespace: vmonitorlabels:isalertmanager: "true"
spec:configReloaderImageTag: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jimmidyson/configmap-reload:v0.3.0image:repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/prom/alertmanagertag: v0.27.0pullPolicy: Always
指定alertmanager配置文件
alertmanager配置文件
apiVersion: v1
kind: Secret
metadata:name: vmalertmanager-example-alertmanagerlabels:app: vm-operator
type: Opaque
stringData:alertmanager.yaml: |global:resolve_timeout: 5mroute:group_by: ['job']group_wait: 30sgroup_interval: 5mrepeat_interval: 12hreceiver: 'webhook'receivers:- name: 'webhook'webhook_configs:- send_resolved: trueurl: 'http://alertmanagerwh:30500/'
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMAlertmanager
metadata:name: example-vmalertmanagernamespace: vmonitorlabels:isalertmanager: "true"
spec:configReloaderImageTag: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jimmidyson/configmap-reload:v0.3.0image:repository: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/prom/alertmanagertag: v0.27.0pullPolicy: AlwaysconfigSecret: vmalertmanager-configconfigSelector: {}configNamespaceSelector: {}
alertmanager服务
apiVersion: v1
kind: Service
metadata:name: vmalertmanager-demo-nodeportnamespace: vmonitor
spec:ports:- name: httpport: 9093protocol: TCPtargetPort: 9093selector:app.kubernetes.io/instance: example-vmalertmanagerapp.kubernetes.io/name: vmalertmanagertype: NodePort
参考:
https://docs.victoriametrics.com/operator/resources/vmalert/
https://docs.victoriametrics.com/operator/quick-start/
https://docs.victoriametrics.com/operator/resources/vmcluster/index.html