可观测性工程 —— 日志、指标、追踪的三位一体

简介: 传统监控回答“系统是否工作”,可观测性更进一步回答“为什么不工作”。它通过三类数据(Telemetry)实现:日志(Logs)、指标(Metrics)、追踪(Traces)。三者互补,缺一不可。

一、从监控到可观测性
传统监控回答“系统是否工作”,可观测性更进一步回答“为什么不工作”。它通过三类数据(Telemetry)实现:日志(Logs)、指标(Metrics)、追踪(Traces)。三者互补,缺一不可。

二、日志:事件的离散记录
日志是最古老的观测手段。最佳实践包括:
结构化日志:使用JSON格式,便于机器解析。PHPMonolog、JavaLogstashEncoder、C++spdlog均支持。
日志级别:ERROR(需要立即处理)、WARN(潜在问题)、INFO(关键业务流程)、DEBUG(开发调试)。生产环境只开启INFO以上。
避免敏感信息:禁止记录密码、令牌、身份证号。
异步写入:避免日志I/O阻塞业务线程(JavaLog4j2异步Appender、PHP可推送到队列)。
日志的缺点:存储量大,检索复杂(需要ELK/Loki)。但对于异常现场还原,日志无可替代。
参考:https://www.wkmsa.cn/category/sleep-disorders.html

三、指标:聚合的可量测数据
指标是数值型统计数据(如QPS、平均延迟、错误率),通常定期采集并存储到时序数据库(Prometheus、InfluxDB)。指标最适合设置告警和绘制仪表盘。
指标维度:
Counter(计数器):只增不减,如请求总数。
Gauge(仪表盘):可增可减,如当前内存占用。
Histogram(直方图):记录分布,如请求延迟的百分位。
各语言的指标库:
PHP:Prometheus官方客户端(支持APC共享内存)。
Java:Micrometer(SpringBoot默认集成),可导出到Prometheus、Datadog等。
C++:PrometheusC++客户端、或通过statsdexporter。

四、追踪:请求的端到端路径
分布式追踪(Tracing)记录一个请求在多个服务间的完整调用链。核心概念:
Trace:一次完整请求的全局ID。
Span:单个操作(如一次RPC、数据库查询),包含开始时间、结束时间、元数据。
SpanContext:用于跨进程传递Trace信息(通常通过HTTP头)。
OpenTelemetry已成为追踪标准,兼容Zipkin、Jaeger。Java通过Javaagent自动埋点(零代码侵入);PHP可通过扩展(如OpenTelemetryPHP)或手动埋点;C++则需集成SDK。
参考:https://www.wkmsa.cn/category/sleep-methods.html

五、三者的关联
日志应包含trace_id和span_id,以便从指标异常跳转到具体日志,再关联到追踪链路。
指标可以从追踪数据中派生(如统计每个服务的延迟分布)。
错误率高时,通过指标预警→采样相关trace→查看该trace的日志,定位根因。

六、各语言的成熟度
Java:生态最完善。SpringCloudSleuth+Micrometer+OpenTelemetry无缝集成。
PHP:有OpenTelemetry扩展和Laravel集成包,但生产使用较少。许多团队仍依赖NewRelic等APM商业软件。
C++:需要手动集成opentelemetry-cpp,然后导出到Jaeger/Zipkin。因为C++服务通常作为高性能基础组件,其可观测性往往由上层治理系统间接完成。

七、落地建议
从指标监控开始,快速建立告警体系。
选择一套APM工具(如Jaeger+Prometheus+Grafana)统一数据源。
逐步推进结构化日志和追踪注入。不必一次性完美,持续迭代。

八、总结
可观测性不是工具堆砌,而是工程文化。当团队习惯通过仪表盘和链路排查问题,而不只是登录服务器看日志时,系统韧
参考:https://www.wkmsa.cn

目录
相关文章
|
2天前
|
人工智能 API 开发工具
Claude Code国内安装:2026最新保姆教程(附cc-switch配置)
Claude Code是我目前最推荐的AI编程工具,没有之一。 它可能不是最简单的,但绝对是上限最高的。一旦跑通安装、接上模型、定好规范,你会发现很多原本需要几小时的工作,现在几分钟就能搞定。 这套方案的核心优势就三个字:可控性。你不用依赖任何不稳定服务,所有组件都在自己手里。模型效果不好?换一个。框架更新了?自己决定升不升。 这才是AI时代开发者该有的姿势——不是被动等喂饭,而是主动搭建自己的生产力基础设施。 希望这篇保姆教程,能帮你顺利上车。做出你自己的作品。
Claude Code国内安装:2026最新保姆教程(附cc-switch配置)
|
9天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
3769 21
|
5天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
2334 8
|
4天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
1954 4
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
21天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
18827 60
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
2天前
|
SQL 人工智能 弹性计算
阿里云发布 Agentic NDR,威胁检测与响应进入智能体时代
欢迎前往阿里云云防火墙控制台体验!
1167 2

热门文章

最新文章