Telegraf 系统指标收集配置教程
Telegraf 是 InfluxData 公司开发的开源指标收集代理,采用插件化架构,拥有超过 300 个输入/输出插件。它可以从系统、数据库、消息队列等各种来源采集指标,并将数据发送到 InfluxDB、Prometheus 等多种后端存储。本文将在搬瓦工 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_size和metric_buffer_limit。 - 精简指标:使用
fieldpass和fielddrop过滤不需要的字段。
[[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% 的循环折扣。