Istio Istio

Observa tu malla: Prometheus, Grafana, tracing y Kiali

Cada sidecar ya emite métricas y trazas: instala los complementos que convierten eso en algo que realmente puedas mirar.

12 min Intermedio

Cada sidecar de Envoy de una malla ya está generando métricas y datos de trazas detallados como efecto secundario de gestionar el tráfico; no hace falta añadir nada extra a tus aplicaciones para que esos datos existan. Lo que falta sin componentes adicionales es un lugar adonde enviarlos, almacenarlos y mirarlos. Esta guía instala las piezas que hacen eso y hacen realmente visible el tráfico de una malla.

Para qué sirve cada complemento

  • Prometheus recopila y almacena las métricas que expone cada sidecar: tasas de peticiones, tasas de error, latencias, por servicio y por ruta. Las guías dedicadas de Prometheus de esta biblioteca cubren la herramienta en profundidad; aquí es específicamente el backend que consultan los propios dashboards de Istio.
  • Grafana visualiza esos datos de Prometheus mediante dashboards de Istio prediseñados: visión general del tráfico de la malla, detalle por servicio, salud del plano de control.
  • Un backend de trazado distribuido (Jaeger ha sido la opción más veterana en los complementos de ejemplo de Istio; algunos entornos usan Zipkin o un backend basado en OpenTelemetry en su lugar) recopila trazas que muestran el recorrido completo de una sola petición por cada servicio que tocó, que es lo que permite ver en qué punto de una petición de varios saltos ocurrió realmente una ralentización, en lugar de solo saber que ocurrió en algún lugar.
  • Kiali es una consola de service mesh creada específicamente para Istio: un grafo de topología en vivo de cómo se comunican realmente los servicios entre sí, respaldado por las mismas métricas y datos de trazas, además de la capacidad de inspeccionar y, en algunos casos, editar la configuración de la malla directamente desde su interfaz.

Instala los complementos de ejemplo

El paquete de versión de Istio incluye manifiestos listos para aplicar de todos ellos en samples/addons:

cd istio-*  # el directorio de la instalación de istioctl
kubectl apply -f samples/addons
kubectl get pods -n istio-system

Deberías ver Pods de prometheus, grafana, kiali y un backend de trazado arrancar junto a istiod y cualquier gateway que ya esté en ejecución en istio-system. Estos manifiestos de ejemplo están pensados para evaluación y aprendizaje, no como un despliegue listo para producción de cada herramienta: los límites de recursos, el almacenamiento y la retención por defecto son modestos, y un despliegue real normalmente ejecutaría Prometheus y Grafana con su propia configuración dedicada y dimensionada adecuadamente en lugar del ejemplo incluido.

Accede a Kiali

Ninguno de estos complementos está expuesto fuera del clúster por defecto. Haz un port-forward para llegar a la interfaz de Kiali:

kubectl port-forward svc/kiali -n istio-system 20001:20001

Abre http://localhost:20001. Con tráfico fluyendo por los servicios de la malla, la vista de grafo de Kiali se renderiza en vivo: qué servicios hablan con cuáles, codificados por color según su salud, con el volumen de peticiones y la tasa de error por conexión visibles.

Por qué el grafo puede verse mal, o vacío

Si la vista de topología de Kiali está vacía, escasa o muestra nodos desconectados que claramente deberían estar hablando entre sí, la causa más común es la misma que se cubrió en la guía anterior: falta la etiqueta app en los Deployments y Services subyacentes. Kiali construye su grafo a partir de esa etiqueta; las cargas de trabajo sin ella existen en la malla y transportan tráfico sin problema, pero Kiali no tiene una forma fiable de identificarlas y conectarlas en su visualización. Comprueba la etiqueta antes de asumir que la propia malla está mal configurada.

La segunda causa más común es simplemente que aún no hay tráfico: el grafo de Kiali refleja el tráfico observado durante una ventana de tiempo seleccionada, así que un servicio recién incluido en la malla al que todavía no se le ha enviado ninguna petición no tiene nada que mostrar. Envía unas cuantas peticiones y actualiza.

Los dashboards prediseñados de Grafana

Haz port-forward a Grafana del mismo modo:

kubectl port-forward svc/grafana -n istio-system 3000:3000

La instalación de ejemplo incluye dashboards específicos de Istio ya aprovisionados, tráfico de la malla, detalle por servicio, rendimiento del plano de control, en lugar de requerir que los construyas desde cero. Son un punto de partida realmente bueno para entender qué métricas expone Istio y cómo están estructuradas; la guía de Grafana de otra parte de esta biblioteca cubre cómo personalizar y ampliar dashboards como estos una vez que hayas superado la exploración de los predeterminados.

Trata la instalación de ejemplo como un punto de partida, no como un destino

Una vez que hayas confirmado que la malla es observable y entiendas qué muestra cada herramienta, el siguiente paso natural para cualquier cosa más allá de la evaluación local es reemplazar los ejemplos incluidos por instalaciones configuradas adecuadamente y gestionadas de forma independiente, probablemente con las guías dedicadas de Prometheus y Grafana de otra parte de esta biblioteca, en lugar de depender indefinidamente de samples/addons. Los manifiestos de ejemplo existen para llevarte rápidamente a “puedo ver mi malla”, no para ser la pila de observabilidad a largo plazo de un clúster de producción.

Guías populares