Включают ли метрики, публикуемые оператором Jaeger, также из служб сбора и запросов?

#prometheus #prometheus-operator #jaeger

#prometheus #prometheus-operator #jaeger

Вопрос:

Я развертываю Jaeger с помощью оператора Jaeger, и, похоже, он работает нормально. Однако сейчас я пытаюсь настроить очистку метрик Prometheus (используя оператор Prometheus), но я не вижу Service в своем кластере, который предоставляет порты метрик для сборщика Jaeger (порт 14269) или служб запросов (порт 16687) (ссылка на номер порта из документации по мониторингу Jeager).

Единственное Service , что я вижу, это jaeger-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, которые я пропустил для отображения конечных точек этих метрик в других компонентах?

Ответ №1:

Я понял это… Оператор Jaeger не создает Service представление конечных точек метрик. Эти конечные точки просто отображаются через модули для компонентов сборщика и запроса.

Пример из спецификации модуля сбора:

     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 очистить эти метрики, я создал a PodMonitor , который охватывает как компоненты сборщика, так и запроса, потому что у обоих из них labels/app: jaeger admin-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