推荐使用系统包管理器安装telegraf:debian/ubuntu需添加influxdata仓库后apt安装;centos/rhel 7/8需创建influxdb.repo配置文件。

一、使用系统包管理器安装
在主流Linux发行版中,通过官方软件源或InfluxData提供的仓库安装Telegraf是最稳定且易于维护的方式。该方法自动处理依赖关系,并支持后续的yum/apt升级机制。
1、对于Debian/Ubuntu系统,执行以下命令添加InfluxData仓库并安装:
sudo apt update && sudo apt install -y software-properties-common
sudo add-apt-repository "deb https://repos.influxdata.com/debian stable main"
sudo apt update && sudo apt install telegraf
2、对于CentOS/RHEL 7/8系统,创建仓库配置文件:
sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
3、运行安装命令:
sudo yum install telegraf
4、启动并启用服务:
sudo systemctl daemon-reload
sudo systemctl enable telegraf
sudo systemctl start telegraf
二、使用预编译二进制包安装
当目标系统无网络访问权限、无法添加第三方仓库,或需指定特定版本时,可直接下载官方发布的DEB/RPM/TAR.GZ包进行离线部署。此方式不依赖包管理器,适用于定制化环境或容器场景。
1、创建专用用户以最小权限运行Telegraf:
sudo useradd -r -s /bin/false telegraf
2、下载对应架构的最新稳定版tar.gz包(以amd64为例):
sudo mkdir -p /opt/telegraf
cd /tmp && curl -sLO https://dl.influxdata.com/telegraf/releases/telegraf-1.33.3_linux_amd64.tar.gz
sudo tar xzf telegraf-1.33.3_linux_amd64.tar.gz -C /opt/telegraf --strip-components=1
3、设置文件所有权与路径链接:
sudo chown -R telegraf:telegraf /opt/telegraf
sudo ln -sf /opt/telegraf/usr/bin/telegraf /usr/local/bin/telegraf
4、复制默认配置并调整属主:
sudo cp /opt/telegraf/etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf
sudo chown telegraf:telegraf /etc/telegraf/telegraf.conf
5、手动创建systemd服务单元文件(/etc/systemd/system/telegraf.service):
[Unit]
Description=The plugin-driven server agent for reporting metrics into InfluxDB
Documentation=https://github.com/influxdata/telegraf
After=network.target
[Service]
User=telegraf
ExecStart=/usr/local/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d
Restart=on-failure
RestartSec=30
EnvironmentFile=-/etc/default/telegraf
[Install]
WantedBy=multi-user.target
6、启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable telegraf
sudo systemctl start telegraf
三、使用Docker容器部署
在已部署Docker引擎的Linux主机上,采用容器方式运行Telegraf可实现环境隔离、快速回滚及配置即代码管理。容器内运行无需修改宿主机系统,适合CI/CD集成或临时监控任务。
1、拉取官方Telegraf镜像:
docker pull telegraf:1.33.3
2、准备本地配置目录:
mkdir -p $HOME/telegraf/config
curl -s https://raw.githubusercontent.com/influxdata/telegraf/master/etc/telegraf.conf > $HOME/telegraf/config/telegraf.conf
3、编辑$HOME/telegraf/config/telegraf.conf,启用所需输入插件(如[[inputs.cpu]])并配置输出目标(如[[outputs.influxdb_v2]]);特别注意将urls设为宿主机可访问的InfluxDB地址(例如http://host.docker.internal:8086)。
4、运行容器并挂载配置与主机资源:
docker run -d \
--name telegraf \
--restart unless-stopped \
--net host \
-v $HOME/telegraf/config/telegraf.conf:/etc/telegraf/telegraf.conf:ro \
-v /proc:/proc:ro \
-v /sys:/sys:ro \
-v /var/run/utmp:/var/run/utmp:ro \
-v /etc:/hostfs/etc:ro \
telegraf:1.33.3
5、验证容器日志是否正常采集:
docker logs telegraf | head -20
四、配置核心输入插件
Telegraf默认仅启用基础系统指标采集,需显式启用并调优输入插件才能满足进阶监控需求。每个插件均支持细粒度参数控制,如采集间隔、标签过滤与性能阈值。
1、编辑主配置文件:
sudo nano /etc/telegraf/telegraf.conf
2、取消注释并配置CPU插件,启用每核统计与活跃状态报告:
[[inputs.cpu]]
percpu = true
totalcpu = true
report_active = true
3、启用磁盘I/O监控,排除临时挂载点并限制采集深度:
[[inputs.diskio]]
devices = ["sda", "nvme0n1"]
skip_serial_number = true
4、添加进程监控,聚焦于高资源消耗服务:
[[inputs.processes]]
process_names = ["nginx", "mysql", "redis-server"]
5、启用内核指标,捕获中断与上下文切换压力:
[[inputs.kernel]]
6、保存配置后重启服务以生效:
sudo systemctl restart telegraf
五、配置多输出目标与数据路由
单一Telegraf实例可同时向多个后端写入数据,通过output插件组合与tag路由策略实现监控数据分发。此能力适用于灾备上报、分级存储或跨平台指标同步等进阶场景。
1、在配置文件中保留默认[[outputs.influxdb_v2]]区块,并补充Graylog GELF输出:
[[outputs.gelf]]
address = "udp://192.168.10.50:12201"
tagexclude = ["host", "path"]
2、为不同输出配置独立的metric过滤规则:在[[outputs.influxdb_v2]]下添加
namepass = ["cpu", "mem", "disk"]
在[[outputs.gelf]]下添加
namedrop = ["swap", "kernel"]
3、配置全局agent参数以协调多输出负载:
[agent]
interval = "10s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
flush_interval = "10s"
4、验证各输出是否接收数据:
sudo journalctl -u telegraf -n 50 --no-pager | grep -E "(influxdb|gelf)"
5、若使用InfluxDB v2.x,确保已在配置中正确填写token、organization和bucket字段,否则写入将被拒绝。










