信号架构与数据关联¶
可观测平台由“产生、采集、处理、存储、查询、告警”六个环节组成。任何环节都可能丢数、积压或产生高成本,因此平台本身也必须被监控。
参考架构¶
Linux / 网络设备 / 数据库 / Java / Python / Kubernetes
├─ metrics endpoint / exporter
├─ stdout / file / syslog
└─ OpenTelemetry SDK / Agent
↓
Prometheus / vmagent / Fluent Bit / Vector / OTel Collector
↓
VictoriaMetrics Loki/Elasticsearch Trace Backend
└────────── Grafana ──────────────┘
↓
Alertmanager / 通知
采集层与存储层分离后,可在不修改应用的情况下更换后端或同时导出,但中间层也会带来队列、重试、内存和网络容量问题。
统一资源属性¶
建议在所有信号中保持一致:
service.name 服务稳定名称
service.version 镜像/应用版本
deployment.environment.name
k8s.cluster.name / namespace / pod
host.name / cloud.region
trace_id / span_id(日志关联)
不要把用户 ID、订单号、完整 URL、异常文本作为 Metrics label。指标系统为每个唯一标签组合维护时序,高基数会快速增加内存、磁盘和查询开销。这些字段更适合日志或 Trace。
采集方式¶
| 方式 | 优点 | 注意事项 |
|---|---|---|
| Pull | Prometheus 主动抓取,目标状态清晰 | 网络路径、服务发现、抓取周期 |
| Push/Remote Write | Agent 集中缓冲和转发,适合边缘/多集群 | 队列积压、重试和去重 |
| 文件/Stdout Tail | 兼容已有日志 | 轮转、文件指纹、多行堆栈 |
| OTLP | 统一传输 Metrics/Logs/Traces | Collector 容量、队列和后端兼容 |
保留与成本¶
生产前要估算基数、采样率、峰值、压缩、复制、保留和查询并发。Debug 日志和全量 Trace 不能无期限保留。保留策略按合规、排障周期和成本分层,而不是所有数据一个期限。
信号关联¶
- Dashboard 显示发布注解和告警时间点。
- 从指标按服务、版本、实例下钻。
- Exemplars 或链接跳到同时间 Trace。
- Trace 的
trace_id跳到相关日志。 - 日志包含实例和版本,再回到基础设施指标。
如果三个系统的服务名、时区或标签不一致,工具再多也无法形成完整证据链。