Monitorando o Milvus com Grafana e Loki
Introdução ao monitoramento do Milvus com Grafana & Loki
Este post irá guiá-lo na configuração do Grafana e do Loki para monitorar suas implantações do Milvus de forma eficaz.
Milvus é um banco de dados vetorial distribuído que visa armazenar, indexar e gerenciar vetores de embedding massivos. Sua capacidade de indexar e pesquisar eficientemente trilhões de vetores torna o Milvus uma escolha preferencial para cargas de trabalho de IA e machine learning.
Por outro lado, o Grafana é uma plataforma de código aberto para monitoramento e observabilidade, ideal para visualizar métricas, logs e traces. Ele permite criar dashboards para acompanhar a saúde e o desempenho do sistema. O Loki se integra ao Grafana como um sistema de agregação de logs, inspirado no Prometheus. Ele gerencia logs de forma eficiente e econômica. Juntos, Grafana e Loki oferecem uma configuração sólida de monitoramento, aumentando a observabilidade para o Milvus e além.
Pré-requisitos
Docker - Certifique-se de que o Docker esteja instalado no seu sistema.
Kubernetes - Tenha um cluster Kubernetes pronto. Você pode usar
minikube or k3dpara desenvolvimento local ou o serviço Kubernetes de um provedor de nuvem para ambientes de produção.Helm - Instale o Helm, um gerenciador de pacotes para Kubernetes, para ajudar você a gerenciar aplicações Kubernetes, você pode consultar nossa documentação para ver como fazer isso https://milvus.io/docs/install_cluster-helm.md
Kubectl - Instale
kubectl, uma ferramenta de linha de comando para interagir com clusters Kubernetes, para implantar aplicações, inspecionar e gerenciar recursos do cluster e visualizar logs.
Configurando K8s
Depois de instalar tudo o que é necessário para executar um cluster K8s, e se você usou minikube, inicie seu cluster com:
minikube start
Verifique o status do seu cluster K8s com:
kubectl cluster-info
⚠️Você também precisará implantar o Milvus no K8s, confira nosso guia de Introdução sobre como você pode fazer isso.
Implantando o Grafana
Grafana é a plataforma de análise e visualização interativa que usaremos. Ela fornece uma rica variedade de charts, graphs e alertas. Ela permite consultar, visualizar e criar alertas sobre suas métricas independentemente de onde estejam armazenadas.
A instalação será feita com Helm
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana --namespace grafana --create-namespace
Você pode verificar se tudo está sendo executado corretamente executando
❯ 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
Implantando Loki & Promtail
Loki é um sistema de agregação de logs inspirado no Prometheus. Ele gerencia logs de forma eficiente e econômica. O Loki usa o Promtail para agregar logs. Promtail é um agente coletor de logs que coleta, rotula e envia logs para o Loki. Ele é feito explicitamente para o Loki. Você verá que uma instância do Promtail é executada em cada nó Kubernetes.
A abordagem do Loki para indexação de logs é única. Ele não indexa o texto real dos logs. Em vez disso, as entradas de log são agrupadas inteligentemente em streams e então indexadas com labels. Esse método reduz significativamente os custos e o tempo entre a ingestão de logs e sua disponibilidade em consultas, proporcionando uma sensação de alívio no gerenciamento de recursos.
O Loki pode ser implantado de diferentes maneiras:
Modo monolítico: Este modo é simples, todos os componentes do Loki são executados dentro de um único processo. É adequado para configurações menores ou para se familiarizar com o Loki sem muita complexidade.
Modo escalável: Neste modo, os componentes do Loki são divididos em serviços separados, como distributors, ingesters, queriers e outros.
Esta configuração foi projetada para alta disponibilidade e escalabilidade, encaixando-se bem em implantações em larga escala. Ela requer um armazenamento de objetos compatível com S3 para armazenar os dados de log, que pode ser AWS S3, Google Cloud Storage ou uma solução auto-hospedada como MinIO.
Para instalar o Loki:
helm upgrade --install loki grafana/loki-distributed -n grafana-loki --create-namespace
Isso instalará o loki dentro do namespace grafana-loki. Se o namespace não existir, o Helm o criará para você.
Certifique-se de que tudo funcione corretamente novamente executando o seguinte:
❯ 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 o Promtail:
Antes de instalar o Promtail, você precisará configurá-lo para se comunicar com o Loki. Isso envolve editar um arquivo de configuração para especificar a URL de serviço do Loki:
- Extraia a configuração padrão do Promtail:
helm show values grafana/promtail > promtail-overrides.yaml
Este comando grava os valores padrão do Promtail em um arquivo chamado promtail-overrides.yaml, que você pode então modificar.
- Edite a configuração padrão do Promtail:
Edite promtail-overrides.yaml para definir o valor de clients.url para o endpoint de serviço do Loki. No Kubernetes, os serviços são acessíveis por meio de registros DNS, então você pode usar o nome DNS do serviço do Loki: loki-loki-distributed-gateway.grafana-loki.svc.cluster.local
N.B.: Se você implantou o Loki em um namespace diferente ou com um nome diferente, ajuste a URL de acordo; fique à vontade para consultar a documentação do Kubernetes.
- Implante o Promtail com seu arquivo de configuração modificado:
helm upgrade --install --values promtail-overrides.yaml promtail grafana/promtail -n grafana-loki
Este comando instrui o Helm a implantar o Promtail no namespace grafana-loki, usando sua configuração personalizada. Ele garante que o Promtail esteja configurado para encaminhar logs para o Loki, concluindo sua configuração de agregação de logs.
Como de costume, certifique-se de que tudo funciona executando:
❯ 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
Configure as fontes de dados e o dashboard do Grafana
Com o Loki e o Promtail agora implantados, o próximo passo é integrar o Loki como uma fonte de dados dentro do Grafana, permitindo que você visualize e consulte seus logs.
- Acessando o Grafana: Primeiro, você precisa acessar sua instância do Grafana. Se o Grafana estiver em execução dentro do seu cluster Kubernetes, você pode usar o encaminhamento de porta para acessar a interface do Grafana a partir da sua máquina local:
kubectl port-forward service/grafana 8080:80 -n grafana
- Fazendo login no Grafana: O nome de usuário padrão do Grafana é admin. Para a senha, o Grafana gera uma aleatória quando instalado via Helm. Você pode recuperá-la com:
kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Navegando para Fontes de Dados: Depois de fazer login, vá para a barra lateral do Grafana, encontre o ícone de "Connections" e selecione "Data Sources".
Adicionando o Loki: Clique no botão "Add data source", procure por Loki e selecione-o. Você será levado para a página de configurações da fonte de dados do Loki.
- Configurando o Loki no Grafana: Insira a URL do serviço Loki, que será algo como
http://loki-loki-distributed-gateway.grafana-loki.svc.cluster.local, assumindo a configuração padrão. Esta URL direciona o Grafana para sua instância do Loki dentro do seu cluster Kubernetes.

Zilliz Cloud On-Demand Compute: Pay Only for What You Use
The customer case behind Zilliz Cloud On-Demand: how a $10K vector search bill came down to under $500, and the engineering changes that made it possible.

How to Choose the Best Embedding Model for RAG in 2026: 10 Models Benchmarked
We benchmarked 10 embedding models on cross-modal, cross-lingual, long-document, and dimension compression tasks. See which one fits your RAG pipeline.

Bringing AI to Legal Tech: The Role of Vector Databases in Enhancing LLM Guardrails
Discover how vector databases enhance AI reliability in legal tech, ensuring accurate, compliant, and trustworthy AI-powered legal solutions.



