Мониторинг Milvus с помощью Grafana и Loki
Введение в мониторинг Milvus с помощью Grafana и Loki
Этот пост поможет вам настроить Grafana и Loki для эффективного мониторинга ваших развертываний Milvus.
Milvus — это распределенная векторная база данных, предназначенная для хранения, индексирования и управления массивными embedding-векторами. Способность эффективно индексировать и выполнять поиск по триллионам векторов делает Milvus предпочтительным выбором для рабочих нагрузок ИИ и машинного обучения.
С другой стороны, Grafana — это open-source платформа для мониторинга и observability, идеально подходящая для визуализации метрик, логов и трассировок. Она позволяет создавать дашборды, чтобы следить за состоянием системы и производительностью. Loki работает вместе с Grafana как система агрегации логов, вдохновленная Prometheus. Она управляет логами эффективно и экономично. Вместе Grafana и Loki предлагают надежную настройку мониторинга, повышая observability для Milvus и не только.
Предварительные требования
Docker - Убедитесь, что Docker установлен в вашей системе.
Kubernetes - Подготовьте кластер Kubernetes. Вы можете использовать
minikube or k3dдля локальной разработки или Kubernetes-сервис облачного провайдера для production-сред.Helm - Установите Helm, менеджер пакетов для Kubernetes, чтобы помочь вам управлять Kubernetes-приложениями; вы можете ознакомиться с нашей документацией, чтобы узнать, как это сделать https://milvus.io/docs/install_cluster-helm.md
Kubectl - Установите
kubectl, инструмент командной строки для взаимодействия с кластерами Kubernetes, чтобы развертывать приложения, проверять и управлять ресурсами кластера, а также просматривать логи.
Настройка K8s
После установки всего необходимого для запуска кластера K8s, и если вы использовали minikube, запустите свой кластер с помощью:
minikube start
Проверьте статус вашего кластера K8s с помощью:
kubectl cluster-info
⚠️Вам также потребуется развернуть Milvus в K8s, ознакомьтесь с нашим руководством по началу работы о том, как это сделать.
Развертывание Grafana
Grafana — это аналитическая и интерактивная платформа визуализации, которую мы будем использовать. Она предоставляет большое разнообразие диаграмм, графиков и оповещений. Она позволяет вам запрашивать, визуализировать и создавать оповещения по вашим метрикам независимо от того, где они хранятся.
Установка будет выполнена с помощью Helm
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana --namespace grafana --create-namespace
Вы можете проверить, что все работает корректно, выполнив
❯ 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
Развертывание Loki и Promtail
Loki — это система агрегации логов, вдохновленная Prometheus. Она управляет логами эффективно и экономично. Loki использует Promtail для агрегации логов. Promtail — это агент-сборщик логов, который собирает, маркирует и отправляет логи в Loki. Он специально создан для Loki. Вы увидите, что экземпляр Promtail работает на каждом узле Kubernetes.
Подход Loki к индексированию логов уникален. Он не индексирует фактический текст логов. Вместо этого записи логов интеллектуально группируются в потоки, а затем индексируются с помощью меток. Этот метод значительно снижает затраты и время между поступлением логов и их доступностью в запросах, обеспечивая облегчение в управлении ресурсами.
Loki можно развернуть разными способами:
Монолитный режим: Этот режим прост: все компоненты Loki работают в рамках одного процесса. Он подходит для небольших установок или для знакомства с Loki без особой сложности.
Масштабируемый режим: В этом режиме компоненты Loki разделены на отдельные сервисы, такие как distributors, ingesters, queriers и другие.
Такая настройка предназначена для высокой доступности и масштабируемости и хорошо подходит для крупномасштабных развертываний. Для хранения данных журналов требуется S3-совместимое объектное хранилище, которым может быть AWS S3, Google Cloud Storage или самостоятельно размещенное решение вроде MinIO.
Чтобы установить Loki:
helm upgrade --install loki grafana/loki-distributed -n grafana-loki --create-namespace
Это установит loki в пространстве имен grafana-loki. Если пространство имен не существует, Helm создаст его для вас.
Убедитесь, что всё снова работает корректно, выполнив следующее:
❯ 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
Чтобы установить Promtail:
Перед установкой Promtail вам нужно настроить его для взаимодействия с Loki. Это включает редактирование конфигурационного файла, чтобы указать URL сервиса Loki:
- Извлеките конфигурацию Promtail по умолчанию:
helm show values grafana/promtail > promtail-overrides.yaml
Эта команда записывает значения Promtail по умолчанию в файл с именем promtail-overrides.yaml, который затем можно изменить.
- Отредактируйте конфигурацию Promtail по умолчанию:
Отредактируйте promtail-overrides.yaml, чтобы установить значение clients.url на endpoint сервиса Loki. В Kubernetes сервисы доступны через DNS-записи, поэтому вы можете использовать DNS-имя сервиса Loki: loki-loki-distributed-gateway.grafana-loki.svc.cluster.local
Примечание: Если вы развернули Loki в другом namespace или под другим именем, скорректируйте URL соответствующим образом; при необходимости ознакомьтесь с документацией Kubernetes.
- Разверните Promtail с вашим измененным конфигурационным файлом:
helm upgrade --install --values promtail-overrides.yaml promtail grafana/promtail -n grafana-loki
Эта команда указывает Helm развернуть Promtail в namespace grafana-loki, используя вашу пользовательскую конфигурацию. Она гарантирует, что Promtail настроен на пересылку логов в Loki, завершая настройку агрегации логов.
Как обычно, убедитесь, что всё работает, выполнив:
❯ 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
Настройте источники данных Grafana и Dashboard
Теперь, когда Loki и Promtail развернуты, следующий шаг — интегрировать Loki как источник данных в Grafana, чтобы вы могли визуализировать и запрашивать свои логи.
- Доступ к Grafana: Сначала вам нужно получить доступ к вашему экземпляру Grafana. Если Grafana работает внутри вашего кластера Kubernetes, вы можете использовать проброс портов, чтобы получить доступ к UI Grafana с вашей локальной машины:
kubectl port-forward service/grafana 8080:80 -n grafana
- Вход в Grafana: Имя пользователя по умолчанию для Grafana — admin. Для пароля Grafana генерирует случайный пароль при установке через Helm. Вы можете получить его с помощью:
kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Переход к источникам данных: После входа перейдите в боковую панель Grafana, найдите значок "Connections" и выберите "Data Sources".
Добавление Loki: Нажмите кнопку "Add data source", найдите Loki и выберите его. Вы попадете на страницу настроек источника данных Loki.
- Настройка Loki в Grafana: Введите URL сервиса Loki, который будет выглядеть примерно так:
http://loki-loki-distributed-gateway.grafana-loki.svc.cluster.local, если используется настройка по умолчанию. Этот URL указывает Grafana на ваш экземпляр Loki внутри вашего кластера Kubernetes.

A Few Notes from Databricks Data + AI Summit 2026: Why the Data Layer Matters Again
James Luan shares notes from Databricks Data + AI Summit 2026 on why production AI is pushing the data layer back to the center of infrastructure.

How Zilliz Ended Up at the Center of NVIDIA’s Unstructured Data Story at GTC 2026
If unstructured data is the context of AI, then the ceiling of AI applications will be set not just by models, but by how mature the infrastructure for unstructured data becomes.

Introducing Zilliz Cloud Global Cluster: Region-Level Resilience for Mission-Critical AI
Zilliz Cloud Global Cluster delivers multi-region resilience, automatic failover, and fast global AI search with built-in security and compliance.



