概念
OpenTelemetry API
负责创建遥测数据的类型, 用于生成指标/跟踪/日志的遥测数据
OpenTelemetry SDK
Collector 收集器
负责收集/处理/导出遥测数据
- 建议将收集器与服务一起使用,它允许服务快速卸载数据,收集器可以负责其他处理
- 每种语言的默认 OTLP 导出器都假定本地收集器端点,因此,如果您启动收集器,它将自动开始接收遥测数据
- 收集: 收集OpenTelemetry API生成的遥测数据
- 处理: 重试、批处理、加密甚至敏感数据筛选等处理
- 导出: 可以将OpenTelemetry生成的遥测数据转换成对应的后端(例如Prometheus/Jaeger)的数据格式并导出
部署
Helm Kubernetes部署Collector
使用helm chart在k8s部署Collector有4种模式:
- Daemonset
- Deployment
- Statefulset
- Sidecar
Deployment 模式
如果您想更好地控制 OpenTelemetry Collector 并创建独立应用程序,则可以选择部署。通过部署,您可以相对轻松地纵向扩展收集器以监控更多目标,在发生任何意外情况时回滚到早期版本,暂停收集器等。通常,您可以将 Collector 实例作为应用程序进行管理。
以下示例配置将收集器部署为部署资源。接收器是 Jaeger 接收器,导出器是调试导出器. 。
$ kubectl apply -f - <<EOF
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: my-collector
spec:
mode: deployment # This configuration is omittable.
config: |
receivers:
jaeger:
protocols:
grpc:
processors:
exporters:
debug:
service:
pipelines:
traces:
receivers: [jaeger]
processors: []
exporters: [debug]
EOF
DaemonSet 模式
如果您希望 Collector 在 Kubernetes 节点上作为代理运行,DaemonSet 应该满足您的需求。在这种情况下,每个 Kubernetes 节点都有自己的 Collector 副本,用于监控其中的 Pod。
以下示例配置将收集器部署为 DaemonSet 资源。接收器是 Jaeger 接收器,导出器是调试导出器。
$ kubectl apply -f - <<EOF
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: my-collector
spec:
mode: daemonset
hostNetwork: true
config: |
receivers:
jaeger:
protocols:
grpc:
processors:
exporters:
debug:
verbosity: detailed
service:
pipelines:
traces:
receivers: [jaeger]
processors: []
exporters: [debug]
EOF