Jaeger Operator 发布的指标是否也包括来自收集器和查询服务的指标?

Do metrics published by the Jaeger Operator include those from the Collector and Query services too?

我正在使用 Jaeger Operator and it seems to be working fine. However, now I am trying to set up Prometheus metrics scraping (using the Prometheus Operator) but I am not seeing a Service in my cluster that exposes the metrics ports for the Jaeger Collector (port 14269) or Query services (port 16687) (port number reference from the Jeager Monitoring documentation).

部署 Jaeger

我看到的唯一相关 Servicejaeger-operator-metrics:

$ kubectl get svc -A
NAME                            TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)
simple-prod-collector           ClusterIP      10.43.20.131    <none>           9411/TCP,14250/TCP,14267/TCP,14268/TCP
simple-prod-query               ClusterIP      10.43.141.211   <none>           16686/TCP
simple-prod-collector-headless  ClusterIP      None            <none>           9411/TCP,14250/TCP,14267/TCP,14268/TCP
jaeger-operator-metrics         ClusterIP      10.43.90.169    <none>           8383/TCP,8686/TCP

我可以设置 Prometheus ServiceMonitor 来从该服务中抓取指标,但我不确定这是否包括通常由收集器和查询微服务收集的指标...我我猜不会,因为这似乎违反了微服务的前提。

我错过了 Jaeger Operator 规范中的某些设置以在其他组件中公开这些指标端点吗?

我想通了...Jaeger Operator 不会创建 Service 公开指标端点。这些端点仅通过收集器和查询组件的 pods 公开。

Collector pod 规范中的示例:

    ports:
    - containerPort: 9411
      name: zipkin
      protocol: TCP
    - containerPort: 14267
      name: c-tchan-trft
      protocol: TCP
    - containerPort: 14268
      name: c-binary-trft
      protocol: TCP
    - containerPort: 14269
      name: admin-http
      protocol: TCP
    - containerPort: 14250
      name: grpc
      protocol: TCP

注意那里的 admin-http 端口。

因此,为了让 Prometheus Operator 抓取这些指标,我创建了一个 PodMonitor,它涵盖了 Collector 和 Query 组件,因为它们都有 labels/app: jaegeradmin-http 端口定义:

cat <<EOF | kubectl apply -f -
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: jaeger-components
  namespace: monitoring
  labels:
    release: prometheus
spec:
  podMetricsEndpoints:
  - path: /metrics
    port: admin-http
  namespaceSelector:
    matchNames:
    - monitoring
  selector:
    matchLabels:
        app: jaeger
EOF