メインコンテンツまでスキップ

Prometheus と統合する

Prometheus は、設定されたターゲットから指定した間隔でメトリクスを収集し、ルール式を評価し、結果を表示し、特定の条件に基づいてアラートをトリガーできるモニタリングシステムです。

Zilliz Cloud を Prometheus と統合することで、Zilliz Cloud デプロイメントに関連するメトリクスを収集および監視できます。

Prometheus 統合では、Serving Cluster メトリクスのみがエクスポートされます。On-Demand Compute データベースのメトリクスはエクスポートされません。

📘注意

この機能は、Enterprise プロジェクト内の Dedicated クラスターでのみ利用できます。

Prometheus が Zilliz Cloud メトリクスをスクレイプするように設定する

Prometheus で Zilliz Cloud クラスターを監視するには、次の手順に従ってください。

1

Prometheus サーバー上の Prometheus.yml 設定ファイルにアクセスします。詳細については、Configuration を参照してください。

2

Prometheus.yml ファイルの scrape_configs セクションに、次のスニペットを追加します。プレースホルダーは適切な値に置き換えてください。

  • {{apiKey}}: クラスターメトリクスにアクセスするための Zilliz Cloud API キー。

  • {{clusterId}}: 監視したい Zilliz Cloud クラスターの ID。

yaml
scrape_configs:
- job_name: {{clusterId}}
scheme: https
metrics_path: /v2/clusters/{{clusterId}}/metrics/export
scrape_interval: 60s
scrape_timeout: 30s
authorization:
type: Bearer
credentials: {{apiKey}}

static_configs:
- targets: ["api.cloud.zilliz.com"]
📘注意

クラスターに含まれるコレクションは 10,000 個以下である必要があります。この上限を超えるクラスターでは、メトリクスのエクスポートが不完全になったり、品質が低下したりする可能性があります。

ParameterDescription
job_nameスクレイプされたメトリクスに割り当てられる、人が読めるラベル。
schemeZilliz Cloud エンドポイントからメトリクスをスクレイプするために使用されるプロトコルスキームで、https に設定されます。
metrics_pathメトリクスデータを提供するターゲットサービス上のパス。
scrape_intervalターゲットをスクレイプする頻度。サポートされる最小値は 60s です。これより小さい値はエンドポイントで受け付けられません。
authorization.typeZilliz Cloud メトリクスへのアクセスに使用される認証タイプ。値を Bearer に設定します。
authorization.credentialsZilliz Cloud メトリクスエンドポイントへのアクセス認可に使用される API キー。
static_configs.targetsPrometheus がスクレイプする静的ターゲットで、Zilliz Cloud RESTful API のホストアドレスである api.cloud.zilliz.com である必要があります。
3

Prometheus.yml ファイルへの変更を保存します。

詳細については、Prometheus official documentation を参照してください。

スクレイプされたメトリクスの例

以下は、Zilliz Cloud の /metrics/export エンドポイントからスクレイプされた Prometheus メトリクスの例です。コレクションごとのメトリクスには collection_namedb_name ラベルが含まれ、クラスター専用メトリクスは変更されません。

yaml
# HELP zilliz_entities Total number of entities stored
# TYPE zilliz_entities gauge
zilliz_entities{cluster_id="in01-xxx", collection_name="prod_embedding", db_name="default"} 5000000
zilliz_entities{cluster_id="in01-xxx", collection_name="user_profile", db_name="default"} 120000
# HELP zilliz_loaded_entities Number of entities loaded in memory
# TYPE zilliz_loaded_entities gauge
zilliz_loaded_entities{cluster_id="in01-xxx", collection_name="prod_embedding", db_name="default"} 3000000
zilliz_loaded_entities{cluster_id="in01-xxx", collection_name="user_profile", db_name="default"} 80000

# HELP zilliz_requests_total Total number of requests processed
# TYPE zilliz_requests_total counter
zilliz_requests_total{cluster_id="in01-xxx", request_type="search", status="success", collection_name="prod_embedding", db_name="default"} 30000
zilliz_requests_total{cluster_id="in01-xxx", request_type="search", status="success", collection_name="user_profile", db_name="default"} 12850
# HELP zilliz_request_duration_seconds_bucket Latency distribution of requests
# TYPE zilliz_request_duration_seconds_bucket histogram
zilliz_request_duration_seconds_bucket{cluster_id="in01-xxx", request_type="search", le="0.1", collection_name="prod_embedding", db_name="default"} 28000
zilliz_request_duration_seconds_bucket{cluster_id="in01-xxx", request_type="search", le="0.1", collection_name="user_profile", db_name="default"} 10000
# HELP zilliz_request_vectors_total Total number of vectors in requests
# TYPE zilliz_request_vectors_total counter
zilliz_request_vectors_total{cluster_id="in01-xxx", request_type="search", collection_name="prod_embedding", db_name="default"} 50000
zilliz_request_vectors_total{cluster_id="in01-xxx", request_type="insert", collection_name="prod_embedding", db_name="default"} 10000

