#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