文章插图
OpenTelemetry 后端OpenTelemetry 收集器并不提供自己的后端,所以可以使用任何供应商或开源产品!
尽管 OpenTelemetry 不提供自己的后端,但通过使用它,我们不会依赖于任何工具或供应商,因为它与供应商无关 。我们不仅可以使用我们想要的任何编程语言,而且还可以选择存储后端,并且只需配置另一个导出器即可轻松切换到另一个后端/供应商 。为了可视化和分析遥测数据,我们只需要在 OpenTelemetry 采集器种配置一个导出器 。
比如 Jaeger 就是一个非常流行的用于分析和查询数据的开源产品 。

文章插图

文章插图
我们可以在 OpenTelemetry 收集器中配置 Jaeger 导出器,以便将数据发送到 Jaeger 。
exporters:jaeger:endpoint: "http://localhost:14250"OpenTelemetry on Kubernetes在 Kubernetes 上使用 OpenTelemetry,主要就是部署 OpenTelemetry 收集器 。我们建议使用 OpenTelemetry Operator 来部署,因为它可以帮助我们轻松部署和管理 OpenTelemetry 收集器,还可以自动检测应用程序 。部署这里我们使用 Helm Chart 来部署 OpenTelemetry Operator,首先添加 Helm Chart 仓库:
$ helm repo add open-telemetry https://open-telemetry.Github.io/opentelemetry-helm-charts$ helm repo update默认情况下会部署一个准入控制器,用于验证 OpenTelemetry Operator 的配置是否正确,为了使 APIServer 能够与 Webhook 组件进行通信,Webhook 需要一个由 APIServer 配置为可信任的 TLS 证书 。为了简单我们这里直接使用自动生成签名证书的方式,使用下面的命令一键安装 OpenTelemetry Operator:
$ helm upgrade --install --set admissionWebhooks.certManager.enabled=false --set admissionWebhooks.certManager.autoGenerateCert=true opentelemetry-operator open-telemetry/opentelemetry-operator --namespace kube-otel --create-namespace正常部署完成后可以看到对应的 Pod 已经正常运行:$ kubectl get pods -n kube-otel -l App.kubernetes.io/name=opentelemetry-operatorNAMEREADYSTATUSRESTARTSAGEopentelemetry-operator-6f77dc895c-4wn8z2/2Running033s此外还会自动为我们添加两个 OpenTelemetry 相关的 CRD:$ kubectl get crd |grep opentelemetryinstrumentations.opentelemetry.io2023-09-05T03:23:28Zopentelemetrycollectors.opentelemetry.io2023-09-05T03:23:28Z
文章插图

文章插图
到这里 OpenTelemetry Operator 就部署完成了 。
然后我们这里选择使用中心 OpenTelemetry 收集器,并让其他 OpenTelemetry 代理将数据发送到该收集器 。从代理接收的数据将在此收集器上进行处理,并通过导出器发送到存储后端 。整个工作流如下图所示:

文章插图

文章插图
创建一个如下所示的 OpenTelemetryCollector 实例对象:
# central-collector.yamlapiVersion: opentelemetry.io/v1alpha1kind: OpenTelemetryCollectormetadata:name: simplestspec:config: |receivers:otlp:protocols:grpc:http:processors:memory_limiter:check_interval: 1slimit_percentage: 75spike_limit_percentage: 15batch:send_batch_size: 10000timeout: 10sexporters:logging:otlp:endpoint: "<tempo_endpoint>"headers:authorization: Basic <api_token> # echo -n "<your user id>:<your api key>" | base64service:pipelines:traces:receivers: [otlp]processors: [memory_limiter, batch]exporters: [logging, otlp]在这里 OpenTelemetry Collector 通过 grpc 和 http 两种协议来接收遥测数据,并通过日志记录导出和 Grafana Tempo 来记录这些 Span,这会将 Span 写入接收 Span 的 OpenTelemetry Collector 实例的控制台和 Grafana Tempo 后端去 。然后我们将使用 Sidecar 模式部署 OpenTelemetry 代理 。该代理会将应用程序的追踪发送到我们的中心(网关)OpenTelemetry 收集器 。
# sidecar.yamlapiVersion: opentelemetry.io/v1alpha1kind: OpenTelemetryCollectormetadata:name: sidecarspec:mode: sidecarconfig: |receivers:otlp:protocols:grpc:http:processors:batch:exporters:logging:otlp:endpoint: "<path_to_central_collector>.<namespace>:4317"service:telemetry:logs:level: "debug"pipelines:traces:receivers: [otlp]processors: []exporters: [logging, otlp]自动检测OpenTelemetry Operator 可以注入和配置 OpenTelemetry 自动检测库 。目前支持 DotNet、JAVA、NodeJS、Python/ target=_blank class=infotextkey>Python 和 Golang(需要手动开启) 。
推荐阅读
- 玻璃种漂彩小葫芦——翡翠入门的首选
- K8S 入门到实战--部署应用到 K8S
- Java 应用通过 OpenTelemetry API 实现手动埋点
- 法国女人为什么不会胖?看看这4个好习惯,或许值得借鉴学习
- Python爬虫如何快速入门学习?
- 还不会主动向前端通过SSE推送消息? 看这篇就会了![Delphi版]
- 谁说下属“整”不了领导?看看这些操作,够阴够狠!
- Bash 脚本编程入门
- Django 入门:构建Python Web应用的全面指南
- 魔方新手入门玩法视频 魔方新手入门玩法
