Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Selectores y Configuraciones de Scrape

Rancher-Istio ha quedado obsoleto desde Rancher v2.12.0; dirígete a la SUSE Application Collection build de Istio para una mayor seguridad (incluida en las suscripciones de SUSE Rancher Prime). Se puede encontrar información detallada en este anuncio.

La aplicación de Monitoreo establece prometheus.prometheusSpec.ignoreNamespaceSelectors=false, lo que permite el monitoreo en todos los espacios de nombres por defecto.

Esto asegura que puedas ver el tráfico, métricas y gráficos de los recursos desplegados en un espacio de nombres con la etiqueta istio-injection=enabled.

Si deseas limitar Prometheus a espacios de nombres específicos, establece prometheus.prometheusSpec.ignoreNamespaceSelectors=true. Una vez que hagas esto, deberás realizar una configuración adicional para continuar monitoreando tus recursos.

Limitando el Monitoreo a Espacios de Nombres Específicos al Establecer ignoreNamespaceSelectors en Verdadero

Para limitar el monitoreo a espacios de nombres específicos, editarás la opción del gráfico Helm ignoreNamespaceSelectors. Configurarás esta opción al instalar o actualizar el gráfico Helm de Monitoreo:

  1. Al instalar o actualizar el gráfico Helm de Monitoreo, edita el values.yml y establece prometheus.prometheusSpec.ignoreNamespaceSelectors=true.

  2. Completa la instalación o actualización.

Resultado: Prometheus estará limitado a espacios de nombres específicos, lo que significa que una de las siguientes configuraciones deberá ser establecida para continuar viendo datos en varios paneles.

Habilitando a Prometheus para Detectar Recursos en Otros Espacios de Nombres

Hay dos formas diferentes de habilitar a Prometheus para detectar recursos en otros espacios de nombres cuando prometheus.prometheusSpec.ignoreNamespaceSelectors=true:

  • Monitoreo de espacios de nombres específicos: Añade un Monitor de Servicio o Monitor de Pod en el espacio de nombres con los objetivos que deseas raspar.

  • Monitoreo entre espacios de nombres: Añade un additionalScrapeConfig a tu instancia de rancher-monitoring para raspar todos los objetivos en todos los espacios de nombres.

Monitoreo de Espacios de Nombres Específicos: Crea un Monitor de Servicio o un Monitor de Pod

Esta opción te permite definir qué servicios o pods específicos deseas monitorizar en un espacio de nombres específico.

La desventaja de usabilidad es que tienes que crear el monitor de servicio o el monitor de pod por cada espacio de nombres, ya que no puedes monitorizar entre espacios de nombres.

Requisito previo:

Define un ServiceMonitor o PodMonitor para <your namespace>. A continuación se proporciona un ejemplo de ServiceMonitor.

  1. Haz clic en ☰ > Gestión de Clústeres.

  2. Ve al clúster que creaste y haz clic en Explorar.

  3. En la barra de navegación superior, abre la shell de kubectl.

  4. Si el archivo ServiceMonitor o PodMonitor está almacenado localmente en tu clúster, en kubectl create -f <name of service/pod monitor file>.yaml.

  5. Si el ServiceMonitor o PodMonitor no está almacenado localmente, ejecuta `cat<< EOF | kubectl apply -f -`, pega el contenido del archivo en la terminal y luego ejecuta EOF para completar el comando.

  6. Ejecuta kubectl label namespace <your namespace> istio-injection=enabled para habilitar la inyección del sidecar de envoy.

Resultado: <your namespace> puede ser raspado por prometheus.

Ejemplo de Monitor de Servicio para Proxies de Istio
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

Monitoreo entre espacios de nombres: Establece ignoreNamespaceSelectors en Falso

Esto permite la monitorización entre espacios de nombres al proporcionar a Prometheus configuraciones de raspado adicionales.

La desventaja de usabilidad es que todos los additionalScrapeConfigs de Prometheus se mantienen en un único Secret. Esto podría dificultar la actualización si la monitorización ya está desplegada con additionalScrapeConfigs antes de instalar Istio.

  1. Al instalar o actualizar el gráfico Helm de Monitoreo, edita el values.yml y establece el array prometheus.prometheusSpec.additionalScrapeConfigs en el Configuración de Raspado Adicional proporcionado a continuación.

  2. Completa la instalación o actualización.

Resultado: Todos los espacios de nombres con la etiqueta istio-injection=enabled serán raspados por prometheus.

Configuración de Raspado Adicional
- 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