Milvusモニタリングフレームワークの概要
このトピックでは、MilvusがPrometheusを使用してメトリクスを監視し、Grafanaを使用してメトリクスを可視化してアラートを作成する方法について説明します。
MilvusにおけるPrometheus
Prometheusは、Kubernetes実装のためのオープンソースの監視およびアラートツールキットです。メトリクスを時系列データとして収集・保存します。つまり、メトリクスは記録時にタイムスタンプとともに、ラベルと呼ばれるオプションのキーと値のペアで保存されます。
現在、MilvusはPrometheusの以下のコンポーネントを使用しています:
- Prometheusエンドポイント:エクスポーターが設定したエンドポイントからデータを取り出します。
- Prometheus監視インスタンスを効率的に管理するPrometheusオペレータ。
- Kube-prometheus: Kubernetesクラスタの監視をエンドツーエンドで簡単に操作できます。
メトリック名
Prometheusで有効なメトリック名は、namespace、subsystem、nameの3つの要素を含んでいます。これら3つの要素は"_"で結ばれています。
Prometheusが監視するMilvusメトリックの名前空間は "milvus "です。メトリックが属する役割に応じて、そのサブシステムは次の8つの役割のうちの1つでなければなりません:"rootcoord"、"proxy"、"querycoord"、"querynode"、"indexcoord"、"indexnode"、"datacoord"、"datanode"。
例えば、クエリされたベクトルの総数を計算するMilvusメトリックの名前はmilvus_proxy_search_vectors_count
。
メトリックの種類
Prometheus は、4 種類のメトリックをサポートしています:
- カウンタ: 累積メトリクスの一種で、値が増加するか、再起動時にゼロにリセットされます。
- Gauge : メ ト リ ッ ク の タ イ プで、 値が上向 く こ と も 下向 く こ と も で き ます。
- ヒストグラム:構成可能なバケットに基づいてカウントされるメトリクスのタイプ。一般的な例は、リクエストの持続時間です。
- サマリー(Summary): ヒストグラムに似たメトリクスの一種で、スライディングする時間ウィンドウにわたって構成可能な分量を計算します。
メトリクス・ラベル
プロメテウスは、同じメトリック名のサンプルにラベルを付けて区別します。ラベルはメトリックの特定の属性です。同じ名前のメトリクスは、variable_labels
フィールドに同じ値を持つ必要があります。以下の表は、Milvus メトリックの一般的なラベルの名前と意味を示しています。
ラベル名 | 定義 | 値 |
---|---|---|
"node_id" | ロールの一意のID。 | milvusによって生成されるグローバルにユニークなID。 |
"status" | 処理された操作またはリクエストのステータス。 | "abandon"、"success"、または "fail"。 |
"query_type" | 読み取りリクエストのタイプ。 | 「search "または "query"。 |
"msg_type" | メッセージのタイプ。 | "insert"、"delete"、"search"、または "query"。 |
"segment_state" セグメントの状態。 | セグメントの状態。 | "Sealing"、"Growing"、"Flushed"、"Dropped"、"Importing" のいずれか。 |
"cache_state" | キャッシュされたオブジェクトの状態。 | 「hit "または "miss"。 |
"cache_name" | キャッシュされたオブジェクトの名前。このラベルは、"cache_state" ラベルとともに使用されます。 | 例:"CollectionID"、"Schema "など。 |
"channel_name" | メッセージ・ストレージ(PulsarまたはKafka)の物理トピック。 | 例:"by-dev-rootcoord-dml_0"、"by-dev-rootcoord-dml_255 "など。 |
"関数名" | 特定のリクエストを処理する関数の名前。 | 例:"CreateCollection"、"CreatePartition"、"CreateIndex "など。 |
"user_name" | 認証に使用するユーザー名。 | お好みのユーザー名を指定してください。 |
"index_task_status" | メタ・ストレージにおけるインデックス・タスクのステータス。 | "未発行"、"進行中"、"失敗"、"終了"、または "リサイクル"。 |
MilvusにおけるGrafana
Grafanaは、すべてのデータソースと接続できるオープンソースの可視化スタックです。メトリクスを引き出すことで、ユーザーが膨大なデータを理解、分析、監視するのに役立ちます。
Milvusは、メトリックの可視化のためにGrafanaのカスタマイズ可能なダッシュボードを使用しています。
次の課題
モニタリングとアラートの基本的なワークフローを学んだら、次のことを学びましょう: