使用 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 > [OTEL][Metrics 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

相关推荐
梦云澜3 小时前
论文阅读(十二):全基因组关联研究中生物通路的图形建模
论文阅读·人工智能·深度学习
远洋录3 小时前
构建一个数据分析Agent:提升分析效率的实践
人工智能·ai·ai agent
IT古董4 小时前
【深度学习】常见模型-Transformer模型
人工智能·深度学习·transformer
沐雪架构师5 小时前
AI大模型开发原理篇-2:语言模型雏形之词袋模型
人工智能·语言模型·自然语言处理
python算法(魔法师版)6 小时前
深度学习深度解析:从基础到前沿
人工智能·深度学习
kakaZhui6 小时前
【llm对话系统】大模型源码分析之 LLaMA 位置编码 RoPE
人工智能·深度学习·chatgpt·aigc·llama
struggle20257 小时前
一个开源 GenBI AI 本地代理(确保本地数据安全),使数据驱动型团队能够与其数据进行互动,生成文本到 SQL、图表、电子表格、报告和 BI
人工智能·深度学习·目标检测·语言模型·自然语言处理·数据挖掘·集成学习
佛州小李哥7 小时前
通过亚马逊云科技Bedrock打造自定义AI智能体Agent(上)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
Linux运维老纪8 小时前
DNS缓存详解(DNS Cache Detailed Explanation)
计算机网络·缓存·云原生·容器·kubernetes·云计算·运维开发
云空8 小时前
《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》
运维·人工智能·web安全·网络安全·开源·网络攻击模型·安全威胁分析