Supervision de Milvus avec Grafana et Loki
Introduction à la surveillance de Milvus avec Grafana et Loki
Cet article vous guidera dans la configuration de Grafana et Loki pour surveiller efficacement vos déploiements Milvus.
Milvus est une base de données vectorielle distribuée qui vise à stocker, indexer et gérer des vecteurs d’embedding massifs. Sa capacité à indexer et rechercher efficacement parmi des billions de vecteurs fait de Milvus un choix incontournable pour les charges de travail d’IA et de machine learning.
D’autre part, Grafana est une plateforme open-source de surveillance et d’observabilité, idéale pour visualiser des métriques, des journaux et des traces. Elle vous permet de créer des tableaux de bord pour suivre l’état et les performances du système. Loki s’associe à Grafana en tant que système d’agrégation de journaux, en s’inspirant de Prometheus. Il gère les journaux efficacement et à moindre coût. Ensemble, Grafana et Loki offrent une configuration de surveillance solide, renforçant l’observabilité pour Milvus et au-delà.
Prérequis
Docker - Assurez-vous que Docker est installé sur votre système.
Kubernetes - Préparez un cluster Kubernetes. Vous pouvez utiliser
minikube or k3dpour le développement local ou le service Kubernetes d’un fournisseur cloud pour les environnements de production.Helm - Installez Helm, un gestionnaire de paquets pour Kubernetes, afin de vous aider à gérer les applications Kubernetes, vous pouvez consulter notre documentation pour voir comment procéder https://milvus.io/docs/install_cluster-helm.md
Kubectl - Installez
kubectl, un outil en ligne de commande pour interagir avec les clusters Kubernetes, afin de déployer des applications, inspecter et gérer les ressources du cluster, et consulter les journaux.
Configuration de K8s
Après avoir installé tout le nécessaire pour exécuter un cluster K8s, et si vous avez utilisé minikube, démarrez votre cluster avec :
minikube start
Vérifiez l’état de votre cluster K8s avec :
kubectl cluster-info
⚠️Vous devrez également déployer Milvus sur K8s, consultez notre guide de démarrage pour savoir comment procéder.
Déploiement de Grafana
Grafana est la plateforme d’analyse et de visualisation interactive que nous utiliserons. Elle offre une riche variété de graphiques, diagrammes et alertes. Elle vous permet d’interroger, visualiser et créer des alertes sur vos métriques, quel que soit l’endroit où elles sont stockées.
L’installation se fera avec Helm
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana --namespace grafana --create-namespace
Vous pouvez vérifier que tout fonctionne correctement en exécutant
❯ 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
Déploiement de Loki et Promtail
Loki est un système d’agrégation de journaux inspiré de Prometheus. Il gère les journaux efficacement et à moindre coût. Loki utilise Promtail pour agréger les journaux. Promtail est un agent collecteur de journaux qui collecte, étiquette et envoie les journaux à Loki. Il est explicitement conçu pour Loki. Vous verrez qu’une instance de Promtail s’exécute sur chaque nœud Kubernetes.
L’approche de Loki en matière d’indexation des journaux est unique. Il n’indexe pas le texte réel des journaux. Au lieu de cela, les entrées de journaux sont intelligemment regroupées en flux, puis indexées avec des étiquettes. Cette méthode réduit considérablement les coûts et le délai entre l’ingestion des journaux et leur disponibilité dans les requêtes, offrant un soulagement dans la gestion des ressources.
Loki peut être déployé de différentes manières :
Mode monolithique: Ce mode est simple, tous les composants de Loki s’exécutent au sein d’un seul processus. Il convient aux installations plus petites ou pour se familiariser avec Loki sans trop de complexité.
Mode évolutif: Dans ce mode, les composants de Loki sont divisés en services distincts, tels que les distributors, ingesters, queriers, et autres.
Cette configuration est conçue pour la haute disponibilité et l’évolutivité, et convient bien aux déploiements à grande échelle. Elle nécessite un stockage d’objets compatible S3 pour stocker les données de logs, qui peut être AWS S3, Google Cloud Storage, ou une solution auto-hébergée comme MinIO.
Pour installer Loki:
helm upgrade --install loki grafana/loki-distributed -n grafana-loki --create-namespace
Cela installera loki dans l’espace de noms grafana-loki. Si l’espace de noms n’existe pas, Helm le créera pour vous.
Assurez-vous que tout fonctionne à nouveau correctement en exécutant ce qui suit:
❯ 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
Pour installer Promtail:
Avant d’installer Promtail, vous devrez le configurer pour communiquer avec Loki. Cela implique de modifier un fichier de configuration afin de spécifier l’URL du service Loki:
- Extraire la configuration Promtail par défaut :
helm show values grafana/promtail > promtail-overrides.yaml
Cette commande écrit les valeurs Promtail par défaut dans un fichier nommé promtail-overrides.yaml, que vous pouvez ensuite modifier.
- Modifier la configuration Promtail par défaut :
Modifiez promtail-overrides.yaml pour définir la valeur clients.url sur le point de terminaison du service Loki. Dans Kubernetes, les services sont accessibles via des enregistrements DNS, vous pouvez donc utiliser le nom DNS du service Loki : loki-loki-distributed-gateway.grafana-loki.svc.cluster.local
N.B. : Si vous avez déployé Loki dans un autre namespace ou sous un autre nom, ajustez l’URL en conséquence ; n’hésitez pas à consulter la documentation Kubernetes.
- Déployer Promtail avec votre fichier de configuration modifié :
helm upgrade --install --values promtail-overrides.yaml promtail grafana/promtail -n grafana-loki
Cette commande indique à Helm de déployer Promtail dans le namespace grafana-loki, en utilisant votre configuration personnalisée. Elle garantit que Promtail est configuré pour transférer les journaux vers Loki, finalisant ainsi votre configuration d’agrégation des journaux.
Comme d’habitude, assurez-vous que tout fonctionne en exécutant :
❯ 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
Configurer les sources de données et le tableau de bord Grafana
Maintenant que Loki et Promtail sont déployés, l’étape suivante consiste à intégrer Loki comme source de données dans Grafana, ce qui vous permet de visualiser et d’interroger vos journaux.
- Accéder à Grafana : Tout d’abord, vous devez accéder à votre instance Grafana. Si Grafana s’exécute dans votre cluster Kubernetes, vous pouvez utiliser le transfert de port pour accéder à l’interface Grafana depuis votre machine locale :
kubectl port-forward service/grafana 8080:80 -n grafana
- Se connecter à Grafana : Le nom d’utilisateur par défaut pour Grafana est admin. Pour le mot de passe, Grafana en génère un aléatoire lorsqu’il est installé via Helm. Vous pouvez le récupérer avec :
kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Accéder aux sources de données : Une fois connecté, allez dans la barre latérale de Grafana, trouvez l’icône "Connections", puis sélectionnez "Data Sources".
Ajouter Loki : Cliquez sur le bouton "Add data source", recherchez Loki, puis sélectionnez-le. Vous serez redirigé vers la page des paramètres de la source de données Loki.
- Configurer Loki dans Grafana : Saisissez l’URL du service Loki, qui ressemblera à
http://loki-loki-distributed-gateway.grafana-loki.svc.cluster.local, en supposant une configuration par défaut. Cette URL pointe Grafana vers votre instance Loki au sein de votre cluster Kubernetes.
](https://assets.zilliz.com/Zilliz_Cloud_Launches_in_AWS_Australia_cbfe928ceb.png)
Zilliz Cloud Now Available in AWS Asia Pacific (Seoul)
Zilliz Cloud is now available in AWS Seoul — low-latency vector search, in-country data residency, and one-step migration for Korean AI teams. 31 regions across 5 clouds.

Why Context Engineering Is Becoming the Full Stack of AI Agents
Discover how context engineering unifies prompts, RAG, and tools to build smarter, production-ready AI agents powered by Milvus.

Zilliz Cloud Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).



