Milvus 介绍

Milvus 是一个开源的向量数据库,专为处理大规模、高维度向量数据而设计,广泛应用于人工智能、推荐系统、图像检索、自然语言处理等场景。它支持亿级向量的高效存储与快速检索,内置多种相似度搜索算法(如 HNSW、IVF、FLAT),并支持 GPU 加速,极大提升了检索性能。Milvus 提供易用的 API 接口,兼容多种数据格式,支持水平扩展,方便集成到各类 AI 应用中,是构建智能搜索系统的理想选择。

对 Milvus 进行可观测和监控是保障向量数据库稳定、高效运行的基础。通过实时监控系统资源使用、检索延迟、查询吞吐等关键性能指标,可以及时发现瓶颈、排查故障,确保向量检索任务的准确性与响应速度。同时,可观测性有助于预测容量需求、优化硬件资源配置,提升整体系统的可用性与弹性。它还支持自动化运维、问题追踪和性能调优,为构建智能应用提供稳定可靠的数据服务支撑。简而言之,完善的可观测体系是实现 Milvus 高性能、高可用及可扩展性的关键保障。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

本实践 Milvus 组件主要部署在 K8s 环境,并通过观测云进行数据采集、分析和监控。

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式。下载 datakit.yaml,拷贝第 3 步中 ENV_DATAWAY 键的值。

编辑 datakit.yaml,修改 DaemonSet 环境变量:

  • 修改 ENV_DATAWAY 的值为上一步中拷贝的值;
  • 修改 ENV_CLUSTER_NAME_K8S 的值为集群名称;
  • 新增 ENV_NAMESPACE,值为集群名称;

执行以下命令部署 DataKit 并验证:

kubectl apply -f datakit.yaml
kubectl get pods -n datakit

采集器配置

前置条件
  • 已经安装好 Milvus,本文测试的是 Helm 安装的 Milvus(v2.4.x),安装方式可参考:
    Requirements for running Milvus on Kubernetes Milvus v2.4.x documentation

  • 检查 value.yaml 中的指标暴露是否已经打开(默认是开启的)

  • 检查 service.yaml 中对应指标暴露的端口是否是 9091

  • 以上操作完成后可以进入 milvus 集群中某一个容器,通过 curl http://localhost:9091/metrics 命令检查是否有指标数据
配置采集器
  • 开启 Kubernetes Prometheus Discovery 插件

创建 Configmap 并挂载为 DataKit kubernetesprometheus 采集器的配置文件即可开启采集,插件通过角色、命名空间、标签自动发现采集端点。注意在 [inputs.kubernetesprometheus.instances.custom.tags] 中配置 Kubernetes 集群名作为指标标签,其他标签将根据配置自动取值。标签用于区分不同集群、实例、关联基础设施指标。插件配置举例如下:

apiVersion: v1
kind: ConfigMap
metadata:name: datakit-confnamespace: datakit
data:kubernetesprometheus.conf: |-[inputs.kubernetesprometheus]node_local = true[[inputs.kubernetesprometheus.instances]]role            = "pod"# milvus-cluster of namespacenamespaces      = ["milvus-cluster"]selector        = "app.kubernetes.io/name=milvus"scrape          = "true"scheme          = "http"port            = "9091"path            = "/metrics"# 采集器采集频率scrape_interval = "60s" [inputs.kubernetesprometheus.instances.custom]measurement        = "milvus"job_as_measurement = false[inputs.kubernetesprometheus.instances.custom.tags]cluster_name_k8s = "k8s_saas"instance         = "__kubernetes_mate_instance"pod_name         = "__kubernetes_pod_name"pod_namespace    = "__kubernetes_pod_namespace"node_name        = "__kubernetes_pod_node_name"

为 DataKit 挂载配置文件的方式如下:

        - mountPath: /usr/local/datakit/conf.d/kubernetesprometheus/kubernetesprometheus.confname: datakit-confsubPath: kubernetesprometheus.confreadOnly: true

关键指标

Proxy

指标指标说明
milvus_proxy_search_vectors_count累计查询的向量数。
milvus_proxy_insert_vectors_count插入向量的累计数量。
milvus_proxy_sq_latency搜索和查询请求的延迟。
milvus_proxy_mutation_latency突变请求的延迟。
milvus_proxy_req_count所有类型接收请求的数量。
milvus_proxy_cache_hit_count每次缓存读取操作的命中和失败率的统计。

Query Node

指标指标说明
milvus_querynode_sq_req_count搜索和查询请求的累计数量。
milvus_querynode_sq_req_latency查询节点的查询请求延迟。
milvus_querynode_entity_num每个查询节点上可查询和可搜索的实体数量。
milvus_querynode_segment_num每个查询节点加载的 segment 数量。

Data Node

指标指标说明
milvus_datanode_msg_rows_count数据节点消费的流消息的行数。目前数据节点统计的流消息仅包括插入和删除消息。
milvus_datanode_flushed_data_size每个刷写消息的大小。目前数据节点统计的流消息仅包括插入和删除消息。
milvus_datanode_unflushed_segment_num每个数据节点上创建的未刷写 segment 的数量。
milvus_datanode_compaction_latency每个数据节点执行合并任务所花费的时间。

