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 的可定制仪表板进行指标可视化。
下一步
在了解监控和告警的基本工作流程后,学习: