监控概述(monitor_overview)

Milvus 监控框架概述

本主题介绍 Milvus 如何使用 Prometheus 监控指标以及使用 Grafana 可视化指标和创建警报。

Prometheus in Milvus

Prometheus (opens in a new tab) 是一个用于 Kubernetes 实现的开源监控和警报工具包。它将指标作为时间序列数据进行收集和存储。这意味着在记录时,指标会带有时间戳,并附带可选的键值对标签。

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

  • 从由出口器设置的端点中提取数据的Prometheus端点。

  • Prometheus操作员,有效地管理Prometheus监控实例。

  • Kube-prometheus,提供易于操作的端到端Kubernetes集群监控。

指标名称

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

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

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

指标类型

Prometheus支持四种指标类型:

  • 计数器:一种累积指标类型,其值只能增加或在重新启动时重置为零。

  • Gauge: 一种指标类型,其值可以上升也可以下降。

  • Histogram: 一种指标类型,根据可配置的桶进行计数。一个常见的例子是请求持续时间。

  • Summary: 一种指标类型,类似于直方图,可以在滑动时间窗口上计算可配置的分位数。

Metric labels

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 (opens in a new tab)是一个开源的可视化堆栈,可以连接所有数据源。通过提取指标,它帮助用户理解、分析和监控大规模数据。

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

接下来是什么

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