Query Coord

指标指标说明
milvus_querycoord_collection_num当前被 Milvus 加载的集合数量。

Root Coord

指标指标说明
milvus_rootcoord_ddl_req_count包括 CreateCollection、DescribeCollection 等在内的所有 DDL 请求的总数。
milvus_rootcoord_ddl_req_latency所有类型 DDL 请求的延迟。
milvus_rootcoord_id_alloc_countroot coord 分配的 ID 的累计数量。

Index Node

指标指标说明
milvus_indexnode_build_index_latency用于构建索引的时间。

场景视图

登录观测云控制台,点击「场景」 -「新建仪表板」,输入 “Milvus”, 选择 “Milvus K8S 监控视图”,点击 “确定” 即可添加视图。

监控器(告警)

观测云内置了监控器模板,可以选择从模版创建监控器,并开启适合业务的监控器以及时通知相关成员关注问题,触发条件、频率等信息可以依据实际业务进行调整。

登录观测云控制台,点击「监控」 -「新建监控器」,输入 “Milvus”, 选择对应的监控器,点击 “确定” 即可添加。

监控器名称告警提示
Milvus 实例{{instance}} 缓存命中过低用于监控Milvus缓存机制的命中效率,有助于分析性能优化空间
Milvus 实例{{instance}} 查询延迟时间过长用于监控搜索请求的整体响应开销,帮助定位性能瓶颈
Milvus 实例{{instance}} 突变发送延迟过高用于监控写请求的发送延迟,判断写路径是否存在拥塞或异常
Milvus 实例{{instance}} 请求延迟过高用于监控延迟是否集中或存在长尾问题

总结

Milvus 作为一款专为大规模、高维度向量数据设计的开源向量数据库,通过观测云平台统一采集并监控其关键性能指标,对于保障系统高性能、高可用及弹性扩展至关重要。实时监控检索延迟、查询吞吐、缓存命中率、内存与 CPU 使用率等核心指标,能够全面洞察向量检索行为与资源负载。这些数据的持续追踪不仅帮助优化索引与缓存策略、提升检索效率,还能精准识别性能瓶颈,实现故障的提前预警与分钟级根因定位,确保 AI 应用在亿级向量场景下依旧稳定、可靠、高效运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919651.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919651.shtml
英文地址,请注明出处:http://en.pswp.cn/news/919651.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arcgis-空间矫正工具(将下发数据A的信息放置原始数据B的原始信息并放置到成果数据C中,主要按下发数据A的范围)

正常来说,可以直接相交获取,但是会存在原始数据B将下发数据A进行分割,所以相交功能会导致最终成果会产生稀碎图斑及图斑切割,因此,经学习了解,学会此方法进行既保留原始数据B的信息,又按下发数据…

MySQL深分页慢问题及性能优化

在数据驱动的应用中,分页是不可或缺的功能。然而,当数据量达到百万甚至千万级别时,传统基于 LIMIT OFFSET 的分页方式会遭遇严重的性能瓶颈,即“深分页”问题。本文将剖析其根源并提供主流的优化策略。问题根源:LIMIT …

漫谈《数字图像处理》之平滑

在数字图像处理中,平滑(Smoothing) 的核心目标是降低图像噪声、模糊细节或简化纹理,本质是通过 “局部邻域运算” 对像素值进行 “平均化” 或 “规整化”,让图像整体更 “平缓”。形态学平滑与高斯平滑、均值平滑等其…

机器学习之数据预处理学习总结

在机器学习中,数据预处理是模型训练前至关重要的环节,直接影响模型的性能和准确性。通过本次学习,我系统掌握了数据预处理的核心方法与工具,现将主要内容总结如下:一、缺失值处理缺失值是实际数据中常见的问题&#xf…

在完全没有无线网络(Wi-Fi)和移动网络(蜂窝数据)的环境下,使用安卓平板,通过USB数据线(而不是Wi-Fi)来控制电脑(版本2)

在完全没有无线网络(Wi-Fi)和移动网络(蜂窝数据)的环境下,要实现用安卓手机通过USB数据线控制电脑,核心思路是:利用USB数据线创建一個纯粹的、本地的有线网络连接。 这不仅是可行的,…

Ubuntu22.04配置网络上网

前言 安装Ubuntu系统后,有时会遇到无法联网、无法使用浏览器的问题。然而当宿主机已连接网络时,虚拟机通常也能联网,需要进行一些配置,现在就以Ubuntu22.04为例。 VMware配置打开虚拟网络编辑器 启动VMWare点击编辑,并…

网络协议之TCP和UDP

写在前面 本文来看下TCP和UDP协议。 我们接触这两个协议最多的应该就是在面试中了,经典题目就是“TCP和UDP有什么区别?”,而最常得到的答案就是TCP是面向连接的,而UDP是面向无连接的。 那么这里的连接到底是什么呢?难…

