我在 Azure AKS 集群中有一些容器工作负载。我需要使用 OpenTelemetry 从容器工作负载中获取指标、日志和跟踪数据,并让 OTEL 收集器收集这些数据。
我在 AKS 集群中以 K8s 容器的形式设置了 Grafana 和 Prometheus 服务器。当我以部署 Pod 的形式部署 OTEL 收集器时(https://opentelemetry.io/docs/kubernetes/helm/collector/)以下是将OTEL收集器中的数据指向prometheus数据源的导出器配置:
exporters:
prometheus:
enable_open_metrics: true
endpoint: ${env.MY_POD_IP}:9464
resource_to_telemetry_conversion:
enabled: true
receivers:
prometheus:
config:
scrape_configs:
- job_name: opentelemetry-collector
scrape_interval: 10s
static_configs:
- targets:
- ${env:MY_POD_IP}:8888
这有效。在这里,OTEL 收集器能够将数据导出到 Prometheus 数据源,并且可以使用 Grafana 进行可视化。
然而,我的痛点是当使用 OpenTelemetry Collector 作为 Kubernetes Operator 时(https://opentelemetry.io/docs/kubernetes/operator/). 在哪里定义导出器和接收器配置?
以下是 OTEL 收集器的 YAML 配置:
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: otel-collector
spec:
config: |
receivers:
otlp:
protocols:
grpc:
http:
processors:
memory_limiter:
check_interval: 1s
limit_percentage: 75
spike_limit_percentage: 15
batch:
send_batch_size: 10000
timeout: 10s
exporters:
debug:
service:
pipelines:
traces:
receivers: [otlp]
processors: []
exporters: [debug]
这里,我该如何定义需要将数据导出到 Prometheus 服务器端点?我假设需要使用端口 9464。但是,我在哪里提到该配置?