0Pricing
DevOps Bootcamp · 课时

结构化日志与分布式追踪

使用结构化日志、关联 ID 和分布式追踪,让部署过程可观测,从而调试持续集成与持续交付流水线中跨服务的故障

结构化日志与分布式追踪 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

可观测性的三大支柱

可观测性建立在三大支柱之上:指标、日志和追踪。

  • 指标告诉您出现了问题
  • 日志告诉您发生了什么
  • 追踪告诉您问题发生在请求流程的什么位置

流水线监控通常从指标开始;本课将进一步讲解日志和追踪。

为什么要使用结构化日志记录

纯文本日志行很难查询。结构化日志是机器可读的记录,通常采用 JSON 格式,并包含命名字段。

借助 Loki、Elasticsearch 或 Datadog 等工具,可以筛选、聚合结构化日志,并针对其发出警报。

纯文本与结构化日志

请比较非结构化日志行和结构化日志行。结构化版本允许您直接查询 status=500。

// Unstructured
Deploy failed for service api at 12:01

// Structured (JSON)
{"level":"error","event":"deploy_failed","service":"api","status":500}

输出 JSON 日志

大多数语言都有结构化日志记录器。关键思想是记录对象,而不是拼接字符串。

const log = (level, event, fields) =>
  console.log(JSON.stringify({ level, event, ...fields }));
log('info', 'deploy_started', { service: 'api', version: '1.4.2' });

关联 ID

一次部署会涉及许多步骤和服务。关联 ID(或追踪 ID)是附加到某项逻辑操作每一条日志行上的唯一值。

按该 ID 搜索,就能重建跨组件的完整过程。

  - name: Set correlation id
    run: echo "TRACE_ID=$(uuidgen)" >> $GITHUB_ENV

日志级别

请使用一致的日志级别,以便调整详细程度和警报设置:

  • debug — 详细诊断信息
  • info — 正常事件
  • warn — 可恢复的问题
  • error — 需要关注的故障

针对 error 发出警报,对 info 进行采样,并在生产环境中关闭 debug。

什么是分布式追踪

分布式追踪会跟踪请求经过多个服务的过程。每个步骤都是一个span;多个 span 会连接成一条追踪。

追踪会显示时间线,以及哪个 span 运行缓慢或发生错误,这对于微服务部署非常有价值。

OpenTelemetry

OpenTelemetry(OTel)是生成追踪、指标和日志的厂商中立标准。

请使用 OTel SDK 为应用添加监测,并将数据导出到 Jaeger、Tempo 或云端 APM 等后端。

import { trace } from '@opentelemetry/api';
const tracer = trace.getTracer('deploy-service');
const span = tracer.startSpan('deploy');
// ... do work
span.end();

追踪流水线本身

您不仅可以追踪应用,还可以追踪流水线。工具会为每个作业和步骤生成一个 span,让您看到 CI/CD 的哪个阶段成为瓶颈。

这样,漫长的工作流就会变成一张直观的瀑布图,显示时间都花在了哪里。

集中聚合

将每个作业和服务的日志与追踪发送到中央平台。CI 运行器是临时的,因此留在运行器上的日志会在此次运行结束后消失。

请在运行期间将日志转发到日志接收端,这样即使运行器已经消失,也可以进行事后复盘。

从信号到行动

只有能够推动行动,可观测性才有价值。请构建能够显示错误率和缓慢追踪的仪表板,并将关键模式接入您已经配置的警报。

目标是:从一条警报直接跳转到能够解释问题的追踪和结构化日志行。

快速检查

请检验您对日志和追踪的理解。

回顾

您已经通过日志和追踪深化了可观测性。

  • 以一致的级别输出结构化(JSON)日志
  • 附加关联 ID以跟踪一项操作
  • 使用分布式追踪和 OpenTelemetry 查找运行缓慢或失败的 span
  • 在临时运行器消失之前,将所有内容集中聚合

这与指标和警报相结合,就能实现完整的流水线可观测性。

常见问题解答

「结构化日志与分布式追踪」课时是免费的吗?

是的 — 「结构化日志与分布式追踪」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「结构化日志与分布式追踪」这节课中我会学到什么?

使用结构化日志、关联 ID 和分布式追踪,让部署过程可观测,从而调试持续集成与持续交付流水线中跨服务的故障 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「结构化日志与分布式追踪」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 流水线监控策略
  2. 与外部服务集成
  3. 设置通知与告警
  4. 结构化日志与分布式追踪
← 返回 DevOps Bootcamp