如何解决运行 OpenTelemetry 代理的方法
在撰写本文时,我了解 OTEL 仍在不断发展,但我正在尝试找出一种好方法,在 Kubernetes 的容器化生态系统中运行 OTEL 代理,以收集日志、指标和跟踪并导出到我们的首选遥测供应商 - 我不会说我们使用的是哪个遥测供应商,因为我们希望提供一种与供应商无关的方法。
在这个阶段,我的想法是我们应该将 OTEL 代理作为 side-car 容器运行。造成这种情况的主要原因是 /metrics
处以 Prometheus/OpenMetrics 格式公开的服务指标。如果我们将 OTEL 代理作为守护进程或在底层主机上运行,我们可能必须随着服务的添加/删除/重新安排而不断更新 OTEL 配置,而且 AFAIK 没有自动发现机制。如果我们将 OTEL 代理作为 side-car 运行,我们可以假设通过本地 pod 网络进行通信,只需使用 prometheus 接收器从 localhost 抓取,如下所示:
receivers:
# ...
prometheus:
config:
scrape_configs:
- job_name: 'otel-collector'
scrape_interval: 5s
static_configs:
- targets: ['localhost:5001']
对于日志,我们会在服务和 OTEL side-car 之间设置某种共享(临时)卷,以便我们可以使用文件接收器,例如
receivers:
# ...
filelog:
include: [ /var/log/*.txt ]
对于跟踪,我们将为 .NET 和 Java(分别取决于服务是 .NET Core 还是 Java)配置 OpenTelemetry 自动检测库作为容器构建的一部分,即在文件。我们将其配置为使用诸如 OTLP|Zipkin|Jaeger 导出器之类的东西到 OTEL 代理,该代理在本地 pod 网络中作为边车运行,该网络配置了适当的接收器,例如OTLP|Zipkin|Jaeger 分别。
对于上述所有内容,我们将导出到 Kafka(或 AWS Kinesis 或 Azure 事件中心 - 取决于我们使用的云提供商)之类的东西,主要作为流层,但也作为之间的抽象层我们的生态系统和遥测供应商。然后遥测供应商可以从流中摄取。如果我们需要获取不同供应商/解决方案的日志、指标和跟踪信息,我们可以做到这一点,而无需真正接触我们生态系统中的任何内容。
这听起来是个好方法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。