在 Elastic 中使用 OpenTelemetry 内容包可视化 OpenTelemetry 数据

作者:来自 Elastic Ishleen Kaur

了解并探索 Elastic 中的 OpenTelemetry 内容包如何为你的遥测数据提供即时仪表板、告警和 SLO。

如果你在过去几年一直关注可观测性领域,你会看到 OpenTelemetry 已经从 "有前景的标准" 变成了收集指标、日志和追踪数据的默认选择。Elastic 很早就参与了这一过程 ------ 这也是我们构建 Elastic Distributions of OpenTelemetry( EDOT )的原因:一个经过加固、可用于生产环境的 OTel 组件套件,包括 EDOT Collector 和各语言 SDK,专为基础设施与应用监控进行优化,避免了传统部署中的复杂配置负担。

EDOT 现已正式可用( GA )。Collector、SDK 以及整个技术栈------均已生产就绪,企业级支持,没有任何附加条件。

但问题在于:将数据接入 Elastic 只是完成了一半工作。实际更困难的另一半,是接入之后的事情。仍然需要有人构建仪表板、编写告警规则,并确定哪些 SLO 值值得追踪------在这些变得有用之前。

OpenTelemetry 内容包正是为了解决这一鸿沟而设计的。

什么是 OpenTelemetry 内容包?

Elastic 传统的基于 Beats 的集成通常会将数据采集和可视化打包在一起 ------ 当你启用某个功能时,就会立即获得精心设计的仪表板和告警。随着 Elastic 向 OpenTelemetry 优先的架构演进,这一理念被延续下来,但模型变得更加清晰。

OpenTelemetry 内容包专注于某一特定服务的可观测性资产。不再包含任何数据采集配置,因为在 OTel 体系中,这部分由 Collector 负责。每个包包含:

  • 仪表板 ------ 为所监控服务定制的预构建 Kibana 可视化
  • 告警规则 ------ 预先配置好的告警规则,在关键阈值触发时提醒团队,从而减少平均检测时间( MTTD )和平均修复时间( MTTR )
  • SLO 模板 ------ 可直接使用的服务级别目标定义,用于跟踪可靠性目标、错误预算和消耗速率

随着内容包模型的持续演进,未来的版本还将支持更多类型的资产。

如何工作?

核心理念很简单:一旦数据进入 Elastic,对应的仪表板、告警规则和 SLO 模板就会立即可用。内容包会根据传入的数据自动激活,而不依赖这些数据是如何被采集的。

这个系统最强大的特性之一是自动安装。当 Elastic 检测到某个特定服务的数据开始进入 Elasticsearch 时,相应的内容包会自动安装 ------ 无需任何手动步骤,也无需在集成目录中查找。当你打开 Kibana 时,你的仪表板已经在那里等你,告警规则也已准备好启用,SLO 模板也已预先加载。

为了让数据真正流动起来,我们需要配置 Collector ------ 一个 YAML 文件,用于定义遥测管道的构建模块:

  • Receivers ------ 定义要采集什么数据以及从哪里采集。每个服务都有自己的 receiver(例如 MySQL receiver 会直接从数据库抓取指标)。
  • Exporters ------ 定义采集到的数据发送到哪里。在这里,我们使用 Elasticsearch exporter,将遥测数据以 OpenTelemetry 原生格式直接发送到 Elasticsearch。
  • Pipelines ------ 将 receivers 和 exporters 连接起来,定义数据在 Collector 中的流动路径。

完成这些配置并启动 Collector 后,数据就会开始流入 Elasticsearch ------ 然后由内容包接管后续工作。

数据来源

OpenTelemetry 数据可以通过以下方式进入 Elastic:

  • EDOT Collector ------ Elastic 分发版 OpenTelemetry Collector,可嵌入 Elastic Agent 或与其配合使用
  • 上游 OTel Collector ------ 标准的社区版 OpenTelemetry Collector( Contrib 或自定义构建版本)
  • EDOT Cloud Forwarder( ECF )------ 一种无服务器 OpenTelemetry Collector,可从 AWS、GCP 和 Azure 收集遥测数据(如 VPC Flow Logs、CloudTrail、CloudWatch 等),并直接转发到 Elastic Observability,无需管理基础设施

内容包不关心数据如何到达 ------ 只关心数据是否已经存在。

实践示例:MySQL 监控

假设有一个团队在运行 MySQL,他们希望跟踪查询吞吐量、连接数、缓冲池利用率以及慢查询速率------并在小问题演变成凌晨 2 点事故之前收到告警。传统做法意味着需要花费大量时间构建仪表板、编写自定义告警查询,并且很大程度依赖经验去判断哪些指标真正重要。

使用 MySQL OpenTelemetry 资产包,这些工作已经提前完成。下面来看整体是如何组合在一起的。

步骤 1:获取数据

数据管道由一个 Collector 配置驱动,该配置定义了 receivers(从哪里抓取数据)、processors(如何增强或转换数据)以及 exporters(将数据发送到哪里 ------ 在这里是 Elasticsearch)。

无论你使用 EDOT Collector 还是 Upstream OTel Collector,基础配置结构都是一致的。下面的配置为主实例和副本实例分别使用了不同的 receiver,因为复制指标仅在副本上可用。请将其中的占位符替换为你的实际端点、凭据以及 Elasticsearch 配置信息。

