0

0

Linux 系统可观测性建设思路

冰川箭仙

冰川箭仙

发布时间:2026-01-28 20:30:01

|

110人浏览过

|

来源于php中文网

原创

基础指标采集不能只靠 shell 脚本,因 /proc 快照式采样易漏瞬时尖峰,而 eBPF 可纳秒级低开销观测内核路径;需聚焦 RED+USE 四大黄金信号,结构化日志关联 trace_id,并透传 W3C traceparent 实现全链路追踪。

linux 系统可观测性建设思路

/proc 到 eBPF:为什么基础指标采集不能只靠 shell 脚本

很多运维一上来就写 top -b -n1 | awk 或轮询 /proc/meminfo,结果在高负载 VPS 上监控进程自己吃掉 15% CPU,还漏掉关键信号——比如 cgroup 的 CPU throttling 比例、软中断分布倾斜、页回收延迟漂移。这些不是“有没有”的问题,而是“偏不偏”的问题。

  • /proc 是快照式伪文件,采样间隔内可能错过瞬时尖峰;eBPF(如 bpftracelibbpf 程序)可 hook 内核 tracepoints,实现纳秒级低开销观测
  • 内存回收耗时、TCP 重传率、调度延迟等路径必须建 7 天滚动基线,用标准差(σ)定义“异常”,而非硬设 cpu_usage > 90%
  • 美国 VPS 共享宿主资源,node_exporter 默认指标不够细;建议加装 systemd-exportercgroup-exporter,暴露 systemd_unit_cpu_throttled_seconds_total 这类真实约束信号

Metrics 不是越多越好:聚焦 RED + USE 四大黄金信号

别被 Prometheus 的 200+ node_exporter 指标吓住。真正影响业务的只有四类:Request Rate(流量)、Error Rate(错误)、Duration(延迟)、Saturation(饱和度)。中间件如 Nginx、PostgreSQL 必须暴露业务层指标,而非只看 CPU。

  • Nginx 需启用 nginx-module-vtsnginx-prometheus-exporter,抓取 nginx_http_requests_total{status=~"5.."} nginx_http_request_duration_seconds_bucket
  • PostgreSQL 用 postgres_exporter,重点关注 pg_lockspg_stat_database_xact_rollbackpg_stat_bgwriter_buffers_checkpoint
  • 避免在 Grafana 中堆砌“CPU 使用率”曲线——改用 node_load1 / count by(instance)(node_cpu_seconds_total{mode="idle"}) 计算实际可扩展性余量

日志不是用来 tail -f 的:结构化 + trace_id 关联才是关键

原始文本日志在故障定位时等于没有日志。一次跨服务请求散落在 5 台 VPS 的不同日志文件里,没 trace_id 就是盲人摸象。

ShopWind网店系统
ShopWind网店系统

ShopWind网店系统是国内最专业的网店程序之一,采用ASP语言设计开发,速度快、性能好、安全性高。ShopWind网店购物系统提供性化的后台管理界面,标准的网上商店管理模式和强大的网店软件后台管理功能。ShopWind网店系统提供了灵活强大的模板机制,内置多套免费精美模板,同时可在后台任意更换,让您即刻快速建立不同的网店外观。同时您可以对网模板自定义设计,建立个性化网店形象。ShopWind网

下载
  • 应用日志强制 JSON 格式,字段至少含 timestampserviceleveltrace_idspan_id;Go 用 logrus.JSONFormatter,Python 用 python-json-logger
  • fluent-bit(非 heavy 的 Fluentd)收集,配置 filter_kubernetes 自动注入 hostnamespace 标签,转发到 Loki(比 ELK 更轻,适合 VPS 资源限制)
  • Grafana 中用 {job="loki",trace_id="xxx"} 一键聚合所有相关日志行,再点开同 trace_id 的 Prometheus 指标和 Jaeger 链路——这才是闭环

链路追踪别断在 Nginx:透传 traceparent 是底线

很多团队上了 Jaeger 却发现链路只有一跳,原因全在入口网关没做透传。W3C Trace Context(traceparent header)是唯一能跨语言、跨中间件对齐的标准,别再用自定义 X-Trace-ID

  • Nginx 配置必须加 proxy_set_header traceparent $http_traceparent;,且开启 underscores_in_headers on;(否则忽略带下划线 header)
  • OpenTelemetry SDK 默认支持 traceparent 解析;若用旧版 Zipkin,需在 client 端手动注入 span.context().traceId() 到下游 HTTP header
  • Redis/MySQL 客户端必须启用 OTel 自动插桩(如 redis-opentelemetry),否则 DB 调用在链路中直接消失——这点最容易被忽略

真正卡住可观测性的,从来不是工具链没配齐,而是 trace_id 在第二跳就断了、duration 指标没按业务语义埋点、基线用的是静态阈值而非动态漂移检测。这些细节不补上,告警再多也只是噪音。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

668

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

247

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

281

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

515

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

256

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

386

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

533

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

602

2023.08.14

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

158

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 812人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号