尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

VictoriaMetrics 尝鲜

VictoriaMetrics 尝鲜
📅 发布时间:2026/6/19 8:22:05
简单体验 VictoriaMetrics,使用 Telegraf+VictoriaMetrics+Grafana 的监控架构.

前言

前段时间逛别人的博客看到有对 VictoriaMetrics 的推荐,看了下其特性,感觉还挺有意思,遂自己搭建一个玩玩。

目前我使用过的监控方案有:

  • Zabbix。很多年前简单上手过,当时版本貌似还是 4,印象中性能比较差,接盘一周后就换成了 Prometheus。
  • Prometheus。作为 CNCF 的毕业项目,社区非常成熟,其本身性能也不错,除非有成千上万个节点,否则单点 Prometheus 就够用了。问题是 Prometheus 官方只支持单点,扩展起来不方便。以前个人做过的一个方案就是在 kubernetes 里再部署一个 ceph 来保证数据高可用。还有个问题是不少环境有很严格的防火墙规则,即便内网也只开放必要端口,这样就需要使用 push-gateway。
  • Telegraf + Kafka + InfluxDB。Telegraf 采集数据 push 到 kafka,然后再有个服务去消费 kafka 消息并写到 influxdb。这种架构只解决了上面说的网络问题。我们当时用的是开源版的 InfluxDB,不支持集群部署,而单点 InfluxDB 的性能有点捉急,经常被查崩。
  • Telegraf + Mimir。Telegraf 直接 push 到 Mimir。因为 Mimir 由另一个团队维护,我也不太清楚 mimir 在生产环境的资源消耗情况。我自己在虚拟机上搭建一个 mimir,没什么数据,但感觉还是复杂了点。对于 Grafana 家的东西,除了 Grafana 这个产品,我对 Loki 和 mimir 都没什么好印象。

基于 Prometheus 的架构一般是 pull 模式,需要被监控目标提供一个接口来暴露自身 metrics,市面上的成熟产品大多都有相应的 exporter。而 Telegraf 的架构一般就是 push 模式,不需要对外暴露接口,而且 telegraf 本身就支持很多 input 和 output 的 plugin,常见需求基本都能满足。两种模式各有各的好处,可以根据实际需求来决定。

作为尝鲜,本文将采用 Telegraf + VictoriaMetrics (cluster) + Grafana 的架构,暂时不考虑告警功能。其中 VictoriaMetrics 采用集群部署,也就是分别部署读节点、写节点、存储节点和 auth 节点。(只是分开部署,实际还是 docker-compose 在本地部署)

Versions:

  • Telegraf: 1.35
  • VictoriaMetrics: v1.132.0, cluster 版
  • Grafana: 12.2.0
  • Docker: 29.1.3
  • Docker-compose: v5.0.0

配置 docker-compose

下面的 docker-compose 文件中编排了 6 个服务:

  • vmstorage: 存储节点
  • vminsert: 写节点
  • vmselect: 读节点
  • vmauth: 提供用户认证和读写分离的负载均衡功能
  • telegraf: 数据采集器
  • grafana: 数据可视化

创建好 docker-compose.yaml 文件后,别急着启动,先执行下一步创建一些配置文件。

services:vmstorage-1:image: victoriametrics/vmstorage:v1.132.0-clustercontainer_name: vmstorage-1networks:- monitoringvolumes:- ./monitoring/victoriametrics/vmstorage/ins1/storage:/storage- /etc/localtime:/etc/localtime:rocommand:- "--storageDataPath=/storage"vminsert-1:image: victoriametrics/vminsert:v1.132.0-clustercontainer_name: vminsert-1networks:- monitoringdepends_on:- "vmstorage-1"volumes:- /etc/localtime:/etc/localtime:rocommand:- "--storageNode=vmstorage-1:8400"vmselect-1:image: victoriametrics/vmselect:v1.132.0-clustercontainer_name: vmselect-1networks:- monitoringdepends_on:- "vmstorage-1"command:- "--storageNode=vmstorage-1:8401"#   - "--vmalert.proxyURL=http://vmalert:8880"restart: alwaysvmauth:image: victoriametrics/vmauth:v1.132.0container_name: vmauthnetworks:- monitoringports:- 8427:8427depends_on:- "vmselect-1"volumes:- ./monitoring/victoriametrics/vmauth/config.yml:/etc/vmauth/config.yml:ro- /etc/localtime:/etc/localtime:rocommand:- '--auth.config=/etc/vmauth/config.yml'telegraf:image: telegraf:1.35container_name: telegrafhostname: "debian-41"  # 注意替换, 否则 telegraf 采集的是容器里面的 hostnamevolumes:- ./monitoring/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro- /:/hostfs:ro- /var/run/docker.sock:/var/run/docker.sock- /etc/localtime:/etc/localtime:roenvironment:- HOST_PROC=/hostfs/proc- HOST_ETC=/hostfs/etc- HOST_SYS=/hostfs/sys- HOST_VAR=/hostfs/var- HOST_RUN=/hostfs/run- HOST_MOUNT_PREFIX=/hostfs- 'VM_URL=http://vmauth:8427'- 'VM_USERNAME=telegraf_username'- 'VM_PASSWORD=telegraf_password'- 'VM_DATABASE=victoriametrics'networks:- monitoringdepends_on:- vmauthgrafana:image: grafana/grafana:12.2.0container_name: grafanauser: "1000"  # id -uports:- "3000:3000"networks:- monitoringvolumes:- ./monitoring/grafana/data:/var/lib/grafana- /etc/localtime:/etc/localtime:rodepends_on:- vmauthnetworks:monitoring:name: monitoring

