ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Telegraf 输出插件 Warp10:将指标以 GTS 格式写入 Warp 10 时序平台

Telegraf 输出插件 Warp10:将指标以 GTS 格式写入 Warp 10 时序平台 Telegraf 输出插件 Warp10将指标以 GTS 格式写入 Warp 10 时序平台【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf本篇技术指南围绕 Telegraf 官方输出插件outputs.warp10展开讲解如何将采集、聚合后的指标数据以 Warp 10 的 Geo Time SeriesGTS输入格式批量写入 Warp 10 服务覆盖插件配置参数、令牌与密钥管理、数据格式转换规则类名拼接、字段类型映射、微秒时间戳、TLS 与错误处理等实战细节。阅读完本文后你将能够独立完成 Warp 10 输出端的接入与排障并理解该插件在 plugins/outputs/warp10/warp10.go 中的底层实现逻辑。插件概览outputs.warp10是 Telegraf 的官方输出插件自 Telegraf v1.14.0 起引入职责是把 Telegraf 的度量metric转换为 Warp 10 平台支持的 GTS 输入格式并通过其update接口写入。它适用于需要将监控数据投递到 Warp 10 时序数据库做长期存储、分析与查询的场景插件元数据标记为cloud云服务、datastore数据存储类别支持全平台运行。从源码看插件的注册入口位于 plugins/outputs/all/warp10.go通过outputs.Add(warp10, ...)在 warp10.go 中完成注册因此只需在配置中声明[[outputs.warp10]]即可启用。全局配置选项与密钥存储支持与所有 Telegraf 插件一样outputs.warp10支持额外的全局与插件级配置例如修改指标、标签、字段创建别名以及配置插件执行顺序。相关说明可参考 CONFIGURATION.md 与 插件配置通用说明。此外该插件的token选项支持从密钥存储secret store中引用密钥而不必将明文写入配置文件。引用格式为{secret store id:secret name}其中secret store id是你在[[secretstores.*]]中定义的唯一 IDsecret name是密钥名两者仅能由大小写字母、数字和下划线组成。具体用法可参考 CONFIGURATION.md 中的 Secret store secrets 章节。例如[[secretstores.os]] id local_secrets [[outputs.warp10]] warp_url https://warp10.example.com token {local_secrets:warp10_write_token}插件配置详解以下为插件完整配置示例即 sample.confREADME 亦内嵌同一示例# Write metrics to Warp 10 [[outputs.warp10]] # Prefix to add to the measurement. prefix telegraf. # URL of the Warp 10 server warp_url http://localhost:8080 # Write token to access your app on warp 10 token Token # Warp 10 query timeout # timeout 15s ## Print Warp 10 error body # print_error_body false ## Max string error size # max_string_error_size 511 ## Optional TLS Config # tls_ca /etc/telegraf/ca.pem # tls_cert /etc/telegraf/cert.pem # tls_key /etc/telegraf/key.pem ## Use TLS but skip chain host verification # insecure_skip_verify false各配置项说明如下配置项类型默认值说明prefixstringtelegraf.添加到 measurement 名称前的字符串前缀最终会参与 GTS 类名class的拼接。warp_urlstringhttp://localhost:8080Warp 10 服务器地址。写入时插件会在此 URL 基础上拼接/api/v0/update作为 HTTP 端点。tokenstring空访问 Warp 10 应用的写入令牌Write Token通过X-Warp10-Token请求头发送支持 secret store 引用。timeoutduration15sWarp 10 查询超时时间。若配置为0或未设置源码 warp10.go 会将其重置为默认的15s见常量defaultClientTimeout。print_error_bodyboolfalse请求失败时是否打印 Warp 10 返回的错误响应体。开启后错误信息更详细便于定位令牌、配额类问题。max_string_error_sizeint511错误字符串的最大长度。源码 Init() 会在该值小于等于 0 时重置为 511。tls_castring空自定义 CA 证书路径PEM 格式用于校验服务端证书。tls_cert/tls_keystring空客户端证书与私钥路径用于 mTLS 双向认证场景。insecure_skip_verifyboolfalse设置为true时跳过证书链与主机名校验仅在可信网络中使用。上述 TLS 配置项来自插件内嵌的tls.ClientConfig结构在 createClient() 中通过ClientConfig.TLSConfig()统一解析生成http.Transport的TLSClientConfigHTTP 客户端同时启用了环境代理http.ProxyFromEnvironment并将整个请求的Timeout设置为timeout值。输出格式Geo Time SeriesGTS插件将指标转换为 Warp 10 的 Geo Time Series 输入格式后发送。每条 GTS 记录形如timestamp// class{labels} value其生成逻辑集中在 GenWarp10Payload()具体规则如下。类名class的构成GTS 的 class 名由三部分拼接而成连接符为点号.prefix measurement 名称 . field key例如默认配置prefix telegraf.下输入cpu usage的value字段会生成类名telegraf.cpu.usage。源码中对应实现为fmt.Sprintf(%s%s, w.Prefix, mm.Name().field.Key)。标签labels的处理指标的所有 tag 会经过 URL 编码url.QueryEscape后以keyvalue形式写入 GTS 的标签集合中并追加一个固定的sourcetelegraf标签最后按标签名排序输出。相关实现见 buildTags()测试用例 TestWriteWarp10EncodedTags 验证了包含{、,等特殊字符的标签会被正确编码如encoded%7Btagvalue1%2Cvalue2。字段类型映射GTS 格式原生支持 Telegraf 的整数、浮点数、布尔值与字符串类型转换逻辑见 buildValue()int64十进制整数。float64通过 floatToString() 处理默认保留 6 位小数NaN、Infinity、-Infinity分别映射为NaN、Infinity、-InfinityWarp 10 支持这三种特殊浮点值。对应的测试用例见 TestWriteWarp10ValueNaN、TestWriteWarp10ValueInfinity。booltrue/false。string以单引号包裹内部单引号会被转义为\strings.ReplaceAll(p, , \\)。uint64无符号整数超出有符号 64 位上限2^63-1时会被截断cap为该最大值避免溢出。其他类型如 byte 数组会返回unsupported type错误该字段被跳过并记录日志不影响其余字段写入。时间戳精度时间戳以微秒microsecond精度发送源码通过mm.Time().UnixNano() / 1000将纳秒时间戳换算为微秒。测试用例中的1257894000000000即微秒级时间戳。写入流程与错误处理插件的写入入口是 Write()整体流程如下调用GenWarp10Payload将批量指标生成 GTS 文本负载多条记录以\n连接若负载为空则直接返回不发起请求。以POST方式请求warp_url /api/v0/update请求体 Content-Type 为text/plain。从配置的token支持 secret store取出写入令牌放入X-Warp10-Token请求头使用后立即销毁内存中的令牌副本token.Destroy()。发送请求并检查响应状态码非200 OK时按print_error_body与max_string_error_size决定返回错误信息。错误信息的归类逻辑位于 HandleError()它会从 HTML 错误体中提取常见错误并转换为友好消息包括Invalid token令牌无效Write token missing缺少写入令牌Token Expired令牌已过期Token revoked令牌已被吊销Exceeded Monthly Active Data Streams limit超出月度活跃数据流配额Exceeded Daily Data Points limit超出每日数据点配额Application suspended or closed应用被暂停或关闭broken pipe连接中断其他情况返回原始响应体长度超过max_string_error_size时截断空响应体返回Empty return。上述归类均有对应的单元测试覆盖见 TestHandleWarp10Error。与 Warp 10 对接的最小实践要在实际环境中使用该插件可按以下步骤进行在 Telegraf 配置文件中声明一个输入插件如[[inputs.cpu]]与[[outputs.warp10]]。在 Warp 10 平台创建应用并获取 Write Token生产环境建议通过 secret store 引用令牌。将warp_url指向 Warp 10 的读写地址如https://warp10.example.com本地部署则为http://localhost:8080若使用 HTTPS 且为自签证书配置tls_ca或按需开启insecure_skip_verify。启动 Telegraf 后可在 Warp 10 控制台使用 WarpScript 的FETCH查询验证数据是否写入类名即为prefix measurement . field。小结outputs.warp10插件通过 GTS 输入格式将 Telegraf 指标高效写入 Warp 10其核心设计点包括前缀测量名字段名组成类名、URL 编码标签并追加sourcetelegraf、微秒时间戳、完整的类型映射含无符号整数截断与特殊浮点值以及面向常见令牌/配额错误的友好提示。如需深入源码细节可继续阅读 plugins/outputs/warp10/warp10.go 及其测试文件 plugins/outputs/warp10/warp10_test.go并结合 docs/CONFIGURATION.md 了解全局配置与密钥存储的通用机制。【免费下载链接】telegrafAgent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data.项目地址: https://gitcode.com/GitHub_Trending/te/telegraf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表