Qt音乐播放器项目实践:本地持久化与边角问题处理

本音乐播放器完整项目源码(包含各个按钮的图片文件): ly/Project-Code - Gitee.com 一.本地持久化 请注意,学习此部分之前需要读者具有一定的Mysql基础。如果读者能够接受无法本地持久化,那么可以跳过这部分内容,直接去看边角问题处理。我…

基于NB-IoT技术的宠物定位跟踪系统设计#基于STM32\物联网\单片机技术的宠物定位跟踪系统

基于NB-IoT技术的宠物定位跟踪系统设计#基于STM32\物联网\单片机技术的宠物定位跟踪系统在设计基于NB-IoT技术的宠物定位跟踪系统时,首先明确了系统分为感知层、网络层和应用层三个部分。在感知层,考虑到需要获取宠物位置和运动状态,选用GPS定…

【入门级-算法-3、基础算法:递归法】

递归是一种非常重要的算法思想,它指的是函数调用自身的过程。递归通常包含两个主要部分:基线条件(终止条件)和递归条件(调用自身的条件)。 下面通过例子来理解递归算法: 计算阶乘 阶乘的递归定义…

【CS创世SD NAND征文】存储芯片在工业电表中的应用与技术演进

【CS创世SD NAND征文】存储芯片在工业电表中的应用与技术演进1.工业电表的市场背景2.技术方案分析3.核心技术特性3.1.主控芯片:APM32F465VET63.3.存储芯片:CSNP4GCR01-DPW3.3.1. 基本概述3.3.2. 核心特性3.3.3. 优势特点3.3.4 四大管理算法4.存储芯片性能…

建筑施工遮挡场景漏检率↓76%:陌讯动态融合算法实战解析

原创声明 本文为原创内容,技术参数及架构解析引用自《陌讯技术白皮书》,未经授权禁止转载。 一、行业痛点:建筑施工安全监控的 "看得见" 与 "看不准" 建筑施工场景的安全监控长期面临双重挑战:一方面&…

【LeetCode题解】LeetCode 209. 长度最小的子数组

【题目链接】 209. 长度最小的子数组 【题目描述】 【题解】 方法一:滑动窗口 本题可以使用双指针算法,定义两个指针l和r分别表示子数组的开始位置和起始位置,sum数组存储的从l到r区间内所有元素的和。初始状态下,l和r都指向下…

2025-08-21 Python进阶6——迭代器生成器与with

文章目录1 迭代器与生成器1.1 迭代器1.1.1 基本使用1.1.2 手动迭代(带异常处理)1.1.3 自定义迭代器1.2 生成器1.2.1 工作原理1.2.2 斐波那契数列示例1.3 推导式1.3.1 列表推导式1.3.2 字典推导式1.3.3 集合推导式1.4.4 元组推导式(生成器表达…

C++——C++重点知识点复习2(详细复习模板,继承)

目录 模板 函数模板 类模板 非类型模板参数 模板的特化 函数模板特化 类模板的特化 为什么普通函数可以分离? 继承 继承概念 基类和派生类对象赋值转换(切割,切片) 隐藏 派生类的默认成员函数 .复杂的菱形继承及菱形…

python 项目编号 2025821 有关于中英文数据的收集、处理

python专栏记录:前言 批量读取单词 JSON 文件 → 解析出单词、释义、例句、短语 → 数据清洗(去掉特殊符号) → 同步更新到 MySQL 数据库。 内容 import json import pymysql import re import time from pymysql.converters import escape_s…

Document Solutions .NET Bundle 8.2.0

Document Solutions .NET Bundle 8.2.0MESCIUS 的 Document Solutions .NET Bundle 是一套完整的 API 和查看工具,可增强文档处理并提高效率。它包含 Excel、Word、PDF 和图像文档,以及 PDF 查看器、数据查看器和图像查看器的标准许可证。它将强大的 .NE…

在职老D渗透日记day20:sqli-labs靶场通关(第27关)get报错注入 过滤select和union ‘闭合

5.27.第27关 get报错注入 过滤select和union 闭合function blacklist($id) { $id preg_replace(/[\/\*]/,"", $id); //strip out /* $id preg_replace(/[--]/,"", $id); //Strip out --. $id preg_replace(/[#]/,"", $id); //Strip out #. $…

Go 并发编程-channel

channel 文章目录channel简介基本概念类型表示法值表示法操作的特性初始化通道接收元素值Happens before发送值例1核心组件关键执行顺序输出示例(可能顺序)设计要点例2例3关闭通道长度与容量单向通道主要用途增强代码表达性和安全性(最重要的…

开源和免费一样吗?以商城系统为例为您分析~

开源和免费并不完全一样,二者在核心定义、权利范围和实际应用中存在显著区别,具体可以从以下几个方面理解: 1. 核心定义不同开源(Open Source): 指软件的源代码是公开可获取的,任何人都可以查看…