使用 Elastic 3 步实现基于 OTel 的原生 K8s 和应用可观测性

作者:来自 Elastic Bahubali Shetti

Elastic 的 OpenTelemetry 发行版现已支持 OTel Operator,可使用 EDOT SDK 自动检测应用程序,并管理 EDOT OTel Collector 的部署和生命周期以实现 Kubernetes 可观察性。了解如何通过 3 个简单步骤进行配置。

Elastic 最近发布了 Elastic Distributions of OpenTelemetry (EDOT),该发行版旨在增强标准 OpenTelemetry 发行版的功能并改进 Elastic 现有的 OpenTelemetry 支持。EDOT 可帮助 Elastic 提供其新的统一 OpenTelemetry 体验。SRE 不再需要执行一系列繁琐的步骤来将 OTel 数据装入 Observability。SRE 可以通过一种简单且顺畅的方式来对 OTel 收集器和应用程序进行检测,并将所有 OTel 数据装入 Elastic。此体验的组成部分包括:(在概述博客中详细介绍)

  • OpenTelemetry 的 Elastic 发行版 (EDOT)
  • Elastic 为 OpenTelemetry Operator 提供的配置:
    • OTel 收集器和 SDK 的 OTel 生命周期管理
    • 大多数开发人员不会对应用程序进行自动检测
  • 预打包的接收器、处理器、导出器和 OTel Kubernetes Collector 的配置
  • 用于指标和日志的开箱即用的基于 OTel 的 K8S 仪表板
  • 发现服务、主机和容器的视图清单
  • 直接将 OTel 导入 Elasticsearch(绕过 APM)- 你的所有数据(日志、指标和跟踪)现在都存储在 Elastic 的 Search AI Lake 中

在此博客中,我们将介绍如何通过 3 个简单步骤为 K8S 和你的应用程序导入 OTel:

  1. 从 UI 复制安装命令
  2. 添加 OpenTelemetry helm 图表,使用 Elastic 的 helm 安装 OpenTelemetry Operator 配置并设置你的 Elastic 端点和身份验证
  3. 注释你想要自动检测的应用服务

然后你可以在 Elastic Observability 中轻松查看 K8S 指标、日志和应用程序日志、指标和跟踪。

要关注此博客,你需要具备以下条件:

  1. cloud.elastic.co 上的帐户,具有获取 Elasticsearch 端点和身份验证(API 密钥)的权限
  2. 基于 Go、dotnet、Python 或 Java 的服务的非检测应用程序。通过 OTel 操作员自动检测。在此示例中,我们将使用 Elastiflix 应用程序。
  3. Kubernetes 集群,我们在设置中使用了 EKS
  4. 已加载 Helm 和 Kubectl

要查找身份验证,你可以在 Elastic 的集成部分中找到它。文档中还提供了更多信息。

Elastic 中的 K8S 和应用程序可观察性:

在我们引导你完成这些步骤之前,让我们向你展示 Elastic 中可见的内容。

操作员启动 OTel Collector 后,你可以在 Elastic 中看到以下内容:

Kubernetes 指标:

使用开箱即用的仪表板,你可以查看节点指标、整体集群指标以及跨 pod、部署等的状态。

发现主机、服务和容器的清单:

可在 UI 上的 Observability->Inventory 中找到

主机的详细指标、日志和处理器信息:

可在Observability->Infrastructure->Hosts 中找到

Elastic 的新 Discover(称为 Explorer)中的 K8S 和应用程序日志

可在 Observability->Discover 中找到

应用服务视图(日志、指标和跟踪):

可在 Observability->Application 中找到

然后选择 service 并深入了解不同方面。

上面我们展示了如何使用 Native OTel 数据显示跟踪。

安装步骤

步骤 0. 按照 UI 中列出的命令进行操作

在 Add data->Kubernetes->Kubernetes Monitoring with EDOT

你将找到以下说明,我们将在此处遵循这些说明。

步骤 1. 为 OpenTelemetry Operator 安装 EDOT 配置

运行以下命令。请确保你已在 K8s 集群中进行了身份验证,并且你将在此处运行下面提供的 helm 命令。

