数据模型与信号
Diting 的数据模型围绕一条时间线组织。所有信号共享时间戳与关联键,可以在页面之间互相跳转。
六类信号
| 信号 | 来源 | 主要关联键 |
|---|---|---|
| 指标 | 主机、容器、服务、数据库 | host_id、service、pod |
| 日志 | 文件、容器、journald、syslog | host_id、service、trace_id |
| 链路 | eBPF、OTLP | trace_id、span_id |
| Profile | 主机与运行时采样 | host_id、pid |
| 会话 | 浏览器 RUM | session_id、trace_id |
| 数据库 | 协议解析 | trace_id、instance、statement |
关联
一次请求的完整上下文由三个键串起来:
trace_id:跨服务、跨主机的调用链session_id:浏览器会话host_id:主机身份
从链路可以跳到日志和会话,从会话可以回到链路和录像。跳转不丢时间范围与筛选条件。
写入路径
agent → gateway → Kafka → collector → ClickHouse。gateway 负责鉴权与限流,Kafka 负责削峰,collector 负责列式写入。
数据库语句的摘要走独立 topic db-query-digests,写入 diting.dwd_db_query_digest。
保留
不同信号可以配置不同保留期。热数据用于即时查询,冷数据用于回溯。具体天数由部署时的存储规划决定。
时钟
跨主机比较时间之前,先确认 NTP 同步。Diting 会做时钟校正,但校正不能替代正确的时间源。
OTLP
已有 OpenTelemetry 链路的团队可以直接发送到 gateway 的 OTLP 入口,不需要部署 agent。两种来源的数据使用同一套关联键。
相关文档:链路与拓扑、API 与 OTLP。