前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用 Elastic 3 个步骤实现基于原生 OTel 的 K8s 和应用可观测性

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

原创
作者头像
点火三周
发布于 2024-12-27 02:28:41
发布于 2024-12-27 02:28:41
1520
举报

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

最近,Elastic 发布了其 OpenTelemetry (OTel) 的 Elastic 发行版(EDOT),旨在增强标准 OpenTelemetry 发行版的能力,并改进现有的 Elastic 对 OpenTelemetry 的支持。EDOT 帮助 Elastic 提供了全新的统一 OpenTelemetry 体验。SRE 不再需要通过繁琐的步骤来配置和摄取 OTel 数据到可观测性中,而是可以通过简单的步骤来配置 OTel 收集器和应用程序,并将所有 OTel 数据摄取到 Elastic 中。这一体验的组成部分包括(详细信息请参阅概述博客):

  • Elastic 的 OpenTelemetry 发行版 (EDOT)
  • 提供 OpenTelemetry Operator 配置的 Elastic:
    • OTel 收集器和 SDK 的生命周期管理
    • 应用程序的自动化插桩,大多数开发人员不需要手动插桩预包装的接收器、处理器、导出器和 OTel Kubernetes 收集器的配置基于 OTel 的开箱即用的 K8S 仪表板,用于度量和日志服务、主机和容器的自动发现视图直接将 OTel 数据摄取到 Elasticsearch(绕过 APM)——所有数据(日志、度量和跟踪)现在都存储在 Elastic 的 Search AI Lake 中

本文将介绍如何通过三个简单步骤将 OTel 数据摄取到 K8S 和应用程序中:

  1. UI 复制安装命令
  2. 添加 OpenTelemetry Helm 图表,使用 Elastic 的 Helm 配置安装 OpenTelemetry Operator,并设置 Elastic 端点和认证
  3. 注释您希望自动插桩的应用程序服务

然后,您可以轻松地在 Elastic Observability 中查看 K8S 的度量、日志以及应用程序的日志、度量和跟踪。

OpenTelemetry 统一可观测性体验
OpenTelemetry 统一可观测性体验

要跟随本文,您需要具备以下条件:

  1. 在 cloud.elastic.co 上拥有一个账户,并获取 Elasticsearch 端点和认证(API 密钥)
  2. 一个未插桩的应用程序,服务基于 Go、dotnet、PythonJava。通过 OTel 操作符进行自动插桩。在此示例中,我们将使用 Elastiflix 应用程序
  3. 一个 Kubernetes 集群,我们在设置中使用了 EKS
  4. 已安装 Helm 和 Kubectl

您可以在 Elastic 的集成部分找到认证信息。更多信息也可以在文档中找到。

OpenTelemetry API 密钥
OpenTelemetry API 密钥

在 Elastic 中实现 K8S 和应用程序可观测性

在介绍步骤之前,我们先来看看在 Elastic 中可以看到的内容。

一旦 Operator 启动 OTel 收集器,您可以在 Elastic 中看到以下内容:

Kubernetes 度量

使用开箱即用的仪表板,您可以查看节点度量、整体集群度量和状态,如 pods、部署等。

基于 OTel 的 Kubernetes 仪表板
基于 OTel 的 Kubernetes 仪表板

主机、服务和容器的自动发现视图

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

基于 OTel 的 Kubernetes 清单
基于 OTel 的 Kubernetes 清单

主机的详细度量、日志和处理器信息

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

基于 OTel 的 Kubernetes 主机度量
基于 OTel 的 Kubernetes 主机度量

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

可以在 Observability->Discover 中找到

基于 OTel 的 Kubernetes 日志
基于 OTel 的 Kubernetes 日志

应用程序服务视图(日志、度量和跟踪)

可以在 Observability->Application 中找到

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

基于 OTel 的应用程序 Java 跟踪
基于 OTel 的应用程序 Java 跟踪

上图展示了使用原生 OTel 数据显示的跟踪。

安装步骤

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

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

您将找到以下指令,我们将在这里遵循。

EDOT 操作符安装
EDOT 操作符安装

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

运行以下命令。请确保您已经在 K8s 集群中进行了认证,并在此处运行下面提供的 Helm 命令。

代码语言:bash
AI代码解释
复制
# 添加所需的 helm 仓库
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts --force-update
# 创建所需的密钥。提供之前记录的 Elasticsearch 端点 URL 和 API 密钥
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'
# 安装 EDOT 操作符
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

最简单的方法是转到菜单 > 仪表板 > OTEL 集群概览,确保您看到以下仪表板正在填充

基于 OTel 的 Kubernetes 仪表板
基于 OTel 的 Kubernetes 仪表板

步骤 2: 使用自动插桩注释应用程序

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

使用以下命令启动自动插桩:

代码语言:bash
AI代码解释
复制
# 注释 Java 命名空间
kubectl annotate namespace java instrumentation.opentelemetry.io/inject-java="opentelemetry-operator-system/elastic-instrumentation"
# 重新启动 java-app 以获取新的注释
kubectl rollout restart deployment java-app -n java

您也可以通过注释来修改 pod 的 yaml 文件

代码语言:yaml
AI代码解释
复制
metadata:
 name: my-app
 annotations:
   instrumentation.opentelemetry.io/inject-python: "true"

这些指令在 UI 中提供:

使用 EDOT SDK 注释应用程序
使用 EDOT SDK 注释应用程序

在 Elastic APM 中查看服务数据

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

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

尝试一下

Elastic 的 OpenTelemetry 发行版 (EDOT) 通过简化 Kubernetes 和应用程序的插桩,彻底改变了可观测性体验。有了 EDOT,SRE 和开发人员可以绕过复杂的设置,立即深入了解 Kubernetes 集群,并捕获关键的度量、日志和跟踪——这一切都在 Elastic Observability 中。只需几个简单步骤,您就可以使用统一、高效的监控解决方案,将 OpenTelemetry 数据直接导入 Elastic。凭借强大的开箱即用仪表板、自动应用程序插桩和无缝集成,EDOT 不仅节省时间,还提高了整个基础设施的可观测性数据的准确性和可访问性。今天就开始使用 EDOT,体验无摩擦的可观测性,保持系统的顺畅和洞察力。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用 Elastic 实现基于原生 OTel 的 K8s 和应用可观测性
    • 在 Elastic 中实现 K8S 和应用程序可观测性
      • Kubernetes 度量
      • 主机、服务和容器的自动发现视图
      • 主机的详细度量、日志和处理器信息
      • Elastic 新 Discover(称为 Explorer)中的 K8S 和应用程序日志
      • 应用程序服务视图(日志、度量和跟踪)
    • 安装步骤
      • 步骤 0. 按照 UI 中列出的命令操作
      • 步骤 1. 安装 OpenTelemetry Operator 的 EDOT 配置
      • 步骤 1b: 确保 OTel 数据到达 Elastic
      • 步骤 2: 使用自动插桩注释应用程序
    • 在 Elastic APM 中查看服务数据
    • 尝试一下
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档