复制代码
# Install helm repo needed
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts --force-update
# Install needed secrets. Provide the Elasticsearch Endpoint URL and API key you have noted in previous steps
kubectl create ns opentelemetry-operator-system
kubectl create -n opentelemetry-operator-system secret generic elastic-secret-otel \
    --from-literal=elastic_endpoint='YOUR_ELASTICSEARCH_ENDPOINT' \
    --from-literal=elastic_api_key='YOUR_ELASTICSEARCH_API_KEY'
# Install the EDOT Operator
helm install opentelemetry-kube-stack open-telemetry/opentelemetry-kube-stack --namespace opentelemetry-operator-system --create-namespace --values https://raw.githubusercontent.com/elastic/opentelemetry/refs/heads/main/resources/kubernetes/operator/helm/values.yaml --version 0.3.0

values.yaml 文件配置可以在这里找到。

步骤 1b:确保 OTel 数据已到达 Elastic

最简单的检查方法是转到菜单 > Dashboards > OTELMetrics Kubernetes Cluster Overview,并确保看到以下仪表板正在填充

第 2 步:使用自动检测注释应用程序

在此示例中,我们仅注释一项服务,即 Elastiflix 应用程序中的 favorite-java 服务

使用以下命令启动自动检测:

复制代码
#Annotate Java namespace
kubectl annotate namespace java instrumentation.opentelemetry.io/inject-java="opentelemetry-operator-system/elastic-instrumentation"
#Restart the java-app to get the new annotation
kubectl rollout restart deployment java-app -n java

你还可以使用注释修改 pod 的 yaml

复制代码
metadata:
 name: my-app
 annotations:
   instrumentation.opentelemetry.io/inject-python: "true"

UI 中提供了以下说明:

查看 Elastic APM 中的服务数据

一旦 OTel 数据进入 Elastic,你就可以看到:

  • 基于 OTel 的 Kubernetes 指标的开箱即用仪表板
  • 发现属于 Kubernetes 集群的服务、主机和容器等资源
  • Kubernetes 指标、主机指标、日志、处理器信息、异常检测和通用分析。
  • Elastic Discover 中的日志分析
  • 显示应用程序概览、事务、依赖项、错误等的 APM 功能:

试用

Elastic 的 OpenTelemetry 分布 (EDOT) 通过简化 Kubernetes 和应用程序检测来改变可观察性体验。借助 EDOT,SRE 和开发人员可以绕过复杂的设置,立即深入了解 Kubernetes 集群,并捕获关键指标、日志和跟踪 - 所有这些都在 Elastic Observability 中完成。只需遵循几个简单的步骤,你就可以获得统一、高效的监控解决方案,将你的 OpenTelemetry 数据直接导入 Elastic。凭借强大的开箱即用仪表板、自动应用程序检测和无缝集成,EDOT 不仅可以节省时间,还可以提高整个基础设施的可观察性的准确性和可访问性。立即开始利用 EDOT 来解锁无摩擦的可观察性体验,让你的系统平稳、富有洞察力地运行。

其他资源

原文:Native OTel-based K8s & App Observability in 3 Steps with Elastic --- Elastic Observability Labs

相关推荐
小和尚同志1 小时前
小黑插图 Skill:从 11.7k star 的 Codex 专属,到 Claude Code 能用的平替
人工智能·aigc
高洁011 小时前
孪生不止在工厂:能源、医疗与农业
人工智能·深度学习·transformer·知识图谱·tornado
外域速览1 小时前
智谱50亿美元押注AI自训练
大数据·人工智能
人工智能培训1 小时前
孪生不止在工厂:能源、医疗与农业
大数据·人工智能
米小虾2 小时前
让模型说"我不知道",比让它答对更难:放弃文本生成能换来什么
人工智能
新新学长搞科研2 小时前
【SPIE出版】2026年人工智能、新材料与新能源国际学术会议(AINMNE 2026)
人工智能·新能源·新材料
野生技术架构师2 小时前
2026 Java 面试全套总结,八股 + 场景 + AI 相关面试考点
java·人工智能·面试
QYRdata2 小时前
隐私合规技术迎来拐点:数据主体请求自动化年复合增长率14.0%(2026-2032)
大数据·服务发现
米小虾3 小时前
不写出来的思考:把 Transformer 的层循环起来,是第三条 scaling 轴还是省错了地方?
人工智能
A.说学逗唱的Coke3 小时前
【大模型专题】别再用 HTTP 直连 Agent 了:用 Kafka 承载 A2A 协议,从 PoC 走到生产
人工智能·kafka·a2a