Kubernetes 部署 OpenTelemetry Collector到后端示例
前置条件
- 拥有一个正常运行的Kubernetes集群
- 服务端已安装Prometheus, 并与Kubernetes集群正常通信
- 服务端已安装Jaeger, 并与Kubernetes集群正常通信
- 客户端go 版本>=1.13
说明
- ct: 即
kubectl
的简写形式, 个人爱好, 图片里使用ct
简写代替了kubectl
架构
graph LR
App --> OpenTelemetrySDK
OpenTelemetrySDK -->|telemeasuring-data| Exporter
Exporter --> OpenTelemetryCollector
OpenTelemetryCollector --> Jaeger
OpenTelemetryCollector --> Prometheus
OpenTelemetry服务端环境搭建
OpenTelemetry服务端分为Daemonset和Sidecar模式
Daemonset
Daemonset是在集群中的每 一个节点运行一个OpenTelemetry Collector Pod,遥测数据需要导出到worknode的OpenTelemetry Collector Pod上, 通常需要一个网关Collector
graph TB
subgraph node1
Application1-1 --> OpenTelemetryCollectorPod1
Application1-1 --> OpenTelemetryCollectorPod1
end
subgraph node2
Application2-1 --> OpenTelemetryCollectorPod2
Application2-2 --> OpenTelemetryCollectorPod2
end
subgraph node3
Application3-1 --> OpenTelemetryCollectorPod3
Application3-2 --> OpenTelemetryCollectorPod3
end
Sidecar
Sidecar 是一个pod运行一个OpenTelemetryCollector实例
graph TB
subgraph pod1
Application1 --> OpenTelemetryCollector1
end
subgraph pod2
Application2 --> OpenTelemetryCollector2
end
subgraph pod3
Application3 --> OpenTelemetryCollector3
end
它们会去安装cert-manager和创建CRD,用于管理OpenTelemetry的和instrumentations.opentelemetry.io自动埋点
```shell
ct get crd | grep openTelemetry