yaml 复制代码
`

1.  receivers:
2.    mysql/primary:
3.      endpoint: <MYSQL_PRIMARY_ENDPOINT>
4.      username: <MYSQL_USER>
5.      password: <MYSQL_PASSWORD>
6.      collection_interval: 10s
7.      statement_events:
8.        digest_text_limit: 120
9.        limit: 250
10.      query_sample_collection:
11.        max_rows_per_query: 100
12.      events:
13.        db.server.query_sample:
14.          enabled: true
15.        db.server.top_query:
16.          enabled: true
17.      metrics:
18.        mysql.client.network.io:
19.          enabled: true
20.        mysql.connection.errors:
21.          enabled: true
22.        mysql.max_used_connections:
23.          enabled: true
24.        mysql.query.client.count:
25.          enabled: true
26.        mysql.query.count:
27.          enabled: true
28.        mysql.query.slow.count:
29.          enabled: true
30.        mysql.table.rows:
31.          enabled: true
32.        mysql.table.size:
33.          enabled: true

35.  processors:
36.    resourcedetection:
37.      detectors: [system, env]

39.  exporters:
40.    elasticsearch/otel:
41.      endpoint: <ES_ENDPOINT>
42.      api_key: <ES_API_KEY>
43.      mapping:
44.        mode: otel

46.  service:
47.    pipelines:
48.      metrics:
49.        receivers: [mysql/primary, mysql/replica]
50.        processors: [resourcedetection]
51.        exporters: [elasticsearch/otel]

`AI写代码![](https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png)收起代码块![](https://csdnimg.cn/release/blogv2/dist/pc/img/arrowup-line-top-White.png)

MySQL receiver 会按照配置的时间间隔从数据库中抓取指标和事件,并将其作为 OpenTelemetry metrics 输出。这些数据会流经 pipeline 并进入 Elasticsearch,随后即可用于可视化。

步骤 2:打开 Kibana ------ 一切已就绪

仪表板

一旦 MySQL 的指标和事件进入 Elasticsearch,MySQL OpenTelemetry 资产包就会在后台自动安装。当你进入 Kibana 时,仪表板已经被填充好并等待使用。

用户可以立即获得以下可观测性视图:

  • 活跃连接数与最大连接数
  • 查询吞吐量------每秒执行的语句数
  • InnoDB 缓冲池命中率与内存使用情况
  • 慢查询数量与趋势
  • 表锁等待与资源争用情况
  • 随时间变化的发送与接收字节数
  • 复制延迟(用于主从架构)

无需手动字段映射,无需从零构建仪表板。只需数据进入,即可获得洞察。

下面是 Kibana 中 MySQL OpenTelemetry 仪表板的截图,展示了当数据开始流动时即可自动使用的开箱即用可视化内容。

概览仪表板

查询仪表板

可用性仪表板

告警规则,已准备启用

该内容包包含六条预构建告警规则 ------ 涵盖高连接错误率、慢查询激增、线程饱和、复制延迟、缓冲池脏页比例(buffer pool dirty page ratio)以及行锁竞争 ------ 每一条都带有推荐阈值和严重级别。这些规则在安装后即可使用,并且可以在 Kibana 中直接启用、调整和扩展,无需编写任何自定义查询。下面是其中一条告警的示例。

SLO 模板,已预加载

开箱即用包含四个 SLO 模板,用于跟踪复制延迟、连接耗尽错误、慢查询速率以及已连接线程数------每个模板都预先配置了目标值和 30 天滚动窗口。团队可以直接采用这些模板,也可以调整阈值以匹配自身的可靠性需求。

当前可用内容

MySQL OpenTelemetry 资产包只是 Elastic 已构建的不断增长的 OpenTelemetry 内容包库中的一个示例。内容包已覆盖多种服务------同时我们也开始将其扩展到云端,初步支持云服务提供商集成,通过 EDOT Cloud Forwarder( ECF )将 AWS、GCP 和 Azure 的遥测数据引入 Elastic,并提供现成的仪表板。

这一模式在所有内容包中都是一致的------数据进入后,一个完整的可观测性套件(仪表板、告警规则、SLO 模板)会立即可用------无论你是在监控自建数据库,还是来自你首选云服务提供商的云原生服务。

未来的发展方向

值得关注的下一步是 OTel 集成包,它将允许你直接从 Kibana UI 推送 Collector 配置------让整个设置体验变为点选式操作,从数据采集到可视化全流程完成,无需编辑 YAML。

开始使用

准备好尝试了吗?从 EDOT Collector 文档开始,并在 Kibana 的 Integrations 页面中探索不断扩展的 OpenTelemetry 内容包库。

原文:www.elastic.co/observabili...

相关推荐
Elasticsearch2 小时前
用于 IntelliJ IDEA 的新 ES|QL 插件
elasticsearch
Devin~Y3 小时前
大厂内容社区面试实录:从 Spring Boot 微服务到 AI RAG 问答(附详细解析)
java·spring boot·redis·elasticsearch·spring cloud·微服务·kafka
一只游鱼5 小时前
如何让本地的敏感配置文件不上传到git仓库
git·elasticsearch
斯特凡今天也很帅1 天前
Elasticsearch数据库专栏(一)Kinaba的基础使用
elasticsearch·kibana
不爱吃糖的程序媛1 天前
鸿蒙三方库适配读懂 `thirdparty/AES/.gitignore`:哪些文件不该进 Git?
git·elasticsearch·harmonyos
A__tao1 天前
一键实现 SQL → ES Mapping 转换,支持自定义 `text` 为 `json` 转换
sql·elasticsearch·json
ShawnLiaoking2 天前
pycharm 上传更新代码
ide·elasticsearch·pycharm
果粒蹬i2 天前
Elasticsearch 单机部署实测:安装流程、常见坑点与远程访问配置
大数据·elasticsearch·搜索引擎
AC赳赳老秦2 天前
OpenClaw数据库高效操作指南:MySQL/PostgreSQL批量处理与数据迁移实战
大数据·数据库·mysql·elasticsearch·postgresql·deepseek·openclaw