我有一个 kubernetes 集群,其中安装了 .net 7 中的应用程序。该集群还部署了 OpenTelemetry 并安装了 Prometheus 服务器。
opentelemetry 有一个值文件,如下所示
mode: deployment presets: # enables the k8sattributesprocessor and adds it to the traces, metrics, and logs pipelines kubernetesAttributes:
enabled: true # enables the kubeletstatsreceiver and adds it to the metrics pipelines kubeletMetrics:
enabled: true # Enables the filelogreceiver and adds it to the logs pipelines logsCollection:
enabled: true
config:
exporters:
otlphttp/metrics:
endpoint: http://prometheus-server.cmb.svc.cluster.local:9090
tls:
insecure: true
prometheusremotewrite:
endpoint: http://prometheus-server.cmb.svc.cluster.local:9091/api/v1/write
tls:
insecure: true service:
pipelines:
metrics:
exporters:
- otlphttp/metrics
Opentelemetry Pod 启动并运行得很好,并且能够从集群上的所有应用程序接收指标,但无法写入 Prometheus 集群。产生的错误如下
2024-03-20T14:54:29.219Z 信息 exporterhelper/retry_sender.go:118 导出失败。将在间隔后重试请求。 {“种类”:“出口商”, “data_type”:“指标”,“名称”:“otlphttp /指标”,“错误”:“失败 发出 HTTP 请求:Post “http://prometheus-server.cmb.svc.cluster.local:9090/v1/metrics”: 超出上下文截止日期", "间隔": "6.716454422s"}
如果我正确读取您的配置,则您正在使用 OTLP/HTTP 导出器 将指标从 OpenTelemetry Collector 发送到 Prometheus 到端点 http://prometheus-server.cmb.svc.cluster.local: 9090。查看 Prometheus 文档,端点应该是 http://prometheus-server.cmb.svc.cluster.local:9090/api/v1/otlp/.
如这些文档中所述,您还需要确保您的 Prometheus 服务器至少为 2.47 版本,并且功能标志
otlp-write-receiver
已启用。