创建配置文件

  1. 先创建一些数据目录和文件
# vmstorage 的数据目录
mkdir -p ./monitoring/victoriametrics/vmstorage/ins1/storage# vmauth 的目录和配置文件
mkdir -p ./monitoring/victoriametrics/vmauth
touch ./monitoring/victoriametrics/vmauth/config.yml# telegraf 的目录和配置文件
mkdir -p ./monitoring/telegraf
touch ./monitoring/telegraf/telegraf.conf# grafana 的数据目录
mkdir -p ./monitoring/grafana/data
## 修改权限,否则 Grafana 启动会报错提示权限不足
chmod -R 777 ./monitoring/grafana/data
  1. 编辑 vmauth 的配置文件 ./monitoring/victoriametrics/vmauth/config.yml。分别配置给 grafana 和 telegraf 的账户及其读写分离的路由规则。
users:- username: "grafana_username"password: "grafana_password"url_map:- src_paths:- "/api/v1/query"- "/api/v1/query_range"- "/api/v1/label/[^/]+/values"- "/api/v1/series"url_prefix: "http://vmselect-1:8481/select/0/prometheus/"- username: "telegraf_username"password: "telegraf_password"url_map:- src_paths:- "/insert/0/prometheus/api/v1/write"url_prefix: "http://vminsert-1:8480/"
  1. 编辑 telegraf 的配置文件 ./monitoring/telegraf/telegraf.conf。完整配置可使用命令来导出 docker run --rm telegraf:1.35 telegraf config > /monitoring/telegraf/telegraf.conf.sample
[global_tags]machinetype = "vmware"[agent]interval = "10s"round_interval = truemetric_batch_size = 1000metric_buffer_limit = 10000collection_jitter = "0s"flush_interval = "10s"flush_jitter = "0s"precision = "0s"quiet = truelogformat = "structured"[[outputs.http]]url = "http://vmauth:8427/insert/0/prometheus/api/v1/write"method = "POST"data_format = "prometheusremotewrite"username = "telegraf_username"password = "telegraf_password"[outputs.http.headers]Content-Encoding = "snappy"[[inputs.cpu]]percpu = truetotalcpu = truecollect_cpu_time = falsereport_active = falsecore_tags = false[[inputs.disk]]ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"][[inputs.diskio]][[inputs.kernel]][[inputs.mem]][[inputs.processes]][[inputs.swap]][[inputs.system]][[inputs.interrupts]][[inputs.kernel_vmstat]][[inputs.linux_sysctl_fs]][[inputs.net]][[inputs.netstat]]

启动

docker-compose up -d

没什么问题的话,使用 docker-compose ps 可以看到这 6 个服务都启动了,如果有的没启动,可以用 docker logs <container_name> --tail 50 来查看日志。

服务启动后,浏览器访问 grafana,配置 victoriametrics 的 datasource。这个 datasource 需要单独安装 plugin,如果在线下载失败,可以手动下载压缩包,解压到 ./monitoring/grafana/data/plugins 目录下。添加 datasource 时,url 填写为 http://vmauth:8427/,然后填写用户名和密码。

补充

  • victoriametrics 官方文档乍一看还挺专业的,但有问题的时候才发现大部分是废话,跟 mimir 有的一拼。
  • docker 运行的 telegraf 不支持很多 plugin,最好还是在 server 上直接运行 telegraf。

本文来自博客园,作者:花酒锄作田,转载请注明原文链接:https://www.cnblogs.com/XY-Heruo/p/19359871

相关新闻

  • 播客批量下载终极指南:Podcast Bulk Downloader全面解析
  • 【科研绘图系列】R语言绘制多种类型图形(heatmap boxplot linechart)
  • Radm1n1ster CN

最新新闻

  • SuiteCRM高危SQL注入漏洞CVE-2024-36412深度剖析与防御实践
  • 鸣潮自动化终极指南:5步轻松实现后台挂机解放双手
  • 宁波海曙/鄞州/江北黄金回收推荐,逸程全城上门,实时金价无套路 - 逸程
  • 成都东西南北四区深度走访|8 家黄金回收门店称重、报价、结算全维度实测 - 奢侈品回收评测
  • 机器学习生产化落地:构建高可靠模型服务的四大支柱
  • 2026天津钻石回收探店记:多门店横向测评+钻石高价变现完整实操攻略 - 名奢变现站

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号