侧边栏壁纸
博主头像
背锅小王子博主等级

我从事运维工作有十年之久,主要从事云原生相关的工作,对k8s、devops、servicemesh、可观察性等较为熟悉!

  • 累计撰写 59 篇文章
  • 累计创建 64 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

prometheus应用实践(三)远程存储

背锅小王子
2022-07-31 / 0 评论 / 0 点赞 / 188 阅读 / 1,129 字
温馨提示:
本文最后更新于 2022-11-14,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1、简介说明

常见的prometheus远程存储有:

influxdb、thanos、victoriametrics

这三种远程存储方案对比:

influxdb的开源版本不支持集群,暂时不考虑

thanos架构较为复杂,维护成本高

victoriaMetrics(简称VM) 是一个支持高可用、经济高效且可扩展的监控解决方案和时间序列数据库,可用于 Prometheus 监控数据做长期远程存储。

VictoriaMetrics 具有以下突出特点:

  • 它可以作为 Prometheus 的长期存储
  • 它可以用作 Grafana 中 Prometheus 的替代品
  • 它具有易于设置和操作的特点:
    • VictoriaMetrics 由一个没有外部依赖的小型可执行文件组成。
    • 所有配置都是通过具有合理默认值的显式命令行标志完成的。
    • -storageDataPath所有数据都存储在命令行标志指向的单个目录中。
    • 可以使用vmbackup / vmrestore工具轻松快速地从即时快照备份到 S3 或 GCS。
  • 它实现了基于 PromQL 的查询语言 - MetricsQL,它在 PromQL 之上提供了改进的功能。
  • 它提供全局查询视图。多个 Prometheus 实例或任何其他数据源可能会将数据摄取到 VictoriaMetrics。稍后可以通过单个查询来查询此数据。
  • 它为数据摄取和数据查询提供了高性能和良好的纵向和横向可扩展性。它的性能比 InfluxDB 和 TimescaleDB 高 20 倍。
  • 在处理数百万个独特的时间序列时,它使用的 RAM 比 InfluxDB 少 10 倍,比 Prometheus、Thanos 或 Cortex 少 7 倍。
  • 它针对高流失率的时间序列进行了优化。
  • 它提供了高数据压缩率,因此与 TimescaleDB 相比,可以将多达 70 倍的数据点塞入有限的存储空间,与 Prometheus、Thanos 或 Cortex 相比,所需的存储空间减少多达 7 倍。
  • 它针对具有高延迟 IO 和低 IOPS 的存储(AWS、Google Cloud、Microsoft Azure 等中的 HDD 和网络存储)进行了优化。
  • 由于存储架构,它可以保护存储在非正常关机(即 OOM、硬件重置或kill -9)时免受数据损坏。
  • 它支持指标重新标记。
  • 它有开源集群版本。
  • 它可以将数据存储在基于 NFS 的存储上

2、VM架构

出于对高可用的支持,本文选择部署VM的机器版本,架构如下 :

img

主要包含以下几个组件:

  • vmstorage:数据存储以及查询结果返回,默认端口为 8482
  • vminsert:数据录入,可实现类似分片、副本功能,默认端口 8480
  • vmselect:数据查询,汇总和数据去重,默认端口 8481
  • vmagent:数据指标抓取,支持多种后端存储,会占用本地磁盘缓存,默认端口 8429
  • vmalert:报警相关组件,不如果不需要告警功能可以不使用该组件,默认端口为 8880

因为本文将VM只作为远程存储使用,所以集群只需要部署vmstorage、vminsert、vmselect组件即可

2、部署VM集群

helm repo add vm https://victoriametrics.github.io/helm-charts/

helm repo update

helm pull vm/victoria-metrics-cluster

tar xf victoria-metrics-cluster-0.9.18.tgz

cd victoria-metrics-cluster

helm install vm . -n monitoring

3、查看VM集群

kubectl get pod -n monitoring |grep vm

vm-victoria-metrics-cluster-vminsert-5644984669-fcqr5       1/1     Running   0              1d
vm-victoria-metrics-cluster-vminsert-5644984669-lmh49       1/1     Running   0              1d
vm-victoria-metrics-cluster-vmselect-0                      1/1     Running   0              1d
vm-victoria-metrics-cluster-vmselect-1                      1/1     Running   0              1d
vm-victoria-metrics-cluster-vmstorage-0                     1/1     Running   0              1d
vm-victoria-metrics-cluster-vmstorage-1                     1/1     Running   0              1d

4、配置prometheus远程存储

在kube-prometheus的manifests中,修改prometheus-prometheus.yaml,在spec字段添加如下内容:

remoteWrite:
  - url: http://vm-victoria-metrics-cluster-vminsert:8480/insert/0/prometheus

重新部署prometheus

kubectl apply -f prometheus-prometheus.yaml

5、配置grafana支持从VM查询数据

进入kube-prometheus的manifests中,修改grafana-dashboardDatasources.yaml文件中datasources.url内容

"url": "http://vm-victoria-metrics-cluster-vmselect:8481/select/0/prometheus"

重新部署grafana-dashboardDatasources.yaml

kubectl apply -f grafana-dashboardDatasources.yaml

在grafana中查看dashboard

图片-1659200124158

可以获取到指标数据,说明配置prometheus远程存储到VM,通过grafana从VM获取数据都是正常的

也可以通过grafana中查看pvc,查看VM的磁盘使用情况

图片-1659200199311

0

评论区