k8s
组件 资源清单
pod 生命周期
pod 控制器
服务发现
runcher
KubeSphere
Helm
helm命令
helm 常用内置对象
helm 内置函数
helm 的逻辑 和 流程控制
helm 中变量在作用域、列表、元祖、字典中的引用
helm 使用define定义子模版、template和include调用
helm 获取其他文件的内容和文件名
社区的Helm chart仓库
helm几个常用仓库
存储 configMap
进入k8s pod
k8s Node节点的调试
k8s 部署
sealos 部署
kubeadm 1.28部署
增加 node 节点
在aws 上自建k8s
利用NFS动态提供Kubernetes后端存储卷
rook-ceph
CephFS挂载
Ceph Dashboard
ingress
k8s集成kube-prometheus
ServiceMonitor 添加配置
Prometheus 长期远程存储方案 VictoriaMetrics
解决ControllerManager、Scheduler、watchdog监控问题
抓取配置说明
kubernetes配置imagePullSecrets秘钥来拉取镜像
在 Kubernetes 裡跑 curl 來測試內部服務
MetalLB
cloudflare-tunnel-ingress-controller
K8S kubectl 自动补全
argocd
helm部署redis-culster集群
改变默认 StorageClass
自定义指标HPA
istio
kiali
k8s接入graylog
Labels
DNS
HPA
ConfigMap挂载导致容器目录覆盖的问题
污点容忍度
身份认证与权限 RBAC
command
运行crictl ps -a 报错
etcd
cka证书
cert-manager
Kubernetes 创建普通账号
部署 metrics-server 指标
deployment 重启
Kubernetes中如何优雅的解决Pod时区问题
alertmanager
oom killed
eks挂载efs
eks创建集群
eksctl awscli kubectl
污点和容忍度
Kubernetes 删除namespace Terminating解决脚本
k8s 部署 kafka 集群
ack ingress获取客户端客户端真实IP
ingress 反向代理 ws
本文档使用 MrDoc 发布
-
+
首页
Prometheus 长期远程存储方案 VictoriaMetrics
# VictoriaMetrics https://cloud.tencent.com/developer/article/2008318 VictoriaMetrics(简称VM) 是一个支持高可用、经济高效且可扩展的监控解决方案和时间序列数据库,可用于 Prometheus 监控数据做长期远程存储。 主要包含以下几个组件: * vmstorage:数据存储以及查询结果返回,默认端口为 8482 * vminsert:数据录入,可实现类似分片、副本功能,默认端口 8480 * vmselect:数据查询,汇总和数据去重,默认端口 8481 * vmagent:数据指标抓取,支持多种后端存储,会占用本地磁盘缓存,默认端口 8429 * vmalert:报警相关组件,不如果不需要告警功能可以不使用该组件,默认端口为 8880 ## 单节点 首先需要一个单节点模式的 VM,运行 VM 很简单,可以直接下载对应的二进制文件启动,也可以使用 docker 镜像一键启动,我们这里同样部署到 Kubernetes 集群中。资源清单文件如下所示。 ``` # victoria-metrics.yaml apiVersion: apps/v1 kind: Deployment metadata: name: victoria-metrics namespace: kube-vm spec: selector: matchLabels: app: victoria-metrics template: metadata: labels: app: victoria-metrics spec: volumes: - name: storage persistentVolumeClaim: claimName: victoria-metrics-data containers: - name: vm image: victoriametrics/victoria-metrics:v1.76.1 imagePullPolicy: IfNotPresent args: - -storageDataPath=/var/lib/victoria-metrics-data - -retentionPeriod=1w ports: - containerPort: 8428 name: http volumeMounts: - mountPath: /var/lib/victoria-metrics-data name: storage --- apiVersion: v1 kind: Service metadata: name: victoria-metrics namespace: kube-vm spec: type: NodePort ports: - port: 8428 selector: app: victoria-metrics --- apiVersion: v1 kind: PersistentVolume metadata: name: victoria-metrics-data spec: accessModes: - ReadWriteOnce capacity: storage: 20Gi storageClassName: local-storage local: path: /data/k8s/vm persistentVolumeReclaimPolicy: Retain nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node2 --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: victoria-metrics-data namespace: kube-vm spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: local-storage ``` 到这里我们单节点的 VictoriaMetrics 就部署成功了。接下来我们只需要在 Prometheus 中配置远程写入我们的 VM 即可,更改 Prometheus 配置: 由于 prometheus 是通过 Operator 部署的,修改 config 需要修改 prometheus crd ``` [root@master ~]# kubectl get prometheus -n monitoring NAME VERSION DESIRED READY RECONCILED AVAILABLE AGE k8s 2.46.0 1 1 True True 55d # 修改prometheus config kubectl edit prometheus k8s -n monitoring ``` ``` #只展示 spec spec: alerting: alertmanagers: - apiVersion: v2 name: alertmanager-main namespace: monitoring port: web enableFeatures: [] evaluationInterval: 30s externalLabels: #这里 externalLabels 是用于指定 grafana dashboard 中 分辨k8s集群用的 origin_prometheus: dc-456 image: quay.io/prometheus/prometheus:v2.46.0 nodeSelector: kubernetes.io/os: linux podMetadata: labels: app.kubernetes.io/component: prometheus app.kubernetes.io/instance: k8s app.kubernetes.io/name: prometheus app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 2.46.0 podMonitorNamespaceSelector: {} podMonitorSelector: {} portName: web probeNamespaceSelector: {} probeSelector: {} remoteWrite: # 远程写入到远程 VM 存储 - url: http://192.168.1.64:8428/api/v1/write replicas: 1 resources: requests: memory: 400Mi ruleNamespaceSelector: {} ruleSelector: {} scrapeInterval: 30s securityContext: fsGroup: 2000 runAsNonRoot: true runAsUser: 1000 serviceAccountName: prometheus-k8s serviceMonitorNamespaceSelector: {} serviceMonitorSelector: {} version: 2.46.0 ``` ``` # 多个proemtheus的话,需要配置每个Prometheus的标识符 global: external_labels: datacenter: dc-123 ``` ``` # 更新后执行 reload 操作重新加载 prometheus 配置 ☸ ➜ curl -X POST "http://192.168.1.64:31890/-/reload" #或者 重启 pod ``` 配置生效后 Prometheus 就会开始将数据远程写入 VM 中,我们可以查看 VM 的持久化数据目录是否有数据产生来验证: ``` ☸ ➜ ll /data/k8s/vm/data/ total 0 drwxr-xr-x 4 root root 38 Apr 22 17:15 big -rw-r--r-- 1 root root 0 Apr 22 16:59 flock.lock drwxr-xr-x 4 root root 38 Apr 22 17:15 small ``` ![](/media/202310/2023-10-25_185911_2163830.5975906951776221.png) ![](/media/202310/2023-10-25_185940_6480930.34786271448292005.png)
admin
2023年10月25日 19:01
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码