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模式,确认采集路径是否正确:
- 修改
telegraf.conf中debug = true - 重启容器后查看日志:
docker logs telegraf - 检查日志中是否显示读取的是
/rootfs/proc、/rootfs/sys下的文件
内容的提问来源于stack exchange,提问作者yannick
相关产品推荐
相关产品推荐

