
Fluent Bit 向 OneUptime 上报遥测数据OpenTelemetry 输出插件配置与本地验证实战【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime本文以 OneUptime 官方文档 Fluent Bit 遥测接入指南 为核心完整讲解如何使用 Fluent Bit 的opentelemetry输出插件将来自日志、指标、链路的数据通过 OpenTelemetry HTTP 协议上报到 OneUptime 的 OTLP HTTP Collector并结合仓库中 FluentBit 示例配置 与 FluentBit 目录说明 给出可复制、可验证的完整配置、自托管变体以及本地端到端测试方法。读完本文你可以独立完成从创建遥测接入 Token、编写fluent-bit.yaml、到容器化运行并 curl 验证日志入库的全过程。为什么选择 Fluent Bit 作为遥测接入网关OneUptime 提供标准的 OpenTelemetry HTTP 接入端点/otlp/v1/metrics、/otlp/v1/logs、/otlp/v1/traces。Fluent Bit 恰好内置了opentelemetry输出插件可以将 Fluent Bit 管道中收集到的数据封装为 OTLP 格式并直接发送到该端点因此无需在应用侧额外引入 OTel SDK即可把“Fluent Bit 能采集的一切”接入 OneUptime。官方文档列出了 Fluent Bit 支持的典型数据源常见场景包括DockerSyslogApacheNginxMySQLPostgreSQLMongoDBNodeJSRubyPythonJavaPHPGoRust以及更多来源。这意味着只要数据源有对应的 Fluent Bit 输入插件就能以同一套输出配置汇入 OneUptime接入成本很低。前置准备账号、项目与遥测接入 Key文档给出的接入前置步骤共有四步在系统上安装 Fluent Bit按照 Fluent Bit 官方安装文档完成安装二进制、包管理器或容器方式均可。注册 OneUptime 账号创建免费账号。需要注意账号本身免费但日志摄入log ingestion属于付费功能具体价格以官方定价页为准。创建 OneUptime 项目登录后从 OneUptime 仪表盘创建一个 Project。创建遥测摄入 TokenTelemetry Ingestion Key在导航栏点击 Products再点击 Project Settings在 Telemetry Ingestion Key 页面点击 Create Ingestion Key 创建 Token创建后点击 View 查看 Token 值。该 Token 就是后续 Fluent Bit 配置中x-oneuptime-token请求头的值是 OneUptime 识别数据归属的核心凭证。核心配置opentelemetry 输出插件将 Fluent Bit 的输出配置添加到 Fluent Bit 配置文件通常位于/etc/fluent-bit/fluent-bit.yaml的outputs段。文档给出的官方推荐配置如下outputs: - name: stdout match: * - name: opentelemetry match: * host: oneuptime.com port: 443 metrics_uri: /otlp/v1/metrics logs_uri: /otlp/v1/logs traces_uri: /otlp/v1/traces tls: On header: - x-oneuptime-token YOUR_TELEMETRY_INGESTION_TOKEN各参数的作用与取值说明参数取值示例说明nameopentelemetry输出插件名固定为 Fluent Bit 的 OpenTelemetry 输出match*匹配所有输入标签如需只转发部分数据可改成具体 taghostoneuptime.comOneUptime 公网端点自托管时替换为你的实例域名port443公网 HTTPS 为 443自托管 HTTP 部署时通常为 80metrics_uri/otlp/v1/metricsOTLP metrics 上报路径logs_uri/otlp/v1/logsOTLP logs 上报路径traces_uri/otlp/v1/tracesOTLP traces 上报路径tlsOn启用 TLS自托管纯 HTTP 部署时该字段不需要headerx-oneuptime-token Token携带前置步骤创建的遥测摄入 Token除了opentelemetry输出外文档示例保留了stdout输出match: *便于在本地终端直接观察正在被转发的数据这是排查管道问题时的实用技巧。输入侧必配opentelemetry_envelope 与 service.name文档特别强调必须确保输入段配置了opentelemetry_envelope处理器。它负责把 Fluent Bit 的日志记录包装成 OTLP 日志封套envelope是opentelemetry输出能正确编码的前置条件。同时通过content_modifier在 OTel 资源属性中写入service.name用于在 OneUptime 中区分不同服务。文档给出的输入段示例pipeline: inputs: # Your inputs processors: logs: - name: opentelemetry_envelope - name: content_modifier context: otel_resource_attributes action: upsert key: service.name # Please replace YOUR_SERVICE_NAME with the name of your service value: YOUR_SERVICE_NAME其中action: upsert表示若资源属性中已有service.name则更新、否则插入context: otel_resource_attributes表明写入目标是 OTLP 资源属性层而不是日志体属性。完整配置文件示例文档提供的完整可运行配置文件如下以 HTTP 输入为例在0.0.0.0:8888监听外部发来的 JSON 日志service: flush: 1 log_level: info pipeline: inputs: - name: http listen: 0.0.0.0 port: 8888 processors: logs: - name: opentelemetry_envelope - name: content_modifier context: otel_resource_attributes action: upsert key: service.name value: YOUR_SERVICE_NAME outputs: - name: stdout match: * - name: opentelemetry match: * host: oneuptime.com port: 443 metrics_uri: /otlp/v1/metrics logs_uri: /otlp/v1/logs traces_uri: /otlp/v1/traces tls: On header: - x-oneuptime-token YOUR_TELEMETRY_INGESTION_TOKENservice.flush: 1表示每隔 1 秒刷盘一次缓冲数据log_level: info控制 Fluent Bit 自身日志级别仓库示例中用的是debug用于开发排查见下文。自托管 OneUptime 的配置变体如果 OneUptime 是自托管部署文档说明只需做两处替换将host替换为你自托管实例的域名若实例运行在 HTTP而非 HTTPS服务器上将port替换为实例端口通常是 80并去掉tls: On。对应的输出配置变为outputs: - name: stdout match: * - name: opentelemetry match: * host: your-oneuptime-instance.com port: 80 metrics_uri: /otlp/v1/metrics logs_uri: /otlp/v1/logs traces_uri: /otlp/v1/traces header: - x-oneuptime-token YOUR_TELEMETRY_INGESTION_TOKEN注意此时不再需要tls字段且 Token 机制与 SaaS 版完全一致。仓库内的参考实现示例配置、容器与端到端验证OneUptime 仓库自带了一个用于开发联调的 FluentBit 目录可以作为上述文档配置的“落地参照”。仓库示例配置FluentBit/etc/fluent-bit.yaml 是一份真实用于联调的完整配置其结构与前文文档配置完全一致service段使用flush: 1与log_level: debuginputs段使用 HTTP 输入监听0.0.0.0:8889注意与文档示例的 8888 不同以仓库文件实际内容为准outputs段在 第 14-23 行 定义了指向本地实例的opentelemetry输出- name: opentelemetry match: * host: local.genosyn.com port: 443 metrics_uri: /otlp/v1/metrics logs_uri: /otlp/v1/logs traces_uri: /otlp/v1/traces tls: On header: - x-oneuptime-token ad29ff90-100f-11f0-a779-39a19251c0cf - x-oneuptime-service-name demo-service-1从这份示例可以看出两个文档未强调的细节除x-oneuptime-token外请求头中还可以携带x-oneuptime-service-name来直接声明服务名与输入侧content_modifier写入service.name属于两种互补的服务标识方式示例中的host指向本地开发域名印证了自托管/本地开发时替换host以及非 HTTPS 时替换port、去掉tls的文档指引。需要强调该示例中的 Token 是开发环境占位值实际部署必须替换为你自己项目下的遥测摄入 Token。容器化运行方式FluentBit/Dockerfile.tpl 基于官方镜像cr.fluentbit.io/fluent/fluent-bit构建 OneUptime 的 Fluent Bit 采集容器并通过 CMD 以-c /fluent-bit/etc/fluent-bit.yaml加载上述配置文件第 18-21 行 的EXPOSE声明了 24224、24284、2020、8889 等常用采集端口说明该镜像同时预留了 OTLP、Syslog、HTTP 等多种接入能力。FluentBit/README.md 给出了联调的标准流程确认FluentBit/etc/fluent-bit.yaml中填入了正确的 Token 与 URL使用npm run force-build fluent-bit构建镜像使用npm run dev fluent-bit启动容器向容器发送一条测试日志curl -X POST -H Content-Type: application/json -d {log: This is a test log message} http://localhost:8889发送成功后这条日志应能在 OneUptime 仪表盘对应项目下看到。这条 curl 命令是验证整条链路HTTP 输入 →opentelemetry_envelope封装 → OTLP 上报 → 入库展示是否打通的最小用例。上线与验证清单按文档的 Usage 章节配置完成后的最终步骤是重启 Fluent Bit 服务服务重启后遥测数据即会发送到 OneUptime 的 HTTP 接入端点随后在 OneUptime 仪表盘查看对应项目下的数据。实践中建议按以下清单逐项核对Token 校验x-oneuptime-token与仪表盘 Create Ingestion Key / View 中看到的值逐字符一致且属于目标项目封套校验输入段存在opentelemetry_envelope处理器缺失会导致opentelemetry输出无法正确编码服务标识已通过content_modifier设置service.name或请求头x-oneuptime-service-name避免多条服务数据混杂无法区分端点匹配公网 SaaS 用host: oneuptime.comport: 443tls: On自托管按实例域名/端口调整HTTP 部署去掉tls本地联调可参照 FluentBit/README.md 用 curl 向 HTTP 输入端口投递测试日志确认仪表盘可见后再逐步替换为生产输入源文件、Syslog、Docker 等。若配置后数据未出现在仪表盘可先在outputs中保留stdout输出确认数据确实经过管道再将log_level临时调高到debug如仓库示例所示观察发送细节定位是输入未匹配、封套缺失还是鉴权/网络问题。【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考