从创建环境、复制采集 Token,到 curl 推送第一条日志、控制台验证,再到 Fluent Bit 与 K8s 落盘接入,一套 5 分钟上手的完整步骤,附可复制命令与配置。
接入是日志平台的第一道坎。炬鲸 OBSERVE 把鉴权和协议做得很简单:一个环境一个 Token,POST JSON Lines 即可。下面从零到看到第一条记录,全程不超过 5 分钟。
登录控制台后,在「环境」里建一个环境(比如 prod),系统会为它生成独立的采集 Token。Token 与登录密码分离,一环境一 Token;同一个租户可以有多个环境(prod / uat / dev),控制台顶栏切换环境后,检索、监控、导出都会按当前环境过滤。复制这个 Token,它是下面所有命令的凭证。
采集接口是 POST /api/ob/logs/jsonline,Header 带上 X-Ingest-Token,请求体是 JSON Lines(NDJSON),一行一条。用 curl 验证:
export OB_API=https://ob.jjhub.cn
export OB_INGEST_TOKEN='你的Token'
echo '{"log.file.path":"/var/log/app/service.log","content":"2026-07-26 17:44:46.159 ERROR [t1] [main] demo.App:run():1 : hi","k8s_label_ob-name":"demo"}' | curl -X POST "$OB_API/api/ob/logs/jsonline" -H 'Content-Type: application/x-ndjson' -H "X-Ingest-Token: $OB_INGEST_TOKEN" --data-binary @-
返回 {"code":0,"message":"success","data":null} 即成功。几个要点:
log.file.path 以 service.log 结尾会被归为业务日志,以 tracing.log 结尾归为链路日志。content 建议用 Log4j2 风格文本(时间、级别、[traceId]、线程名),平台会自动解析出字段。k8s_label_ob-company / k8s_label_ob-project / k8s_label_ob-name,方便按公司/项目/服务聚合。回到控制台,切到刚建的环境,打开 Service 页,应该能看到这条 ERROR 日志。用类 SQL 条件过滤:level="ERROR" and serviceName="demo"。时间线、单条详情、traceId 下钻都能在这里看到。到这一步,接入链路已经打通。
生产环境不建议裸 curl,用 Fluent Bit 做 tail + HTTP 输出更稳。核心配置片段:
[INPUT]
Name tail
Path /var/log/app/service.log
Tag service
[OUTPUT]
Name http
Match *
Host ob.jjhub.cn
Port 443
URI /api/ob/logs/jsonline
Format json_lines
Header X-Ingest-Token ${OB_INGEST_TOKEN}
Kubernetes 场景给 Pod 打上 ob-company / ob-project / ob-name 三个标签,配合 EmptyDir + Sidecar 或 DaemonSet 采集;Spring Boot 应用则落盘 service.log / tracing.log 后由 Agent 推送,小流量也可以直接 HTTP 上报。接通之后,建议立刻配一条告警规则(例如 5 分钟内 ERROR 超过 20 条),让平台在问题扩大前先通知你。