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