Telegraf 系统指标收集配置教程

Telegraf 是 InfluxData 公司开发的开源指标收集代理,采用插件化架构,拥有超过 300 个输入/输出插件。它可以从系统、数据库、消息队列等各种来源采集指标,并将数据发送到 InfluxDBPrometheus 等多种后端存储。本文将在搬瓦工 VPS 上完成 Telegraf 的安装和配置。

一、安装 Telegraf

1.1 Ubuntu/Debian 安装

wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | tee /etc/apt/sources.list.d/influxdata.list
apt update
apt install telegraf -y

1.2 CentOS 安装

cat > /etc/yum.repos.d/influxdata.repo <<EOF
[influxdata]
name = InfluxData Repository
baseurl = https://repos.influxdata.com/centos/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdata-archive_compat.key
EOF

yum install telegraf -y

1.3 启动服务

systemctl start telegraf
systemctl enable telegraf
systemctl status telegraf

二、基础配置

Telegraf 主配置文件位于 /etc/telegraf/telegraf.conf。可以使用以下命令生成默认配置:

# 生成完整默认配置
telegraf config > /etc/telegraf/telegraf.conf

# 生成包含特定插件的配置
telegraf config --input-filter cpu:mem:disk:net --output-filter influxdb_v2 > /etc/telegraf/telegraf.conf

2.1 全局配置

[agent]
  # 数据采集间隔
  interval = "10s"
  # 数据刷新间隔
  flush_interval = "10s"
  # 主机名
  hostname = "bwg-vps-01"
  # 跳过采集间隔的随机偏移
  round_interval = true

三、输出插件配置

3.1 输出到 InfluxDB 2.x

[[outputs.influxdb_v2]]
  urls = ["http://localhost:8086"]
  token = "YOUR_INFLUXDB_TOKEN"
  organization = "myorg"
  bucket = "monitoring"

3.2 输出到 Prometheus

[[outputs.prometheus_client]]
  listen = ":9273"
  metric_version = 2
  expiration_interval = "60s"

然后在 Prometheus 配置中添加抓取目标:

scrape_configs:
  - job_name: 'telegraf'
    static_configs:
      - targets: ['localhost:9273']

3.3 同时输出到多个目标

[[outputs.influxdb_v2]]
  urls = ["http://localhost:8086"]
  token = "YOUR_TOKEN"
  organization = "myorg"
  bucket = "monitoring"

[[outputs.prometheus_client]]
  listen = ":9273"

四、输入插件配置

4.1 系统基础指标

# CPU 指标
[[inputs.cpu]]
  percpu = true
  totalcpu = true
  collect_cpu_time = false

# 内存指标
[[inputs.mem]]

# 磁盘指标
[[inputs.disk]]
  mount_points = ["/"]
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

# 磁盘 IO
[[inputs.diskio]]

# 网络指标
[[inputs.net]]
  interfaces = ["eth0"]

# 系统负载
[[inputs.system]]

# 进程统计
[[inputs.processes]]

# 交换空间
[[inputs.swap]]

4.2 Nginx 监控

[[inputs.nginx]]
  urls = ["http://localhost/nginx_status"]

需要在 Nginx 配置中启用 stub_status 模块:

location /nginx_status {
    stub_status;
    allow 127.0.0.1;
    deny all;
}

4.3 MySQL 监控

[[inputs.mysql]]
  servers = ["telegraf:password@tcp(127.0.0.1:3306)/?tls=false"]
  gather_table_schema = false
  gather_process_list = true
  gather_info_schema_auto_inc = false

4.4 Redis 监控

[[inputs.redis]]
  servers = ["tcp://localhost:6379"]

4.5 Docker 容器监控

[[inputs.docker]]
  endpoint = "unix:///var/run/docker.sock"
  gather_services = false
  container_names = []
  perdevice = true
  total = true

五、使用独立配置文件

为了便于管理,可以将不同插件的配置拆分到独立文件中:

mkdir -p /etc/telegraf/telegraf.d/

# 系统监控配置
cat > /etc/telegraf/telegraf.d/system.conf <<EOF
[[inputs.cpu]]
  percpu = true
  totalcpu = true

[[inputs.mem]]

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

[[inputs.net]]
  interfaces = ["eth0"]

[[inputs.system]]
EOF

# Nginx 监控配置
cat > /etc/telegraf/telegraf.d/nginx.conf <<EOF
[[inputs.nginx]]
  urls = ["http://localhost/nginx_status"]
EOF

Telegraf 会自动加载 telegraf.d/ 目录下所有 .conf 文件。

六、测试与调试

# 测试配置文件语法
telegraf --config /etc/telegraf/telegraf.conf --test

# 在前台运行查看输出
telegraf --config /etc/telegraf/telegraf.conf --debug

# 测试特定输入插件
telegraf --config /etc/telegraf/telegraf.conf --input-filter cpu --test

# 查看服务日志
journalctl -u telegraf -f

七、Docker 部署 Telegraf

docker run -d \
  --name telegraf \
  --restart unless-stopped \
  --net host \
  -v /etc/telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /proc:/host/proc:ro \
  -v /sys:/host/sys:ro \
  -e HOST_PROC=/host/proc \
  -e HOST_SYS=/host/sys \
  telegraf:latest

八、数据处理与过滤

# 全局标签(添加到所有指标)
[global_tags]
  datacenter = "dc6"
  env = "production"

# 处理器插件:重命名指标
[[processors.rename]]
  [[processors.rename.replace]]
    measurement = "cpu"
    dest = "server_cpu"

# 聚合器插件:计算平均值
[[aggregators.basicstats]]
  period = "60s"
  stats = ["mean", "max", "min"]

九、性能优化

  • 调整采集间隔:对于低优先级指标可增大 interval 减少开销。
  • 批量发送:在输出插件中配置 metric_batch_sizemetric_buffer_limit
  • 精简指标:使用 fieldpassfielddrop 过滤不需要的字段。
[[inputs.cpu]]
  percpu = false
  totalcpu = true
  fieldpass = ["usage_idle", "usage_user", "usage_system"]

十、常见问题

无法连接 InfluxDB

# 检查连通性
curl -I http://localhost:8086/health

# 检查 Token 是否正确
influx auth list --org myorg

Docker 插件无权限

# 将 telegraf 用户添加到 docker 组
usermod -aG docker telegraf
systemctl restart telegraf

总结

Telegraf 是 TIG 监控栈(Telegraf + InfluxDB + Grafana)中的数据采集层,其丰富的插件生态能够覆盖几乎所有的监控场景。选购搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 的循环折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。