You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegraf向InfluxDB2上报异常数据问题求助

问题分析与解决

问题描述

作为Telegraf/InfluxDB2新手,通过Docker Compose搭建了Telegraf、InfluxDB2和Grafana监控环境用于监控Ubuntu云虚拟机。本地Ubuntu笔记本运行正常,但部署到云VM后出现指标异常:

  • load15:系统top/uptime显示0.07,InfluxDB2中为21.39
  • uptime:实际运行约2小时,InfluxDB2中存储值为27177833(约44周)
  • 已用内存:free -h显示590Mi,InfluxDB2中显示95025573888(约87GB,VM仅3GB)
    Docker相关指标工作正常。

原因

你已将宿主机的/sys、/proc、/etc挂载到Telegraf容器的/rootfs目录,但Telegraf的系统类输入插件(如mem、system、cpu等)默认读取容器内部的/proc、/sys路径,而非挂载的/rootfs下的宿主机数据,导致采集到的是Telegraf容器自身的指标,而非宿主机的真实数据。

解决方法

修改telegraf.conf,给所有系统类输入插件添加rootfs = "/rootfs"配置,指定插件读取挂载的宿主机文件系统路径:

[global_tags]

[agent]
  interval = "10s"
  round_interval = true
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  flush_buffer_when_full = true
  collection_jitter = "0s"
  flush_interval = "10s"
  flush_jitter = "0s"
  debug = false
  quiet = false
  hostname = "LoubVM"

[[outputs.influxdb_v2]]
  urls = ["http://influxdb:8086"]
  token = "my-token"
  organization = "myorg"
  bucket = "mybucket"

[[inputs.statsd]]
  protocol = "udp"
  max_tcp_connections = 250
  tcp_keep_alive = false
  service_address = ":8125"
  delete_gauges = true
  delete_counters = true
  delete_sets = true
  delete_timings = true
  percentiles = [90]
  metric_separator = "_"
  parse_data_dog_tags = false
  allowed_pending_messages = 10000
  percentile_limit = 1000

[[inputs.cpu]]
  percpu = true
  totalcpu = true
  rootfs = "/rootfs"

[[inputs.disk]]
  mount_points = ["/"]
  rootfs = "/rootfs"

[[inputs.diskio]]
  rootfs = "/rootfs"

[[inputs.kernel]]
  rootfs = "/rootfs"

[[inputs.mem]]
  rootfs = "/rootfs"

[[inputs.processes]]
  rootfs = "/rootfs"

[[inputs.swap]]
  rootfs = "/rootfs"

[[inputs.system]]
  rootfs = "/rootfs"

[[inputs.net]]
  rootfs = "/rootfs"

[[inputs.netstat]]
  rootfs = "/rootfs"

[[inputs.interrupts]]
  rootfs = "/rootfs"

[[inputs.linux_sysctl_fs]]
  rootfs = "/rootfs"

[[inputs.docker]]
  endpoint = "unix:///var/run/docker.sock"
  gather_services = false
  source_tag = false
  container_name_include = []
  container_name_exclude = []
  timeout = "5s"
  total = false
  docker_label_include = []
  docker_label_exclude = []

修改后重启Telegraf容器:

docker-compose restart telegraf

额外验证

可以临时开启Telegraf的debug模式,确认采集路径是否正确:

  1. 修改telegraf.conf中debug = true
  2. 重启容器后查看日志:docker logs telegraf
  3. 检查日志中是否显示读取的是/rootfs/proc、/rootfs/sys下的文件

内容的提问来源于stack exchange,提问作者yannick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:35:20