Как настроить диаграмму istio helm для использования внешнего стека kube-prometheus?

Я развернул сервисную сетку istio в кластере GKE, используя диаграммы управления base и istiod , используя эти документы в пространстве имен istio-system .

Я развернул Prometheus, grafana и alert-manager, используя диаграмму управления kube-prometheus-stack.

Каждый модуль этой рабочей нагрузки работает нормально; Я не видел никакой ошибки. Почему-то я не получил никаких показателей в пользовательском интерфейсе Prometheus, связанных с рабочей нагрузкой istio. Из-за этого я не видел сетевого графа на приборной панели kiali.

Может ли кто-нибудь помочь мне решить эту проблему?

3 ответа

Мне удалось решить вышеупомянутую проблему, создав мониторы служб для плоскости данных и плоскости управления. Перейдите по ссылке ниже для получения более подробной информации.

      https://tetrate.io/blog/how-to-configure-prometheus-operator-scrape-metrics-from-istio-1-6/

При развертывании Prometheus с помощью контрольных диаграмм kube-prometheus-stack вам потребуется добавить servicemonitor для метрик istio, поскольку аннотации k8s (prometheus.io/scrape) не работает. Создайте этот сервисный монитор, чтобы включить очистку метрик istio:

      apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: prometheus-oper-istio-controlplane
  labels:
    release: prometheus
spec:
  jobLabel: istio
  selector:
    matchExpressions:
      - {key: istio, operator: In, values: [mixer,pilot,galley,citadel,sidecar-injector]}
  namespaceSelector:
    any: true
  endpoints:
  - port: http-monitoring
    interval: 15s
  - port: http-policy-monitoring
    interval: 15s
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: prometheus-oper-istio-dataplane
  labels:
    monitoring: istio-dataplane
    release: prometheus
spec:
  selector:
    matchExpressions:
      - {key: istio-prometheus-ignore, operator: DoesNotExist}
  namespaceSelector:
    any: true
  jobLabel: envoy-stats
  endpoints:
  - path: /stats/prometheus
    targetPort: http-envoy-prom
    interval: 15s
    relabelings:
    - sourceLabels: [__meta_kubernetes_pod_container_port_name]
      action: keep
      regex: '.*-envoy-prom'
    - action: labelmap
      regex: "__meta_kubernetes_pod_label_(.+)"
    - sourceLabels: [__meta_kubernetes_namespace]
      action: replace
      targetLabel: namespace
    - sourceLabels: [__meta_kubernetes_pod_name]
      action: replace
      targetLabel: pod_name

После создания этих сервисных мониторов метрики начнут появляться через несколько минут. Вы можете проверить статус под своимPrometheus -> Status - TargetsТам будет запись примерно такая:
serviceMonitor/yournamespace/prometheus-oper-istio-controlplane/0 (1/1 up)иserviceMonitor/yournamespace/prometheus-oper-istio-dataplane/0 (1/1 up)

Istio ожидает, что Prometheus обнаружит, какие модули предоставляют метрики, с помощью аннотаций Kubernetes.prometheus.io/scrape,prometheus.io/port, иprometheus.io/path.

Сообщество Prometheus решило, что эти аннотации, хотя и популярны, недостаточно полезны, чтобы их можно было включить по умолчанию. Из-за этого диаграмма управления kube-prometheus-stack не обнаруживает модули, использующие эти аннотации.

Чтобы ваша установка Prometheus очищала ваши метрики Istio, вам нужно либо настроить Istio для предоставления метрик так, как ожидает ваша установка Prometheus (вам нужно будет проверить конфигурацию Prometheus для этого, я не знаю, что она делает, по умолчанию) или добавьте задание очистки Prometheus, которое будет выполнять обнаружение с использованием приведенных выше аннотаций.

Подробности о том, как интегрировать Prometheus с Istio, доступны здесь , а пример файла конфигурации Prometheus доступен здесь.

Другие вопросы по тегам