<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>EBPF on Zata-砸它</title><link>https://www.zata.cc/tags/ebpf/</link><description>Recent content in EBPF on Zata-砸它</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Example Person</copyright><lastBuildDate>Wed, 27 May 2026 23:35:03 +0800</lastBuildDate><atom:link href="https://www.zata.cc/tags/ebpf/index.xml" rel="self" type="application/rss+xml"/><item><title>云原生可观测性：从"监控"到"洞察"的进化之路</title><link>https://www.zata.cc/p/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7%E4%BB%8E%E7%9B%91%E6%8E%A7%E5%88%B0%E6%B4%9E%E5%AF%9F%E7%9A%84%E8%BF%9B%E5%8C%96%E4%B9%8B%E8%B7%AF/</link><pubDate>Wed, 27 May 2026 10:00:00 +0800</pubDate><guid>https://www.zata.cc/p/%E4%BA%91%E5%8E%9F%E7%94%9F%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7%E4%BB%8E%E7%9B%91%E6%8E%A7%E5%88%B0%E6%B4%9E%E5%AF%9F%E7%9A%84%E8%BF%9B%E5%8C%96%E4%B9%8B%E8%B7%AF/</guid><description>&lt;h2 id="一引言为什么传统监控不够用了">一、引言：为什么传统监控不够用了？
&lt;/h2>&lt;p>十年前，监控一台服务器很简单：CPU 超过 80%？告警。磁盘满了？告警。服务无响应？告警。这种基于阈值的黑盒监控在单体架构时代工作得很好。&lt;/p>
&lt;p>但在云原生时代，事情变得复杂了：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>微服务架构&lt;/strong>：一个请求可能穿越几十个服务，单点监控无法还原全链路&lt;/li>
&lt;li>&lt;strong>容器与 Kubernetes&lt;/strong>：Pod 随时创建和销毁，IP 不再固定，传统主机监控模型失效&lt;/li>
&lt;li>&lt;strong>动态扩缩容&lt;/strong>：基础设施本身在变化，静态阈值频繁误报&lt;/li>
&lt;li>&lt;strong>分布式与多租户&lt;/strong>：问题可能藏在任何一个角落，且相互影响&lt;/li>
&lt;/ul>
&lt;p>于是，业界提出了一个新的理念——&lt;strong>可观测性（Observability）&lt;/strong>。&lt;/p>
&lt;h2 id="二可观测性三大支柱metricslogstraces">二、可观测性三大支柱：Metrics、Logs、Traces
&lt;/h2>&lt;p>可观测性的核心思想来源于控制理论：&lt;strong>通过系统的外部输出，推断其内部状态&lt;/strong>。在云原生实践中，这三大输出被归纳为：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>支柱&lt;/th>
&lt;th>解决的问题&lt;/th>
&lt;th>典型工具&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Metrics（指标）&lt;/strong>&lt;/td>
&lt;td>&amp;ldquo;什么&amp;quot;出了问题？系统负载、错误率、延迟的量化趋势&lt;/td>
&lt;td>Prometheus、Grafana&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Logs（日志）&lt;/strong>&lt;/td>
&lt;td>&amp;ldquo;为什么&amp;quot;出问题？详细的上下文和错误信息&lt;/td>
&lt;td>ELK、Loki&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Traces（链路）&lt;/strong>&lt;/td>
&lt;td>&amp;ldquo;哪里&amp;quot;出了问题？请求在分布式系统中的完整路径&lt;/td>
&lt;td>Jaeger、Zipkin、SkyWalking&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>&lt;strong>关键洞察&lt;/strong>：这三者不是孤立的。一条慢请求（Trace）可能对应高 CPU（Metrics）和某条错误日志（Log）。真正的可观测性在于&lt;strong>将它们关联起来&lt;/strong>。&lt;/p>
&lt;/blockquote>
&lt;h2 id="三云原生可观测性技术栈全景">三、云原生可观测性技术栈全景
&lt;/h2>&lt;h3 id="31-指标监控prometheus--grafana">3.1 指标监控：Prometheus + Grafana
&lt;/h3>&lt;p>&lt;strong>Prometheus&lt;/strong> 已成为云原生指标的事实标准：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Pull 模型&lt;/strong>：主动抓取目标端点，天然适合动态环境&lt;/li>
&lt;li>&lt;strong>多维数据模型&lt;/strong>：&lt;code>http_requests_total{method=&amp;quot;POST&amp;quot;,status=&amp;quot;500&amp;quot;}&lt;/code>，支持灵活聚合&lt;/li>
&lt;li>&lt;strong>PromQL&lt;/strong>：强大的查询语言，适合告警和仪表盘&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-promql" data-lang="promql">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 过去5分钟内的95分位延迟&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kr">histogram_quantile&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="mf">0.95&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">sum&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="kr">rate&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">http_request_duration_seconds_bucket&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s">5m&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">))&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">le&lt;/span>&lt;span class="o">))&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Grafana&lt;/strong> 则提供了卓越的 visualization 能力，支持从多个数据源（Prometheus、Loki、Tempo、Elasticsearch）构建统一仪表盘。&lt;/p>
&lt;h3 id="32-日志管理从-elk-到-loki">3.2 日志管理：从 ELK 到 Loki
&lt;/h3>&lt;p>传统 ELK（Elasticsearch + Logstash + Kibana）功能强大，但在云原生场景下面临资源消耗高、索引管理复杂的问题。&lt;/p>
&lt;p>&lt;strong>Grafana Loki&lt;/strong> 提供了更云原生的方案：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>只索引标签，不索引日志内容&lt;/strong>：大幅降低存储成本&lt;/li>
&lt;li>&lt;strong>与 Prometheus 标签对齐&lt;/strong>：相同的 &lt;code>job&lt;/code>、&lt;code>instance&lt;/code> 标签让指标和日志天然关联&lt;/li>
&lt;li>&lt;strong>LogQL&lt;/strong>：类似 PromQL 的查询语法&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{job=&amp;#34;api-gateway&amp;#34;} |= &amp;#34;error&amp;#34; | json | status_code=&amp;#34;500&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="33-分布式追踪opentelemetry-统一标准">3.3 分布式追踪：OpenTelemetry 统一标准
&lt;/h3>&lt;p>追踪曾经是&amp;quot;碎片化&amp;quot;的重灾区——Zipkin、Jaeger、SkyWalking 各有自己的 SDK 和数据格式。&lt;/p>
&lt;p>&lt;strong>OpenTelemetry（OTel）&lt;/strong> 的出现改变了这一切：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>统一标准&lt;/strong>：一个 SDK 同时产生 Metrics、Logs、Traces&lt;/li>
&lt;li>&lt;strong>自动埋点&lt;/strong>：Java Agent、Python 自动 instrument，低侵入接入&lt;/li>
&lt;li>&lt;strong>厂商无关&lt;/strong>：数据可导出到 Jaeger、Tempo、AWS X-Ray、Azure Monitor 等任意后端&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">opentelemetry&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">trace&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">tracer&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">trace&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_tracer&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="vm">__name__&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">with&lt;/span> &lt;span class="n">tracer&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">start_as_current_span&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;process_order&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">span&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">span&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">set_attribute&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;order.id&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">order_id&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">span&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">set_attribute&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;user.tier&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;premium&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 业务逻辑...&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="34-告警与事件从噪声到信号">3.4 告警与事件：从噪声到信号
&lt;/h3>&lt;p>可观测性的终点不是收集数据，而是&lt;strong>在正确的时间通知正确的人&lt;/strong>。&lt;/p>
&lt;p>&lt;strong>Prometheus Alertmanager&lt;/strong> 提供了：&lt;/p>
&lt;ul>
&lt;li>分组（Grouping）：将相关告警合并，避免告警风暴&lt;/li>
&lt;li>抑制（Inhibition）：高优先级告警自动抑制低优先级&lt;/li>
&lt;li>静默（Silencing）：维护窗口临时静默&lt;/li>
&lt;/ul>
&lt;p>更进一步，&lt;strong>SLO（Service Level Objective）&lt;/strong> 驱动的告警正在成为最佳实践：&lt;/p>
&lt;blockquote>
&lt;p>不是&amp;quot;CPU &amp;gt; 80%&amp;quot;，而是&amp;quot;过去 30 天内，99.9% 的请求延迟 &amp;lt; 200ms&amp;rdquo;。&lt;/p>
&lt;/blockquote>
&lt;p>这种基于&lt;strong>用户视角&lt;/strong>的告警，更能反映业务健康度。&lt;/p>
&lt;h2 id="四可观测性进阶从三大支柱到统一关联">四、可观测性进阶：从三大支柱到统一关联
&lt;/h2>&lt;h3 id="41-关联一切exemplars">4.1 关联一切：Exemplars
&lt;/h3>&lt;p>&lt;strong>Exemplars&lt;/strong> 是 Prometheus 的一个强大特性：在指标 histogram 的某个 bucket 中，附带一个具体的 Trace ID。&lt;/p>
&lt;p>这意味着：你在 Grafana 上看到延迟 spike 时，可以直接点击，跳转到对应的分布式追踪。从&amp;quot;什么问题&amp;quot;到&amp;quot;具体哪次请求&amp;rdquo;，只需一次点击。&lt;/p>
&lt;h3 id="42-持续剖析ebpf-带来的新维度">4.2 持续剖析：eBPF 带来的新维度
&lt;/h3>&lt;p>&lt;strong>eBPF&lt;/strong> 让内核可编程，催生了新一代可观测性工具：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Pixie / Coroot&lt;/strong>：无需修改应用，自动采集 HTTP/gRPC/Redis 等协议指标&lt;/li>
&lt;li>&lt;strong>Parca / Pyroscope&lt;/strong>：持续 CPU Profiling，找出生产环境的性能热点&lt;/li>
&lt;li>&lt;strong>Falco&lt;/strong>：基于 eBPF 的运行时安全检测&lt;/li>
&lt;/ul>
&lt;p>eBPF 的核心价值：&lt;strong>零侵入、高性能、全栈可见&lt;/strong>。&lt;/p>
&lt;h3 id="43-成本治理可观测性不是越多越好">4.3 成本治理：可观测性不是越多越好
&lt;/h3>&lt;p>可观测性数据量巨大，成本可能失控：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>策略&lt;/th>
&lt;th>做法&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>采样（Sampling）&lt;/strong>&lt;/td>
&lt;td>对高频低价值的 trace 进行头部或尾部采样&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>降精度（Downsampling）&lt;/strong>&lt;/td>
&lt;td>历史指标从高精度聚合为低精度&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>分层存储&lt;/strong>&lt;/td>
&lt;td>热数据 SSD、温数据对象存储、冷数据归档&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>日志结构化&lt;/strong>&lt;/td>
&lt;td>减少无意义的 debug 日志，优先结构化字段&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="五实践建议构建你的可观测性体系">五、实践建议：构建你的可观测性体系
&lt;/h2>&lt;h3 id="51-渐进式路线图">5.1 渐进式路线图
&lt;/h3>&lt;p>&lt;strong>阶段一：可见（See）&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>部署 Prometheus + Grafana，覆盖核心服务的 RED 指标（Rate、Errors、Duration）&lt;/li>
&lt;li>接入 Loki 或现有日志系统&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>阶段二：关联（Correlate）&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>引入 OpenTelemetry，实现分布式追踪&lt;/li>
&lt;li>在 Grafana 中统一 Metrics、Logs、Traces 视图&lt;/li>
&lt;li>配置基于 SLO 的告警&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>阶段三：洞察（Understand）&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>引入 eBPF 进行持续剖析&lt;/li>
&lt;li>建立错误预算（Error Budget）机制&lt;/li>
&lt;li>AIOps：异常检测、根因分析、自动扩容&lt;/li>
&lt;/ul>
&lt;h3 id="52-关键设计原则">5.2 关键设计原则
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>默认接入，而非可选&lt;/strong>：新服务必须通过 Helm chart / Operator 自动接入可观测性&lt;/li>
&lt;li>&lt;strong>标签标准化&lt;/strong>：统一 &lt;code>service&lt;/code>、&lt;code>version&lt;/code>、&lt;code>environment&lt;/code>、&lt;code>team&lt;/code> 等标签&lt;/li>
&lt;li>&lt;strong>告警即代码&lt;/strong>：用 PrometheusRule 等 GitOps 方式管理告警规则&lt;/li>
&lt;li>&lt;strong>可观测性也是代码&lt;/strong>：Dashboard、告警规则纳入版本控制，Code Review&lt;/li>
&lt;/ol>
&lt;h2 id="六结语">六、结语
&lt;/h2>&lt;p>云原生可观测性的本质，是从&amp;quot;监控系统是否正常&amp;quot;进化到&amp;quot;理解系统为什么这样行为&amp;rdquo;。&lt;/p>
&lt;p>三大支柱提供了数据基础，OpenTelemetry 提供了统一标准，eBPF 打开了新的维度，而真正的价值在于&lt;strong>将这些数据关联起来，形成对分布式系统的深刻理解&lt;/strong>。&lt;/p>
&lt;p>在云原生世界里，&lt;strong>你不能管理你看不见的东西&lt;/strong>——而可观测性，就是让你看见一切的那束光。&lt;/p>
&lt;hr>
&lt;blockquote>
&lt;p>如果你正在构建云原生可观测性体系，建议从 Prometheus + Grafana + OpenTelemetry 这个&amp;quot;黄金组合&amp;quot;开始，逐步演进。记住：最好的可观测性，是让工程师在出问题后 5 分钟内找到根因。&lt;/p>
&lt;/blockquote></description></item></channel></rss>