Supervisión de Milvus con Grafana y Loki
Introducción a la monitorización de Milvus con Grafana y Loki
Esta publicación te guiará en la configuración de Grafana y Loki para monitorizar tus despliegues de Milvus de forma eficaz.
Milvus es una base de datos vectorial distribuida que tiene como objetivo almacenar, indexar y gestionar vectores de embedding masivos. Su capacidad para indexar y buscar eficientemente entre billones de vectores convierte a Milvus en una opción de referencia para cargas de trabajo de IA y aprendizaje automático.
Por otro lado, Grafana es una plataforma de código abierto para monitorización y observabilidad, ideal para visualizar métricas, registros y trazas. Te permite crear paneles para controlar el estado y el rendimiento del sistema. Loki se combina con Grafana como un sistema de agregación de registros, inspirado en Prometheus. Gestiona los registros de forma eficiente y rentable. Juntos, Grafana y Loki ofrecen una sólida configuración de monitorización, impulsando la observabilidad para Milvus y más allá.
Requisitos previos
Docker - Asegúrate de que Docker esté instalado en tu sistema.
Kubernetes - Ten preparado un clúster de Kubernetes. Puedes usar
minikube or k3dpara el desarrollo local o el servicio de Kubernetes de un proveedor en la nube para entornos de producción.Helm - Instala Helm, un gestor de paquetes para Kubernetes, para ayudarte a gestionar aplicaciones de Kubernetes; puedes consultar nuestra documentación para ver cómo hacerlo https://milvus.io/docs/install_cluster-helm.md
Kubectl - Instala
kubectl, una herramienta de línea de comandos para interactuar con clústeres de Kubernetes, para desplegar aplicaciones, inspeccionar y gestionar recursos del clúster, y ver registros.
Configuración de K8s
Después de instalar todo lo necesario para ejecutar un clúster de K8s, y si usaste minikube, inicia tu clúster con:
minikube start
Comprueba el estado de tu clúster de K8s con:
kubectl cluster-info
⚠️También necesitarás desplegar Milvus en K8s; consulta nuestra guía de inicio sobre cómo puedes hacerlo.
Despliegue de Grafana
Grafana es la plataforma de analítica y visualización interactiva que usaremos. Proporciona una gran variedad de gráficos, diagramas y alertas. Te permite consultar, visualizar y crear alertas sobre tus métricas independientemente de dónde estén almacenadas.
La instalación se realizará con Helm
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana --namespace grafana --create-namespace
Puedes comprobar que todo se está ejecutando correctamente ejecutando
❯ kubectl get all -n grafana
NAME READY STATUS RESTARTS AGE
pod/grafana-987d4c5c6-sb8t9 1/1 Running 1 (58m ago) 47h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/grafana ClusterIP 10.43.114.168 <none> 80/TCP 47h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/grafana 1/1 1 1 47h
NAME DESIRED CURRENT READY AGE
replicaset.apps/grafana-987d4c5c6 1 1 1 47h
Despliegue de Loki y Promtail
Loki es un sistema de agregación de registros inspirado en Prometheus. Gestiona los registros de forma eficiente y rentable. Loki usa Promtail para agregar registros. Promtail es un agente recolector de registros que recopila, etiqueta y envía registros a Loki. Está hecho explícitamente para Loki. Verás que una instancia de Promtail se ejecuta en cada nodo de Kubernetes.
El enfoque de Loki para la indexación de registros es único. No indexa el texto real de los registros. En su lugar, las entradas de registro se agrupan inteligentemente en flujos y luego se indexan con etiquetas. Este método reduce significativamente los costos y el tiempo entre la ingesta de registros y su disponibilidad en consultas, proporcionando una sensación de alivio en la gestión de recursos.
Loki puede desplegarse de diferentes maneras:
Modo monolítico: Este modo es sencillo, todos los componentes de Loki se ejecutan dentro de un único proceso. Es adecuado para configuraciones más pequeñas o para familiarizarse con Loki sin mucha complejidad.
Modo escalable: En este modo, los componentes de Loki se dividen en servicios separados, como distribuidores, ingesters, queriers y otros.
Esta configuración está diseñada para alta disponibilidad y escalabilidad, y encaja bien con despliegues a gran escala. Requiere un almacenamiento de objetos compatible con S3 para almacenar los datos de logs, que podría ser AWS S3, Google Cloud Storage o una solución autohospedada como MinIO.
Para instalar Loki:
helm upgrade --install loki grafana/loki-distributed -n grafana-loki --create-namespace
Esto instalará loki dentro del namespace grafana-loki. Si el namespace no existe, Helm lo creará por ti.
Asegúrate de que todo vuelva a funcionar correctamente ejecutando lo siguiente:
❯ kubectl get all -n grafana-loki
NAME READY STATUS RESTARTS AGE
pod/loki-loki-distributed-distributor-6b75796c6b-qvdbc 1/1 Running 1 (68m ago) 28h
pod/loki-loki-distributed-querier-0 1/1 Running 1 (68m ago) 28h
pod/loki-loki-distributed-query-frontend-55574bdd64-5hhvl 1/1 Running 1 (68m ago) 28h
pod/loki-loki-distributed-ingester-0 1/1 Running 1 (68m ago) 28h
pod/loki-loki-distributed-gateway-c6ccc655b-mkg5j 1/1 Running 0 67m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/loki-loki-distributed-memberlist ClusterIP None <none> 7946/TCP 47h
service/loki-loki-distributed-ingester-headless ClusterIP None <none> 3100/TCP,9095/TCP 47h
service/loki-loki-distributed-query-frontend-headless ClusterIP None <none> 3100/TCP,9095/TCP,9096/TCP 47h
service/loki-loki-distributed-ingester ClusterIP 10.43.13.160 <none> 3100/TCP,9095/TCP 47h
service/loki-loki-distributed-querier-headless ClusterIP None <none> 3100/TCP,9095/TCP 47h
service/loki-loki-distributed-distributor ClusterIP 10.43.201.9 <none> 3100/TCP,9095/TCP 47h
service/loki-loki-distributed-query-frontend ClusterIP 10.43.99.40 <none> 3100/TCP,9095/TCP,9096/TCP 47h
service/loki-loki-distributed-gateway ClusterIP 10.43.186.50 <none> 80/TCP 47h
service/loki-loki-distributed-querier ClusterIP 10.43.53.211 <none> 3100/TCP,9095/TCP 47h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/loki-loki-distributed-distributor 1/1 1 1 47h
deployment.apps/loki-loki-distributed-query-frontend 1/1 1 1 47h
deployment.apps/loki-loki-distributed-gateway 1/1 1 1 47h
NAME DESIRED CURRENT READY AGE
replicaset.apps/loki-loki-distributed-distributor-6b75796c6b 1 1 1 47h
replicaset.apps/loki-loki-distributed-query-frontend-55574bdd64 1 1 1 47h
replicaset.apps/loki-loki-distributed-gateway-c6ccc655b 1 1 1 47h
NAME READY AGE
statefulset.apps/loki-loki-distributed-querier 1/1 47h
statefulset.apps/loki-loki-distributed-ingester 1/1 47h
Para instalar Promtail:
Antes de instalar Promtail, tendrás que configurarlo para comunicarse con Loki. Esto implica editar un archivo de configuración para especificar la URL del servicio de Loki:
- Extrae la configuración predeterminada de Promtail:
helm show values grafana/promtail > promtail-overrides.yaml
Este comando escribe los valores predeterminados de Promtail en un archivo llamado promtail-overrides.yaml, que luego puedes modificar.
- Edita la configuración predeterminada de Promtail:
Edita promtail-overrides.yaml para establecer el valor de clients.url en el endpoint del servicio de Loki. En Kubernetes, los servicios son accesibles mediante registros DNS, por lo que puedes usar el nombre DNS del servicio de Loki: loki-loki-distributed-gateway.grafana-loki.svc.cluster.local
Nota: Si desplegaste Loki en un namespace diferente o con un nombre diferente, ajusta la URL en consecuencia; no dudes en consultar la documentación de Kubernetes.
- Despliega Promtail con tu archivo de configuración modificado:
helm upgrade --install --values promtail-overrides.yaml promtail grafana/promtail -n grafana-loki
Este comando indica a Helm que despliegue Promtail en el namespace grafana-loki, usando tu configuración personalizada. Garantiza que Promtail esté configurado para reenviar logs a Loki, completando tu configuración de agregación de logs.
Como de costumbre, asegúrate de que todo funcione ejecutando:
❯ kubectl get all -n grafana-loki | grep promtail pod/promtail-qgl4t 1/1 Running 1 (77m ago) 28h
daemonset.apps/promtail 1 1 1 1 1 <none> 2d
Configura las fuentes de datos y el dashboard de Grafana
Con Loki y Promtail ya desplegados, el siguiente paso es integrar Loki como fuente de datos dentro de Grafana, lo que te permite visualizar y consultar tus logs.
- Acceso a Grafana: Primero, necesitas acceder a tu instancia de Grafana. Si Grafana se está ejecutando dentro de tu clúster de Kubernetes, puedes usar port forwarding para acceder a la interfaz de Grafana desde tu máquina local:
kubectl port-forward service/grafana 8080:80 -n grafana
- Inicio de sesión en Grafana: El nombre de usuario predeterminado de Grafana es admin. Para la contraseña, Grafana genera una aleatoria cuando se instala mediante Helm. Puedes recuperarla con:
kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Navegación a Data Sources: Una vez que hayas iniciado sesión, ve a la barra lateral de Grafana, busca el icono de "Connections" y selecciona "Data Sources".
Adición de Loki: Haz clic en el botón "Add data source", busca Loki y selecciónalo. Serás llevado a la página de configuración de la fuente de datos de Loki.
- Configuración de Loki en Grafana: Introduce la URL del servicio de Loki, que será algo como
http://loki-loki-distributed-gateway.grafana-loki.svc.cluster.local, suponiendo la configuración predeterminada. Esta URL apunta Grafana a tu instancia de Loki dentro de tu clúster de Kubernetes.

Why and How to Migrate from Self-Hosted Milvus to Zilliz Cloud
A simple, step-by-step guide to migrating from Milvus to Zilliz Cloud. Learn both endpoint and backup methods for a smooth, scalable vector database migration.

The Great AI Agent Protocol Race: Function Calling vs. MCP vs. A2A
Compare Function Calling, MCP, and A2A protocols for AI agents. Learn which standard best fits your development needs and future-proof your applications.

Legal Document Analysis: Harnessing Zilliz Cloud's Semantic Search and RAG for Legal Insights
Enhance legal document analysis with Zilliz Cloud’s Semantic Search and RAG. Improve accuracy, efficiency, and scalability for contracts, case law, and compliance.



