核心要点
- 指标(Metrics)= 结构化数值,适合趋势监控和阈值告警
- 日志(Logs)= 非结构化文本,提供事件级上下文,适合根因诊断
- 两者互补,结合MELT栈实现从"检测异常"到"解决问题"的闭环
- 存储成本控制:指标降采样 + 日志分级保留
- 最佳实践:统一标签元数据实现关联分析
一、指标(Metrics)详解
指标是随时间跟踪系统性能的定量测量值。结构化、轻量级,适合时间序列分析。
数据结构:
metric_name: cpu_utilization timestamp: 1691452800 value: 78.5 labels: {host: "web-01", region: "us-east-1", env: "prod"}常见指标类型:
- Gauge:CPU利用率、内存使用量、磁盘空间
- Counter:请求总数、错误总数
- Histogram:响应时间分布
- Summary:分位数统计
使用场景:实时性能跟踪、阈值告警、容量规划
二、日志(Logs)详解
日志是系统内离散事件的详细记录,提供指标无法覆盖的上下文。
日志格式示例(JSON结构化):
{ "timestamp": "2025-10-06T14:25:11Z", "level": "ERROR", "service": "order-service", "message": "Failed to connect to database", "trace_id": "a1b2c3d4", "user_id": "alex" }使用场景:调试诊断、审计合规、安全监控
三、对比分析
| 维度 | 指标 | 日志 |
|---|---|---|
| 数据类型 | 数值型,结构化 | 文本型,非结构化/半结构化 |
| 存储需求 | 低(压缩后体积极小) | 高(需合理保留策略) |
| 查询速度 | 快速聚合 | 较慢,需解析索引 |
| 采集频率 | 周期性采样 | 连续事件生成 |
| 最适用于 | 趋势监控和阈值告警 | 根因调查 |
四、MELT栈集成实践
# 典型可观测性工作流伪代码 def observability_workflow(): # 1. 指标检测异常 if metric("cpu_utilization") > 85: alert("CPU anomaly detected") # 2. 事件提供上下文 recent_events = query_events( time_range=(alert_time - 30min, alert_time), type=["deploy", "config_change", "scale"] ) # 3. 日志揭示原因 related_logs = query_logs( time_range=(alert_time - 5min, alert_time + 5min), service=affected_service, level=["ERROR", "WARN"] ) # 4. 追踪确认路径 traces = query_traces( trace_ids=extract_trace_ids(related_logs), service=affected_service ) # 5. 解决问题 root_cause = analyze(traces, related_logs, recent_events) fix_and_verify(root_cause)五、最佳实践
- 数据保留策略:指标6-12个月,日志30-90天,冷数据归档
- 统一标签:指标和日志使用相同的service/host/env标签
- 异常检测:动态基线替代静态阈值
- 日志采样:非关键服务按比例采样,控制成本
- 集中式监控:统一跨云、跨应用的可观测性视角
FAQ
Q1:指标和日志的主要区别是什么?指标是结构化数值数据,适合趋势分析;日志是文本记录,提供事件级上下文,适合根因诊断。两者互补。
Q2:可以将日志转换为指标吗?可以。从日志中提取字段(如错误计数、延迟分布)生成自定义指标,但丢失原始上下文,排查时仍需回溯原始日志。
Q3:指标和日志应保留多长时间?指标6-12个月以上用于趋势分析;日志30-90天,热数据本地存储,冷数据归档对象存储。
Q4:云环境存储成本如何控制?指标降采样(7天以上数据从1分钟聚合到5分钟);日志分级保留(ERROR 90天,INFO 7天)+ 采样 + 冷数据迁移。
Q5:如何实现指标与日志的关联分析?统一标签元数据(service/instance_id/env),从指标图表直接跳转到对应时间段日志视图。
参考来源
- CNCF可观测性白皮书:Observability in Cloud Native Environments
- OpenTelemetry官方规范文档:Metrics & Logs Data Model
一句话总结
指标检测异常、日志定位根因,MELT栈形成可观测性闭环——不是收集更多数据,而是连接正确的数据节点。
觉得有帮助的话点个赞收藏一下,欢迎评论区交流可观测性实践经验。