控:從最小配置到 K8s 部署的完整指南)
20 分鐘搭好 Telegraf 監(jiān)控從最小配置到 K8s 部署的完整指南【免費下載鏈接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.項目地址: https://gitcode.com/GitHub_Trending/te/telegraf如果你的服務(wù)器指標散落在各處想統(tǒng)一寫進 InfluxDB 卻總有缺漏和重復你需要一條穩(wěn)定的 Telegraf 監(jiān)控采集鏈路。Telegraf 是 InfluxData 開源的采集代理內(nèi)置 300 多個輸入插件負責把系統(tǒng)、中間件、云服務(wù)的指標收上來、洗一遍、再寫進時序數(shù)據(jù)庫。整條鏈路只有三段——輸入、處理、輸出配置全是 TOML看完本文你就能自己改。先想清楚指標從哪來往哪去寫配置前先答兩個問題指標從哪來CPU、磁盤、MySQL、Docker……又要寫到哪去InfluxDB、Kafka、文件、HTTP……。Telegraf 只管采集和傳輸不負責存儲和畫圖——那是 InfluxDB 和 Grafana 的活。所以定位要想清楚它是傳送帶不是倉庫。如果你熟悉 Prometheus 的拉取模型可以把 Telegraf 理解成反向的它主動采、主動推天然適合統(tǒng)一寫進時序庫的場景。數(shù)據(jù)在 Telegraf 內(nèi)部按三段流動段作用配置節(jié)輸入插件采集指標[[inputs.*]]處理器過濾、改名、轉(zhuǎn)換[[processors.*]]輸出插件寫入目的地[[outputs.*]]后面所有配置都是往這三段里填東西。五分鐘裝好容器起步最省事首選 Docker一行命令拉鏡像docker pull telegraf容器方式的好處升級就是換個鏡像版本配置掛在卷上不用動。習慣包管理的讀者配好 InfluxData 源后用 apt 或 yum 安裝直接帶系統(tǒng)服務(wù)。需要改源碼或編自定義插件時克隆倉庫git clone https://gitcode.com/GitHub_Trending/te/telegraf cd telegraf make build寫最小配置跑通第一條采集鏈路第一個目標只有一個本機 CPU 數(shù)據(jù)進 InfluxDB。telegraf.conf 只寫關(guān)鍵項[agent] interval 10s # 全局采集間隔 metric_batch_size 1000 # 單次批量發(fā)送的指標數(shù) [[inputs.cpu]] percpu true # 按核心分別采集 [[outputs.influxdb_v2]] urls [http://localhost:8086] token $INFLUX_TOKEN # 環(huán)境變量注入不落盤 organization my-org bucket telegraf把配置掛進容器跑起來docker run -d --name telegraf \ -e INFLUX_TOKEN你的token \ -v $(pwd)/telegraf.conf:/etc/telegraf/telegraf.conf:ro \ telegraf:ro讓配置在容器內(nèi)只讀token 走環(huán)境變量不進配置文件。啟動后先跑驗證命令telegraf --config telegraf.conf --test它會完整采一輪把指標打到終端但不寫庫。這是判斷配置活沒活的最快手段。三個參數(shù)值得記住interval是全局采集間隔插件沒單獨指定時就按它來。metric_batch_size是攢夠多少條發(fā)一次太小寫庫碎太大占內(nèi)存。$INFLUX_TOKEN演示了環(huán)境變量替換密鑰不用進版本庫。驗證通過后再到 InfluxDB 里查一下 bucket確認 bucket 里真有數(shù)據(jù)點落下來這條采集鏈路就算通了。數(shù)據(jù)進庫前先洗一遍插件產(chǎn)出的字段通常比你想的多一個 mem 插件就有十幾個。生產(chǎn)配置先做兩件事用 fieldpass 留白名單[[inputs.mem]] fieldpass [used_percent, available] # 只留要看的字段用 processor 改字段名[[processors.rename]] [[processors.rename.replace]] field usage_idle dest cpu_idle_percent處理器夾在輸入和輸出之間執(zhí)行rename、filter、converter、regex 都有去 plugins/processors/ 目錄翻一遍就有數(shù)。字段多的插件先過濾數(shù)據(jù)庫的寫入量和存儲壓力都直接降下來。按場景調(diào)優(yōu)批量、緩沖與集群輸出走 HTTP 時記得換成 HTTPS 并配好 TLS 參數(shù)token 不要以明文提交到任何倉庫。下面三個場景按需取用。高吞吐錯開峰值攢大批[agent] metric_batch_size 5000 metric_buffer_limit 50000 # 內(nèi)存最多緩存的指標數(shù) flush_interval 30s collection_jitter 5s # 采集間隔隨機偏移collection_jitter最容易被忽略集群里幾十個實例不加隨機偏移所有采集峰值都會擠在同一秒數(shù)據(jù)庫瞬時壓力翻倍。怕丟數(shù)據(jù)開磁盤緩沖[[outputs.influxdb_v2]] buffer_strategy disk buffer_directory /var/lib/telegraf/buffer默認指標只緩存在內(nèi)存進程一重啟就丟。磁盤緩沖后數(shù)據(jù)庫宕機十分鐘數(shù)據(jù)先落盤恢復后補發(fā)。代價是額外的磁盤 IO重要鏈路才開。以 DaemonSet 方式部署到 K8sConfigMap 里放配置apiVersion: v1 kind: ConfigMap metadata: { name: telegraf-config } data: telegraf.conf: | [agent] interval 10sDaemonSet 讓每個節(jié)點跑一個實例apiVersion: apps/v1 kind: DaemonSet metadata: { name: telegraf } spec: selector: { matchLabels: { app: telegraf } } template: metadata: { labels: { app: telegraf } } spec: containers: - name: telegraf image: telegraf:latest volumeMounts: - { name: cfg, mountPath: /etc/telegraf } volumes: - { name: cfg, configMap: { name: telegraf-config } }想看容器指標配置里加[[inputs.docker]]再把/var/run/docker.sock掛進容器。排錯三步走先懷疑配置再看輸出固定定位順序跑telegraf --config xxx.conf --test。有指標出來問題在輸出端沒有問題在配置。[agent]里打開debug true看啟動日志哪些插件加載了、哪些輸出起來了。盯輸出插件的報錯連接拒絕、401、TLS 證書錯誤報錯信息基本能直接指向原因。服務(wù)跑在系統(tǒng)里時用journalctl -u telegraf -f看實時日志不確定某個插件是否在你的構(gòu)建里用telegraf -usage列出全部可用插件核對一下。?? 三個高頻坑插件名必須和插件目錄名一致且小寫。寫成[[inputs.Cpu]]會靜默不加載日志里也看不到明顯報錯。namepass、fieldpass寫太嚴數(shù)據(jù)被全過濾光。先撤掉過濾看有沒有數(shù)據(jù)再逐項加回。輸出端出現(xiàn)字面量$INFLUX_TOKEN而不是變量值說明環(huán)境變量沒導出寫庫全部 401。規(guī)劃下一步讓監(jiān)控跑得更久找插件瀏覽 plugins/inputs/ 目錄每個插件目錄里都有帶注釋的 sample.conf比如 plugins/inputs/cpu/sample.conf復制出來改參數(shù)就能用。改完先驗任何配置改動都先跑telegraf --test配置語法細節(jié)看 docs/。自監(jiān)控加一個[[inputs.internal]]Telegraf 會匯報自己的內(nèi)存、插件狀態(tài)和發(fā)送統(tǒng)計監(jiān)控本身也進庫。復雜轉(zhuǎn)換字段映射寫不動 TOML 時看 plugins/processors/ 里的 starlark 處理器直接在配置里寫腳本?!久赓M下載鏈接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.項目地址: https://gitcode.com/GitHub_Trending/te/telegraf創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考