Monitoraggio di Milvus con Grafana e Loki
Introduzione al monitoraggio di Milvus con Grafana e Loki
Questo post ti guiderà nella configurazione di Grafana e Loki per monitorare efficacemente i tuoi deployment di Milvus.
Milvus è un database vettoriale distribuito che mira ad archiviare, indicizzare e gestire enormi vettori di embedding. La sua capacità di indicizzare e cercare in modo efficiente tra trilioni di vettori rende Milvus una scelta di riferimento per carichi di lavoro di IA e machine learning.
D'altra parte, Grafana è una piattaforma open-source per il monitoraggio e l'osservabilità, ideale per visualizzare metriche, log e tracce. Ti consente di creare dashboard per tenere sotto controllo lo stato e le prestazioni del sistema. Loki si affianca a Grafana come sistema di aggregazione dei log, traendo ispirazione da Prometheus. Gestisce i log in modo efficiente e conveniente. Insieme, Grafana e Loki offrono una solida configurazione di monitoraggio, aumentando l'osservabilità per Milvus e oltre.
Prerequisiti
Docker - Assicurati che Docker sia installato sul tuo sistema.
Kubernetes - Tieni pronto un cluster Kubernetes. Puoi usare
minikube or k3dper lo sviluppo locale o un servizio Kubernetes di un cloud provider per ambienti di produzione.Helm - Installa Helm, un gestore di pacchetti per Kubernetes, per aiutarti a gestire applicazioni Kubernetes, puoi consultare la nostra documentazione per vedere come farlo https://milvus.io/docs/install_cluster-helm.md
Kubectl - Installa
kubectl, uno strumento da riga di comando per interagire con i cluster Kubernetes, per distribuire applicazioni, ispezionare e gestire risorse del cluster e visualizzare i log.
Configurazione di K8s
Dopo aver installato tutto il necessario per eseguire un cluster K8s, e se hai usato minikube, avvia il tuo cluster con:
minikube start
Controlla lo stato del tuo cluster K8s con:
kubectl cluster-info
⚠️Dovrai anche distribuire Milvus su K8s, dai un'occhiata alla nostra guida introduttiva su come puoi farlo.
Distribuzione di Grafana
Grafana è la piattaforma di analisi e visualizzazione interattiva che useremo. Fornisce una ricca varietà di diagrammi, grafici e avvisi. Ti consente di interrogare, visualizzare e creare avvisi sulle tue metriche indipendentemente da dove siano archiviate.
L'installazione verrà eseguita con Helm
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana --namespace grafana --create-namespace
Puoi verificare che tutto funzioni correttamente eseguendo
❯ 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
Distribuzione di Loki e Promtail
Loki è un sistema di aggregazione dei log ispirato a Prometheus. Gestisce i log in modo efficiente e conveniente. Loki utilizza Promtail per aggregare i log. Promtail è un agente di raccolta dei log che raccoglie, etichetta e invia i log a Loki. È esplicitamente realizzato per Loki. Vedrai che un'istanza di Promtail viene eseguita su ciascun nodo Kubernetes.
L'approccio di Loki all'indicizzazione dei log è unico. Non indicizza il testo effettivo dei log. Invece, le voci di log vengono raggruppate intelligentemente in stream e poi indicizzate con etichette. Questo metodo riduce significativamente i costi e il tempo tra l'ingestione dei log e la loro disponibilità nelle query, fornendo un senso di sollievo nella gestione delle risorse.
Loki può essere distribuito in modi diversi:
Modalità monolitica: Questa modalità è semplice, tutti i componenti di Loki vengono eseguiti all'interno di un singolo processo. È adatta per configurazioni più piccole o per prendere familiarità con Loki senza troppa complessità.
Modalità scalabile: In questa modalità, i componenti di Loki sono suddivisi in servizi separati, come distributor, ingester, querier e altri.
Questa configurazione è progettata per alta disponibilità e scalabilità, adattandosi bene a deployment su larga scala. Richiede uno storage di oggetti compatibile con S3 per archiviare i dati di log, che potrebbe essere AWS S3, Google Cloud Storage o una soluzione self-hosted come MinIO.
Per installare Loki:
helm upgrade --install loki grafana/loki-distributed -n grafana-loki --create-namespace
Questo installerà loki all'interno del namespace grafana-loki. Se il namespace non esiste, Helm lo creerà per te.
Assicurati che tutto funzioni di nuovo correttamente eseguendo quanto segue:
❯ 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
Per installare Promtail:
Prima di installare Promtail, dovrai configurarlo per comunicare con Loki. Questo comporta la modifica di un file di configurazione per specificare l'URL del servizio di Loki:
- Estrai la configurazione predefinita di Promtail:
helm show values grafana/promtail > promtail-overrides.yaml
Questo comando scrive i valori predefiniti di Promtail in un file chiamato promtail-overrides.yaml, che puoi poi modificare.
- Modifica la configurazione predefinita di Promtail:
Modifica promtail-overrides.yaml per impostare il valore clients.url sull'endpoint del servizio di Loki. In Kubernetes, i servizi sono accessibili tramite record DNS, quindi puoi usare il nome DNS del servizio di Loki: loki-loki-distributed-gateway.grafana-loki.svc.cluster.local
N.B.: Se hai distribuito Loki in un namespace diverso o con un nome diverso, modifica l'URL di conseguenza; sentiti libero di consultare la documentazione di Kubernetes.
- Distribuisci Promtail con il tuo file di configurazione modificato:
helm upgrade --install --values promtail-overrides.yaml promtail grafana/promtail -n grafana-loki
Questo comando indica a Helm di distribuire Promtail nel namespace grafana-loki, usando la tua configurazione personalizzata. Garantisce che Promtail sia configurato per inoltrare i log a Loki, completando la configurazione dell'aggregazione dei log.
Come al solito, assicurati che tutto funzioni eseguendo:
❯ 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 le origini dati e la dashboard di Grafana
Con Loki e Promtail ora distribuiti, il passo successivo è integrare Loki come origine dati all'interno di Grafana, consentendoti di visualizzare e interrogare i tuoi log.
- Accesso a Grafana: Per prima cosa, devi accedere alla tua istanza Grafana. Se Grafana è in esecuzione all'interno del tuo cluster Kubernetes, puoi usare il port forwarding per accedere all'interfaccia utente di Grafana dalla tua macchina locale:
kubectl port-forward service/grafana 8080:80 -n grafana
- Accesso a Grafana: Il nome utente predefinito per Grafana è admin. Per la password, Grafana ne genera una casuale quando viene installato tramite Helm. Puoi recuperarla con:
kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Navigazione alle origini dati: Una volta effettuato l'accesso, vai alla barra laterale di Grafana, trova l'icona per "Connections" e seleziona "Data Sources".
Aggiunta di Loki: Fai clic sul pulsante "Add data source", cerca Loki e selezionalo. Verrai portato alla pagina delle impostazioni dell'origine dati Loki.
- Configurazione di Loki in Grafana: Inserisci l'URL del servizio Loki, che sarà qualcosa come
http://loki-loki-distributed-gateway.grafana-loki.svc.cluster.local, assumendo la configurazione predefinita. Questo URL indirizza Grafana alla tua istanza Loki all'interno del tuo cluster Kubernetes.

My Wife Wanted Dior. I Spent $600 on Claude Code to Vibe-Code a 2M-Line Database Instead.
Write tests, not code reviews. How a test-first workflow with 6 parallel Claude Code sessions turns a 2M-line C++ codebase into a daily shipping pipeline.

A Developer's Guide to Exploring Milvus 2.6 Features on Zilliz Cloud
Milvus 2.6 marks a shift from “vector search + glue code” to a more advanced retrieval engine, and it is now Generally Available (GA) on Zilliz Cloud (a managed Milvus service).

Zilliz Cloud BYOC Now Available Across AWS, GCP, and Azure
Zilliz Cloud BYOC is now generally available on all three major clouds. Deploy fully managed vector search in your own AWS, GCP, or Azure account — your data never leaves your VPC.



