GrafanaとLokiでMilvusを監視する

Grafana & LokiによるMilvusのモニタリング入門
この投稿では、Milvusのデプロイメントを効果的に監視するためのGrafanaとLokiのセットアップについてご案内します。
Milvusは、大量の埋め込みベクトルを保存、インデックス、管理することを目的とした分散ベクトルデータベースです。何兆ものベクトルを効率的にインデックス化し、検索することができるため、MilvusはAIや機械学習のワークロードに最適です。
一方、Grafanaはモニタリングと観測のためのオープンソースのプラットフォームで、メトリクス、ログ、トレースの可視化に最適だ。システムの健全性とパフォーマンスを監視するためのダッシュボードを作成することができます。Lokiは、Prometheusからヒントを得て、ログ集約システムとしてGrafanaとペアになっています。効率的かつコスト効率よくログを管理します。GrafanaとLokiを組み合わせることで、Milvusとその先の観測可能性を高める、強固なモニタリングのセットアップを提供します。
前提条件
Docker** - Dockerがシステムにインストールされていることを確認してください。
Kubernetes** - Kubernetesクラスタを用意してください。ローカル開発には
minikube または k3d
を、本番環境にはクラウドプロバイダの Kubernetes サービスを利用できる。Kubernetes アプリケーションを管理するために、Kubernetes 用のパッケージ・マネージャである Helm をインストールしてください。
Kubectl** - アプリケーションのデプロイ、クラスタリソースの検査と管理、ログの表示を行うために、Kubernetesクラスタと対話するためのコマンドラインツールである
kubectl
をインストールする。
K8sのセットアップ
K8s クラスタの実行に必要なものをすべてインストールした後、minikube
を使用した場合は、次のコマンドでクラスタを起動する:
minikube start
でK8sクラスタの状態を確認する:
kubectl cluster-info
⚠️K8sにMilvusをデプロイする必要があります。その方法については、 スタートガイド を参照してください。
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
名前 ready status restarts age
pod/grafana-987d4c5c6-sb8t9 1/1 実行中 1 (58m 前) 47h
名前 タイプ cluster-ip external-ip port(s) age
service/grafana ClusterIP 10.43.114.168 <none> 80/TCP 47h
名前 準備完了 最新 利用可能 年齢
deployment.apps/grafana 1/1 1 1 47h
名前 希望する現在の準備完了年齢
replicaset.apps/grafana-987d4c5c6 1 1 47h
ロキとプロムテイルのデプロイ
LokiはPrometheusにインスパイアされたログ集計システムです。効率的かつコスト効率よくログを管理します。LokiはPromtailを使用してログを集約します。Promtailはログ収集エージェントで、ログの収集、ラベル付け、Lokiへの送信を行います。それは明示的にロキのために作られています。各KubernetesノードでPromtailのインスタンスが実行されていることがわかります。
Lokiのログのインデックス化のアプローチはユニークです。それはログの実際のテキストをインデックス化しません。その代わりに、ログエントリはインテリジェントにストリームにグループ化され、ラベルでインデックス化される。この方法によって、コストと、ログの取り込みからクエリで利用可能になるまでの時間が大幅に削減され、リソース管理に安心感がもたらされる。
Lokiは様々な方法で導入することができます:
1.モノリシックモード:このモードは簡単です、Loki のすべてのコンポーネントは、単一のプロセス内で実行されます。これは、小規模なセットアップまたは多くの複雑さなしで Loki を知るために適しています。
2.スケーラブル モード:このモードでは、Loki のコンポーネントは、ディストリビューター、ingesters、クエリ、および他のような別のサービスに分割されます。 この設定は、高可用性とスケーラビリティのために設計され、大規模な展開によくフィットします。ログデータを保存するには、AWS S3、Google Cloud Storage、またはMinIOのようなセルフホストソリューションであるS3互換のオブジェクトストレージが必要です。
**ロキをインストールするには
helm upgrade --install loki grafana/loki-distributed -n grafana-loki --create-namespace
これは loki を grafana-loki
名前空間内にインストールします。名前空間が存在しない場合は、Helmが作成してくれます。
以下を実行して、すべてが正しく動作することを確認してください:
❯ kubectl get all -n grafana-loki
名前 ready status restarts age
pod/loki-loki-distributed-distributor-6b75796c6b-qvdbc 1/1 実行中 1 (68m ago) 28h
pod/loki-loki-distributed-querier-0 1/1 稼働中 1 (68m ago) 28h
pod/loki-loki-distributed-query-frontend-55574bdd64-5hhvl 1/1 実行中 1 (68m ago) 28h
pod/loki-loki-distributed-ingester-0 1/1 稼動中 1 (68m 前) 28h
pod/loki-loki-distributed-gateway-c6ccc655b-mkg5j 1/1 ランニング 0 67m
名前 タイプ クラスタ IP 外部 IP ポート 年齢
service/loki-loki-distributed-memberlist ClusterIP なし <なし> 7946/TCP 47h
service/loki-loki-distributed-ingester-headless ClusterIP なし <なし> 3100/TCP,9095/TCP 47h
service/loki-loki-distributed-query-frontend-headless ClusterIP なし <なし> 3100/TCP,9095/TCP,9096/TCP 47h
service/loki-loki-distributed-ingester ClusterIP 10.43.13.160 <なし> 3100/TCP,9095/TCP 47h
service/loki-loki-distributed-querier-headless ClusterIP なし <なし> 3100/TCP,9095/TCP 47h
service/loki-loki-distributed-distributor ClusterIP 10.43.201.9 <なし> 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
名前 ready up-to-date available age
deployment.apps/loki-loki-distributed-distributor 1/1 1 47h
deployment.apps/loki-loki-distributed-query-frontend 1/1 1 1 47h
デプロイメント.apps/loki-loki-distributed-gateway 1/1 1 1 47h
希望する現在のレディエイジ
replicaset.apps/loki-loki-distributed-distributor-6b75796c6b 1 1 1 47h
replicaset.apps/loki-loki-distributed-query-frontend-55574bdd64 1 1 47h
replicaset.apps/loki-loki-distributed-gateway-c6ccc655b 1 1 47h
名前 READY AGE
statefulset.apps/loki-loki-distributed-querier 1/1 47h
statefulset.apps/loki-loki-distributed-ingester 1/1 47h
Promtailをインストールするには:。
Promtail をインストールする前に、Loki と通信するように設定する必要があります。これは、ロキのサービス URL を指定する設定ファイルの編集が含まれます:
1.**デフォルトの Promtail 設定を展開します。
helm show values grafana/promtail > promtail-overrides.yaml
このコマンドはデフォルトのPromtailの値をpromtail-overrides.yamlというファイルに書き込みます。
2.**デフォルトのPromtail設定を編集します。
promtail-overrides.yamlを編集して、
clients.urlの値をLokiのサービスエンドポイントに設定する。Kubernetesでは、サービスはDNSレコード経由でアクセスできるので、LokiのサービスのDNS名:
loki-loki-distributed-gateway.grafana-loki.svc.cluster.local` を使用します。
N.B.: もしLokiを別のネームスペースや別の名前でデプロイした場合は、それに応じてURLを調整してください。Kubernetes documentationを自由にチェックしてください。
3.**変更した設定ファイルでPromtailをデプロイします。
helm upgrade --install --values promtail-overrides.yaml promtail grafana/promtail -n grafana-loki
このコマンドは、カスタム設定を使用して、Promtailを grafana-loki
ネームスペースにデプロイするようにHelmに指示します。これにより、PromtailがLokiにログを転送するように設定され、ログ集約の設定が完了します。
いつものように、実行することですべてが動作することを確認してください:
❯ kubectl get all -n grafana-loki | grep promtail pod/promtail-qgl4t 1/1 実行中 1 (77m ago) 28h
daemonset.apps/promtail 1 1 1 1 1 <なし> 2d
Grafana データソースとダッシュボードを設定する
LokiとPromtailがデプロイされたので、次のステップはGrafana内のデータソースとしてLokiを統合し、ログの可視化とクエリを可能にします。
1.Grafanaにアクセスします:まず、Grafanaインスタンスにアクセスする必要があります。GrafanaがKubernetesクラスタ内で実行されている場合、ポートフォワーディングを使用してローカルマシンからGrafana UIにアクセスすることができます:
kubectl port-forward service/grafana 8080:80 -n grafana
2.**Grafanaにログインする:Grafanaのデフォルトのユーザー名はadminです。パスワードは、Helm経由でインストールするとGrafanaがランダムなものを生成します。で取得できます:
kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" ".| base64 --decode ; echo
3.データソースに移動する:ログインしたら、Grafanaのサイドバーで "Connections "のアイコンを見つけ、"Data Sources "を選択する。
4.ロキを追加する:データソースの追加」ボタンをクリックし、Lokiを検索して選択します。Lokiデータソースの設定ページに移動します。
5.GrafanaでLokiを設定する:LokiサービスのURLを入力します。デフォルトのセットアップを仮定すると、http://loki-loki-distributed-gateway.grafana-loki.svc.cluster.local
のようになります。このURLは、Kubernetesクラスタ内のLokiインスタンスをGrafanaに指し示します。
やVisualizing Milvus Metrics in Grafanaのドキュメントをチェックし、Discordに参加してコミュニティと経験を共有してください。
読み続けて

How AI and Vector Databases Are Transforming the Consumer and Retail Sector
AI and vector databases are transforming retail, enhancing personalization, search, customer service, and operations. Discover how Zilliz Cloud helps drive growth and innovation.

Advancing LLMs: Exploring Native, Advanced, and Modular RAG Approaches
This post explores the key components of RAG, its evolution, technical implementation, evaluation methods, and potential for real-world applications.

Augmented SBERT: A Data Augmentation Method to Enhance Bi-Encoders for Pairwise Sentence Scoring
Discover how Augmented SBERT uses data augmentation to enhance the bi-encoder for pairwise sentence scoring.