# --- Cluster-only metrics ---
# HELP zilliz_cluster_capacity Cluster capacity ratio
# TYPE zilliz_cluster_capacity gauge
zilliz_cluster_capacity 0.88
# HELP zilliz_cluster_computation Cluster computation ratio
# TYPE zilliz_cluster_computation gauge
zilliz_cluster_computation 0.1
# HELP zilliz_storage_bytes Cluster storage usage
# TYPE zilliz_storage_bytes gauge
zilliz_storage_bytes 8.9342782E7

Zilliz Cloud メトリクスラベル

Zilliz Cloud によって公開されるメトリクスには、次の識別子ラベルが付与されます。

Label NameDescriptionValues
cluster_idメトリクスの取得元である Zilliz Cloud クラスターの ID。-
org_idZilliz Cloud クラスターを所有する組織の ID。-
project_idクラスターが属する、組織内のプロジェクトの ID。-
collection_nameコレクションの名前。リクエストメトリクス(zilliz_requests_totalzilliz_request_vectors_totalzilliz_request_duration_seconds_bucket)とデータメトリクス(zilliz_entitieszilliz_loaded_entities)を含む、すべてのコレクションごとのメトリクスに存在します。-
db_nameコレクションが属するデータベースの名前。collection_name とあわせて、すべてのコレクションごとのメトリクスに存在します。このラベルを使用して、異なるデータベース間で同名のコレクションを区別します。デフォルトは default
request_typeデータに対して実行される操作の種類。insert, upsert, delete, bulk_insert, flush, search, query
statusデータ操作の結果。success, fail

利用可能なメトリクス

次の表は、Zilliz Cloud で利用可能なメトリクスと、そのタイプ、説明、および関連するラベルを示しています。コレクションごとのメトリクスは collection_name および db_name ラベル付きで返され、各コレクションごとに個別の時系列が生成されます。クラスター専用メトリクスは、クラスターごとに単一のシリーズとして返されます。

Metric NameTypeDescriptionLabels
zilliz_cluster_computationGauge現在の計算容量の使用率。cluster_id, org_id, project_id
zilliz_cluster_capacityGauge現在のストレージ容量の使用率。cluster_id, org_id, project_id
zilliz_storage_bytesGauge使用中の総ストレージ容量。cluster_id, org_id, project_id
zilliz_cluster_write_capacityGauge現在の書き込みスループット。cluster_id, org_id, project_id
zilliz_requests_totalCounter処理されたリクエストの総数。cluster_id, org_id, project_id, request_type, status, collection_name, db_name
zilliz_request_vectors_totalCounterすべてのリクエストで操作されたベクトルの総数。cluster_id, org_id, project_id, request_type, collection_name, db_name
zilliz_request_duration_seconds_bucketHistogram処理されたリクエストのレイテンシ分布。cluster_id, org_id, project_id, request_type, collection_name, db_name
zilliz_slow_queries_totalCounterレイテンシしきい値を超えたクエリの数。cluster_id, org_id, project_id
zilliz_entitiesGauge保存されているエンティティの総数。cluster_id, org_id, project_id, collection_name, db_name
zilliz_loaded_entitiesGauge現在メモリにロードされているエンティティの数。cluster_id, org_id, project_id, collection_name, db_name
zilliz_collectionsGaugeコレクションの総数。cluster_id, org_id, project_id
zilliz_unloaded_collectionsGaugeアンロードされているコレクションの数。cluster_id, org_id, project_id

Prometheus クエリの例

以下は、Prometheus で Zilliz Cloud メトリクスを分析するために使用できるクエリの例です。

  • insert QPS を計算する

    plaintext
    rate(zilliz_requests_total{cluster_id='in01-xxxxx',request_type='insert'}[$__rate_interval])
  • insert VPS を計算する

    plaintext
    rate(zilliz_request_vectors_total{cluster_id='in01-xxxxx',request_type='insert'}[$__rate_interval])
  • insert レイテンシの 70 パーセンタイルを計算する

    plaintext
    histogram_quantile(
    0.70,
    sum(
    rate(zilliz_request_duration_seconds_bucket{cluster_id='in01-xxxxx',request_type='insert'}[$__rate_interval])
    ) by (le)
    )
  • insert リクエストの失敗率を計算する

    plaintext
    rate(zilliz_requests_total{cluster_id=?,status!='success'}[$__rate_interval])
    /
    rate(zilliz_requests_total{cluster_id=?}[$__rate_interval])
  • 1 分あたりの低速クエリ数を計算する

    plaintext
    sum(increase(zilliz_slow_queries_total{cluster_id=?}[1m]))
  • 5 分あたりの低速クエリ数を計算する

    plaintext
    sum(increase(zilliz_slow_queries_total{cluster_id=?}[5m]))
Ctrl I