Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

Selektoren und Scrape-Konfigurationen

Rancher-Istio ist seit Rancher v2.12.0 ausgelaufen; verwenden Sie stattdessen die SUSE Application Collection-Variante von Istio für verbesserte Sicherheit (enthalten in SUSE Rancher Prime-Abonnements). Detaillierte Informationen finden Sie in dieser Ankündigung.

Die Monitoring-App setzt prometheus.prometheusSpec.ignoreNamespaceSelectors=false, was standardmäßig das Monitoring über alle Namespaces ermöglicht.

Dies stellt sicher, dass Sie den Datenverkehr, die Metriken und die Grafiken für Ressourcen, die in einem Namespace mit istio-injection=enabled-Label bereitgestellt wurden, einsehen können.

Wenn Sie Prometheus auf bestimmte Namespaces beschränken möchten, setzen Sie prometheus.prometheusSpec.ignoreNamespaceSelectors=true. Sobald Sie dies getan haben, müssen Sie noch zusätzliche Konfiguration vornehmen, um Ihre Ressourcen weiterhin zu überwachen.

Das Monitoring auf bestimmte Namespaces beschränken, indem Sie ignoreNamespaceSelectors auf True setzen.

Um das Monitoring auf bestimmte Namespaces zu beschränken, bearbeiten Sie die ignoreNamespaceSelectors Helm-Chart-Option. Sie konfigurieren diese Option beim Installieren oder Aktualisieren des Monitoring Helm-Charts:

  1. Beim Installieren oder Aktualisieren des Monitoring Helm-Charts bearbeiten Sie die values.yml und setzen prometheus.prometheusSpec.ignoreNamespaceSelectors=true.

  2. Schließen Sie die Installation oder Aktualisierung ab.

Ergebnis: Prometheus wird auf bestimmte Namespaces beschränkt, was bedeutet, dass eine der folgenden Konfigurationen eingerichtet werden muss, um weiterhin Daten in verschiedenen Dashboards anzuzeigen.

Aktivieren von Prometheus zur Erkennung von Ressourcen in anderen Namespaces.

Es gibt zwei verschiedene Möglichkeiten, Prometheus zu aktivieren, um Ressourcen in anderen Namespaces zu erkennen, wenn prometheus.prometheusSpec.ignoreNamespaceSelectors=true:

  • Monitoring spezifischer Namespaces: Fügen Sie einen Service-Monitor oder Pod-Monitor im Namespace mit den Zielen hinzu, die Sie scrapen möchten.

  • Monitoring über Namespaces: Fügen Sie ein additionalScrapeConfig zu Ihrer Rancher-Monitoring-Instanz hinzu, um alle Ziele in allen Namespaces zu scrapen.

Monitoring spezifischer Namespaces: Erstellen Sie einen Service-Monitor oder Pod-Monitor

Diese Option ermöglicht es Ihnen, festzulegen, welche spezifischen Dienste oder Pods Sie in einem bestimmten Namespace überwachen möchten.

Der Usability-Handel besteht darin, dass Sie den Service-Monitor oder Pod-Monitor pro Namespace erstellen müssen, da Sie nicht über Namespaces hinweg überwachen können.

Voraussetzung:

Definieren Sie einen ServiceMonitor oder PodMonitor für <your namespace>. Ein Beispiel-ServiceMonitor ist unten angegeben.

  1. Klicken Sie auf ☰ > Clusterverwaltung.

  2. Gehen Sie zu dem Cluster, das Sie erstellt haben, und klicken Sie auf Erkunden.

  3. Öffnen Sie in der oberen Navigationsleiste die kubectl-Shell.

  4. Wenn die ServiceMonitor- oder PodMonitor-Datei lokal in Ihrem Cluster gespeichert ist, in kubectl create -f <name of service/pod monitor file>.yaml.

  5. Wenn der ServiceMonitor oder PodMonitor nicht lokal gespeichert ist, führen Sie `cat<< EOF | kubectl apply -f -` aus, fügen Sie den Inhalt der Datei in das Terminal ein und führen Sie dann EOF aus, um den Befehl abzuschließen.

  6. Führen Sie kubectl label namespace <your namespace> istio-injection=enabled aus, um die Envoy-Sidecar-Injektion zu aktivieren.

Ergebnis: <your namespace> kann von Prometheus gescraped werden.

Beispiel-Service-Monitor für Istio-Proxys
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: envoy-stats-monitor
  namespace: istio-system
  labels:
    monitoring: istio-proxies
spec:
  selector:
    matchExpressions:
    - {key: istio-prometheus-ignore, operator: DoesNotExist}
  namespaceSelector:
    any: true
  jobLabel: envoy-stats
  endpoints:
  - path: /stats/prometheus
    targetPort: 15090
    interval: 15s
    relabelings:
    - sourceLabels: [__meta_kubernetes_pod_container_port_name]
      action: keep
      regex: '.*-envoy-prom'
    - action: labeldrop
      regex: "__meta_kubernetes_pod_label_(.+)"
    - sourceLabels: [__meta_kubernetes_namespace]
      action: replace
      targetLabel: namespace
    - sourceLabels: [__meta_kubernetes_pod_name]
      action: replace
      targetLabel: pod_name

Überwachung über Namespaces hinweg: Setzen Sie ignoreNamespaceSelectors auf False

Dies ermöglicht die Überwachung über Namespaces hinweg, indem Prometheus zusätzliche Scrape-Konfigurationen erhält.

Der Usability-Handel besteht darin, dass alle von Prometheus additionalScrapeConfigs in einem einzigen Secret verwaltet werden. Dies könnte das Upgrade erschweren, wenn die Überwachung bereits mit additionalScrapeConfigs bereitgestellt wurde, bevor Istio installiert wurde.

  1. Beim Installieren oder Aktualisieren des Monitoring Helm-Charts bearbeiten Sie die values.yml und setzen das prometheus.prometheusSpec.additionalScrapeConfigs-Array auf die unten bereitgestellten Zusätzliche Scrape-Konfiguration.

  2. Schließen Sie die Installation oder Aktualisierung ab.

Ergebnis: Alle Namespaces mit istio-injection=enabled-Label werden von Prometheus gescraped.

Zusätzliche Scrape-Konfiguration
- job_name: 'istio/envoy-stats'
  scrape_interval: 15s
  metrics_path: /stats/prometheus
  kubernetes_sd_configs:
    - role: pod
  relabel_configs:
    - source_labels: [__meta_kubernetes_pod_container_port_name]
      action: keep
      regex: '.*-envoy-prom'
    - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
      action: replace
      regex: ([^:]+)(?::\d+)?;(\d+)
      replacement: $1:15090
      target_label: __address__
    - action: labelmap
      regex: __meta_kubernetes_pod_label_(.+)
    - source_labels: [__meta_kubernetes_namespace]
      action: replace
      target_label: namespace
    - source_labels: [__meta_kubernetes_pod_name]
      action: replace
      target_label: pod_name