
Telegraf 全链路指标采集从 inputs 到 outputs 一次讲透【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegrafTelegraf 把采指标—洗数据—写库整条链路压进一个常驻进程。一份 TOML 配置无需任何附加组件指标就从你的机器流进时序数据库。 Telegraf 数据流是怎么跑的Telegraf 是个常驻进程按固定节奏循环。input 插件负责采集processor 和 aggregator 负责清洗与聚合output 负责写出。每个插件都有内置 buffer写不出去时数据先落缓冲不直接丢。⚡ 最小可运行路径三步出第一条数据选一条安装路径方式命令适合场景包管理器deb/rpm添加 InfluxData 源后apt install telegraf/dnf install telegraf生产常驻systemd 托管Dockerdocker run -d -v $(pwd)/telegraf.conf:/etc/telegraf/telegraf.conf:ro telegraf快速验证、容器环境源码构建git clone https://gitcode.com/GitHub_Trending/te/telegraf后make build要定制编译或读源码生成配置并跑一个测试周期这一步只写CPU 输入 文件输出跑一轮测试周期不接数据库# 生成配置只留 cpu 一个 input telegraf config --input-filter cpu telegraf.conf cat telegraf.conf EOF [[outputs.file]] files [stdout] EOF # 跑一个采集周期数据直接打到终端 telegraf --config telegraf.conf --test终端出现cpu,host... usage_idlexx,usage_userxx ...这类行说明整条链路已经通了。 配置流水线输入 → 处理 → 输出按数据流顺序过一遍。每个环节只给一份生产可用的最小配置。输入端少采比多采更省钱[agent] interval 10s # 采集节拍全局默认插件可单独覆盖 collection_jitter 2s # 各插件错开起跑避免同一瞬间一起打满 sysfs metric_batch_size 1000 # 单次写入的最大指标条数 metric_buffer_limit 10000 # 每个 output 最多积压多少条 [global_tags] dc us-east-1 # 一次声明全部指标自动带上 [[inputs.cpu]] percpu true # 分核指标定位单核打满时省得再补采 totalcpu true collect_cpu_time false # 原始时秒值几乎没人用关掉处理端把噪音挡在库外processor 插在采集和写出之间改完再落库。说白了过滤放这里比放输出端便宜得多[[processors.filter]] namepass [cpu, mem] fieldpass [usage_*, used_percent] drop_original true # 不匹配的直接丢弃而不是留着继续往下走输出端批量 缓冲 环境变量[[outputs.influxdb_v2]] urls [http://influxdb.internal:8086] token ${INFLUX_TOKEN} # 环境变量注入token 不落在配置文件里 organization ops bucket system timeout 5s # 下游慢时快速失败别拖死整个 flush content_encoding gzip # 批量数据压缩传输网络占比立刻下来直接影响性能与稳定性的参数参数作用什么时候调metric_batch_size单次写入的指标条数上限下游吃压力就调小想省网络就调大metric_buffer_limit每个 output 的积压上限下游常抖、怕丢数就调大代价是内存flush_interval/flush_jitter刷新节奏 随机抖动多实例同机房部署必开 jitter 错峰写collection_jitter采集侧错峰插件多、机器轻时必开buffer_strategy disk缓冲从内存换成落盘下游可能长时间不可用、对数据完整性敏感️ 两个真实场景走一遍场景一物理机接入监控噪音字段先砍掉背景一批数据库服务器只关心利用率和内存原始计数值没人在乎。[agent] interval 10s collection_jitter 2s [global_tags] dc us-east-1 role db [[inputs.cpu]] percpu true totalcpu true [[inputs.mem]] fieldpass [used, available, used_percent] [[processors.filter]] fieldpass [usage_*, used_percent, available] drop_original true # 砍掉 time_* 这类原始计数 [[outputs.influxdb_v2]] urls [http://influxdb.internal:8086] token ${INFLUX_TOKEN} organization ops bucket system验证查一条指标有值即链路健康。influx query SELECT usage_idle FROM system.autogen.cpu WHERE time now() - 5m场景二K8s 集群每节点一份采集背景集群里每个节点都要采系统指标。用 DaemonSet 保证每节点一份ServiceAccount 令牌自动轮换不落盘。apiVersion: apps/v1 kind: DaemonSet metadata: name: telegraf spec: selector: matchLabels: { app: telegraf } template: metadata: labels: { app: telegraf } spec: serviceAccountName: telegraf containers: - name: telegraf image: telegraf:latest volumeMounts: - { name: cfg, mountPath: /etc/telegraf, readOnly: true } volumes: - name: cfg configMap: name: telegraf-config对应的 ConfigMap 里只放核心段[agent] interval 10s flush_jitter 3s # 节点多错开写库避免尖峰 [[inputs.system]] [[inputs.disk]] ignore_fs [tmpfs, devtmpfs, overlay] [[outputs.influxdb_v2]] urls [http://influxdb.monitoring.svc:8086] token ${INFLUX_TOKEN} # 经 Secret 挂载注入 organization k8s bucket node-metrics验证kubectl get ds telegraf -o wide每节点 Ready再用场景一的查询命令按host标签过滤一个节点有数据即全链路正常。✅ 上生产前必查清单✅采集错峰collection_jitter给 1~2s防止几十个插件同一秒挤爆 IO✅写入节奏flush_jitter给 2~5s多实例同机房时下游压力曲线立刻变平✅积压策略下游常抖就调大metric_buffer_limit怕断电丢数buffer_strategy disk把缓冲落盘✅磁盘缓冲目录buffer_directory指向数据盘别挤占系统盘✅日志与轮转logfile、logfile_rotation_interval 24h、logfile_rotation_max_size 100MB、logfile_rotation_max_archives 7✅排障三板斧改完配置先telegraf --config telegraf.conf --test怀疑哪段出问题加[agent] debug true日志里搜Wrote和failed to write判断写入是否成功✅自监控挂一个[[inputs.internal]]agent 自己的 CPU、内存、缓冲水位一目了然✅密钥不落盘token、密码一律走环境变量${VAR}或 secretstores 插件配置文件里不出现明文凭据 下一步想看 agent 每个参数的含义和默认值docs/CONFIGURATION.md找业务对口的 input/output 插件plugins/inputs/ 和 plugins/outputs/写 processor 之前先读规范docs/PROCESSORS.md想搞清楚缓冲丢数逻辑models/buffer.go先把最小链路跑通再按需往流水线上加插件。Telegraf 的上限就是你配置的用心程度。【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考