跳到主要内容

Milvus 监控框架概述

本主题解释了 Milvus 如何使用 Prometheus 监控指标和 Grafana 可视化指标并创建告警。

Milvus 中的 Prometheus

Prometheus 是一个用于 Kubernetes 实现的开源监控和告警工具包。它收集和存储指标作为时间序列数据。这意味着指标在记录时与时间戳一起存储,同时还有称为标签的可选键值对。

目前 Milvus 使用 Prometheus 的以下组件:

  • Prometheus 端点,用于从导出器设置的端点拉取数据。
  • Prometheus operator,用于有效管理 Prometheus 监控实例。
  • Kube-prometheus,提供易于操作的端到端 Kubernetes 集群监控。

指标名称

Prometheus 中的有效指标名称包含三个元素:命名空间、子系统和名称。这三个元素用"_"连接。

Prometheus 监控的 Milvus 指标的命名空间是"milvus"。根据指标所属的角色,其子系统应该是以下八个角色之一:"rootcoord"、"proxy"、"querycoord"、"querynode"、"indexcoord"、"indexnode"、"datacoord"、"datanode"。

例如,计算查询向量总数的 Milvus 指标命名为 milvus_proxy_search_vectors_count

指标类型

Prometheus 支持四种类型的指标:

  • Counter:一种累积指标类型,其值只能增加或在重启时重置为零。
  • Gauge:一种值可以上升或下降的指标类型。
  • Histogram:一种基于可配置存储桶计数的指标类型。常见的例子是请求持续时间。
  • Summary:一种类似于直方图的指标类型,在滑动时间窗口上计算可配置的分位数。

指标标签

Prometheus 通过标记来区分具有相同指标名称的样本。标签是指标的特定属性。具有相同名称的指标必须对 variable_labels 字段具有相同的值。下表列出了 Milvus 指标常见标签的名称和含义。

标签名称定义
"node_id"角色的唯一标识由 milvus 生成的全局唯一 ID
"status"已处理操作或请求的状态"abandon"、"success" 或 "fail"
"query_type"读取请求的类型"search" 或 "query"
"msg_type"消息的类型"insert"、"delete"、"search" 或 "query"
"segment_state"段的状态"Sealed"、"Growing"、"Flushed"、"Flushing"、"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" 等
"function_name"处理特定请求的函数名称例如 "CreateCollection"、"CreatePartition"、"CreateIndex" 等
"user_name"用于身份验证的用户名您偏好的用户名
"index_task_status"元数据存储中索引任务的状态"unissued"、"in-progress"、"failed"、"finished" 或 "recycled"

Milvus 中的 Grafana

Grafana 是一个开源可视化堆栈,可以连接所有数据源。通过拉取指标,它帮助用户理解、分析和监控大量数据。

Milvus 使用 Grafana 的可定制仪表板进行指标可视化。

下一步

在了解监控和告警的基本工作流程后,学习: