在 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 配置信息。

复制代码
receivers:
  mysql/primary:
    endpoint: <MYSQL_PRIMARY_ENDPOINT>
    username: <MYSQL_USER>
    password: <MYSQL_PASSWORD>
    collection_interval: 10s
    statement_events:
      digest_text_limit: 120
      limit: 250
    query_sample_collection:
      max_rows_per_query: 100
    events:
      db.server.query_sample:
        enabled: true
      db.server.top_query:
        enabled: true
    metrics:
      mysql.client.network.io:
        enabled: true
      mysql.connection.errors:
        enabled: true
      mysql.max_used_connections:
        enabled: true
      mysql.query.client.count:
        enabled: true
      mysql.query.count:
        enabled: true
      mysql.query.slow.count:
        enabled: true
      mysql.table.rows:
        enabled: true
      mysql.table.size:
        enabled: true

processors:
  resourcedetection:
    detectors: [system, env]

exporters:
  elasticsearch/otel:
    endpoint: <ES_ENDPOINT>
    api_key: <ES_API_KEY>
    mapping:
      mode: otel

service:
  pipelines:
    metrics:
      receivers: [mysql/primary, mysql/replica]
      processors: [resourcedetection]
      exporters: [elasticsearch/otel]

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 内容包库。

原文:https://www.elastic.co/observability-labs/blog/visualizing-opentelemetry-data-elastic-content-packages

相关推荐
lifallen2 小时前
Flink Checkpoint 流程、Barrier 流动与 RocksDB 排障
java·大数据·flink
C+++Python2 小时前
如何学习Python的应用领域知识?
开发语言·python·学习
疯狂打码的少年2 小时前
【Day12 Java转Python】Python工程的“骨架”——模块、包与__name__
java·开发语言·python
Mike117.2 小时前
GBase 8a UNION 和 UNION ALL 的使用边界
大数据·数据库
全栈开发圈2 小时前
新书速览|MATLAB数据分析与可视化实践:视频教学版
开发语言·matlab·数据分析
网域小星球2 小时前
C 语言从 0 入门(二十二)|内存四区:栈、堆、全局、常量区深度解析
c语言·开发语言
u0107475462 小时前
mysql如何实现高可用集群架构_基于MHA环境搭建与部署
jvm·数据库·python
一 乐2 小时前
工会管理|基于springboot + vue工会管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·工会管理系统
qq_380619162 小时前
如何在phpMyAdmin中处理特殊字符账号名的授权_反引号的正确包裹
jvm·数据库·python