Мониторинг 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.

Zilliz Named "Highest Performer" and "Easiest to Use" in G2's Summer 2025 Grid® Report for Vector Databases
Zilliz shines in G2's Summer 2025 Grid® Report as both "Highest Performer" and "Easiest to Use," solving the performance-usability dilemma.

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.

OpenAI o1: What Developers Need to Know
In this article, we will talk about the o1 series from a developer's perspective, exploring how these models can be implemented for sophisticated use cases.



