
烧烤炉的实时温度如何进监控大盘Telegraf fireboard 输入插件上手【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf烤炉在院子里温度计插在肉上你不想盯手机而是希望温度变化直接进家里的监控系统。Telegraf 的 fireboard 输入插件就是为此设计的它周期性调用 fireboard.io 的 REST API拉取物联网温度计最新上报的温度转成标准指标。整个插件没有额外依赖配置项只有三个。 一次采集能拿到什么先别急着写配置看看 Telegraf fireboard 插件每次采集到底产出什么。一行真实输出长这样Line Protocol 格式fireboard,channel2,hostpatas-mbp,scaleFahrenheit,titletelegraf-FireBoard,uuidb55e766c-b308-49b5-93a4-df89fe31efd0 temperature78.2 1561690040000000000逐段拆开看fireboard测量名measurement插件固定输出这一个channel2探针通道号对应设备上的第几路探头scaleFahrenheit温标这里 API 里的整数 2 被映射成华氏度title/uuid设备名和设备唯一标识host来自 Telegraf 全局配置不是插件产出的temperature78.2唯一的字段float 类型结尾是纳秒级 Unix 时间戳。标签和字段共 41标签含义channel探头通道号scale温标Celcius 或 Fahrenheittitle设备名称uuid设备唯一标识字段含义temperature实时温度单位由 scale 标签标明有两个容易踩的点先说清楚源码里摄氏度的字符串拼写是Celcius标准拼写是Celsius。这是插件沿用下来的原始命名会原样出现在标签值里下游仪表盘做匹配时要按Celcius写别当拼写错误去修正。Fireboard API 只返回实时温度且仅包含一分钟以内上报的数据。设备若一段时间没有上报采集结果就是空的。这是 API 层的硬性限制和插件配置无关。✅ 前置准备先拿到 auth_token插件不用账号密码只认一个 Token。动手前你需要一个 Fireboard 账号温度计已绑定在该账号下在 Fireboard 控制台开通 REST API 功能为账号生成专属鉴权 token。这个 token 就是插件需要的全部凭证填进auth_token配置项即可。⚡ 30 秒跑通 fireboard 输入在 telegraf.conf 中加入下面一段内容与仓库自带的 sample.conf 一致[[inputs.fireboard]] auth_token your-token-here # url https://fireboard.io/api/v1/devices.json # http_timeout 4s不想手改整份配置文件时可以用内置命令只生成包含这个输入的配置telegraf config --input-filter fireboard --output-filter influxdb配置写好后用测试模式一次跑通鉴权、请求、解析三段链路——它执行一次采集并把结果直接打印到终端telegraf --input-filter fireboard --test终端里出现fireboard,channel...这样的行链路就算通了。 三个配置参数速览插件结构体上共三个配置项参数必填默认值生效位置auth_token是无Init()首行校验非空url否https://fireboard.io/api/v1/devices.jsonInit()中为空时补默认值http_timeout否4sInit()中为 0 时补 4s再写入客户端auth_tokenInit()是插件生命周期里的就绪检查第一件事就是拦 Tokenif len(r.AuthToken) 0 { return errors.New(you must specify an authToken) }缺失或留空会直接拒绝启动。Token 在Gather()里每次采集都会用到req.Header.Set(Authorization, Token r.AuthToken)也就是标准的Authorization: Token token请求头鉴权。url默认指向官方 API 地址绝大多数场景不用动这个参数。它存在的意义是Fireboard 哪天更换站点或 API 路径你只需改配置不用碰插件代码。http_timeout取值是带单位的时间字符串比如12s由Init()写入客户端的Timeout字段。还有一个源码细节HTTP 客户端在工厂函数newFireboard()中创建时传输层额外设置了ResponseHeaderTimeout: 3 * time.Second。也就是说请求实际受两个时限约束——响应头最多等 3 秒整个请求 4 秒封顶。网络偏慢时把http_timeout整体调大即可。 数据流拆解从 HTTP 请求到指标一次采集周期就是四步全部在Gather()里完成发请求向url发起 GET请求头带上鉴权 Token。查状态码官方服务成功时固定返回 200。403 被单独处理错误信息直接指向 Token 问题其他非 200 一律报 unexpected status code。解码 JSON响应体是一个 JSON 数组一个元素对应一台设备——一个账号可以绑多台温度计。结构体只取title、uuid、latest_temps三个字段。组装指标gatherTemps()遍历每台设备的latest_temps每条温度记录生成一条指标设备信息进标签温度值进字段通过累加器写出。仓库里的 fireboard_test.go 把这条链路完整复现了一遍用httptest起一个本地模拟服务器返回固定的一段 Fireboard 风格 JSON调用Gather()后断言字段temperature79.9和四个标签全部命中。想自己验证解析行为时这份测试是最直接的参照。 按错误关键词排障日志里的错误说明处理you must specify an authToken启动时配置缺失或为空补上 auth_tokenForbidden, verify your authToken服务端返回 403Token 无效或过期重新生成 Token 并更新配置unexpected status code服务返回了 200/403 以外的状态检查 url 配置与网络状况请求超时4 秒默认超时不够用调大 http_timeout如12s没有指标输出设备最近一分钟内无温度上报确认设备在线上报再用 --test 看原始结果拿不准问题出在哪一段时先跑一次telegraf --input-filter fireboard --test单次采集、不用等周期解析结果直接落在终端。接下来可以做什么把指标接进时序存储InfluxDB、Prometheus 等输出插件加进配置即可fireboard 输出的就是标准 Telegraf 指标。对指标做二次加工docs/CONFIGURATION.md 里描述的name_override、tags、fieldpass/fielddrop等全局配置对这个输入同样生效适合统一改名或按标签过滤。参考注册入口 plugins/inputs/all/fireboard.go一个空导入加构建标签就完成了插件注册其构建约束意味着默认构建和启用inputs.fireboard的自定义构建都会包含它。写自定义采集插件时这个三配置项 一个 Gather的模板值得抄。参考文件fireboard.gofireboard_test.gosample.confREADME.md【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考