Script icon
Docker icon
If icon
SlackIncomingWebhook icon
Log icon
Return icon
Schedule icon

Milvus Memory Mmap Cache Utilization Sentinel

Audits Milvus QueryNode memory and mmap cache utilization via Prometheus, detects saturation before OOM kills, and alerts MLOps teams via Slack.

Categories
AIData

Audits Milvus vector database QueryNode memory consumption and memory-mapped file (mmap) cache utilization via Prometheus metrics, detecting memory exhaustion risks before Kubernetes OOM killer events crash vector search nodes.

How it works

  1. Prometheus Telemetry Scrape: Interrogates Prometheus metrics API for milvus_querynode_memory_used_bytes, total capacity, and mmap allocation timeseries.
  2. Memory and Cache Calculation: Calculates cumulative gigabytes of active vector index memory and mmap cache utilization across all distributed QueryNode replicas.
  3. Saturation Ceiling Evaluation: Evaluates computed memory utilization percentage against user-defined operational safety thresholds.
  4. MLOps Alert and Manifest Dispatch: Emits formatted Slack alerts with detailed memory allocation figures when thresholds are breached, exporting compliance manifests.

Architecture diagram

flowchart TD
    A[periodic_milvus_audit Schedule Trigger] --> B[scan_milvus_memory_metrics Python Script]
    B --> C[check_memory_saturation Flowable If]
    C -- Threshold Breached --> D[notify_slack_mlops_alert Webhook]
    C -- Metrics Nominal --> E[log_nominal_milvus_state Log]
    D --> E
    E --> F[export_milvus_manifest Return]

Architecture components

  • Trigger (periodic_milvus_audit): Drives scheduled recurring surveillance cycles without human intervention.
  • Inspection Task (scan_milvus_memory_metrics): Queries target APIs and structures diagnostic indicators via Kestra outputs.
  • Evaluation Gate (check_memory_saturation): Evaluates operational safety boundaries using deterministic boolean branching.
  • Notification Action (notify_slack_mlops_alert): Dispatches rich, actionable incident messages directly to team channels.
  • Manifest Return (export_milvus_manifest): Emits structured compliance payloads for SIEM and analytics records.

Key capabilities

  • Automated Health Polling: Continuous scheduled surveillance executed on customizable recurring intervals without dedicated agent daemons.
  • Deterministic Threshold Evaluation: Pure boolean and numeric tolerance checks eliminating false positives and alert noise.
  • Contextual Incident Notification: Rich Slack messages populated with explicit resource identifiers, error reasons, and metrics.
  • Machine-Readable Audit Manifest: Structured execution telemetry exported for compliance archives, SIEM ingestion, or analytics dashboards.

What you get

  • Proactive surveillance of vector index memory growth preventing unexpected QueryNode crash loops
  • Granular visibility into memory-mapped index file (mmap) allocation vs resident RAM consumption
  • Protection against silent search query latency degradation caused by kernel page-cache thrashing
  • Structured compliance telemetry recording historical memory utilization across vector cluster fleets

Who it's for

  • MLOps Engineers operating enterprise vector databases powering real-time recommendation engines
  • AI Infrastructure Architects designing large-scale billion-vector similarity search pipelines
  • Site Reliability Engineers accountable for GenAI vector database uptime and resource forecasting

Why orchestrate this with Kestra

  • Serverless execution model eliminating persistent monitoring daemon maintenance across AI clusters
  • Direct integration with Prometheus metrics endpoints without requiring custom Grafana alerting plugins
  • Flexible Flowable branching logic supporting multi-tier escalation based on memory severity
  • Automated operational manifest generation for capacity planning and budget forecasting

Use cases

  • Bulk Ingestion Monitoring: Monitor QueryNode memory saturation during massive parallel vector dataset bulk-loading jobs.
  • Mmap Migration Validation: Validate memory footprint reduction after migrating dense vector collections from RAM to mmap storage.
  • Embedding Sidecar Leak Detection: Detect memory leaks in custom embedding model inference sidecars co-located with QueryNodes.

Inputs

Name Type Default Description
prometheus_endpoint STRING http://prometheus.monitoring:9090 Base HTTP URL of the Prometheus server scraping Milvus cluster metrics.
cluster_identifier STRING milvus-production Cluster identifier label utilized within Prometheus metrics queries.
max_memory_utilization_pct FLOAT 85.0 Upper percentage threshold of QueryNode memory capacity before triggering saturation alerts.
alert_on_saturation BOOL True Toggle whether Slack webhook alerts are dispatched upon detecting memory saturation.

Expected outputs

  • {{ outputs.scan_milvus_memory_metrics.vars.used_memory_gb }}: Current RAM consumed across all Milvus QueryNode instances in gigabytes.
  • {{ outputs.scan_milvus_memory_metrics.vars.total_memory_gb }}: Total allocated RAM capacity available to Milvus QueryNodes in gigabytes.
  • {{ outputs.scan_milvus_memory_metrics.vars.mmap_allocated_gb }}: Total memory-mapped index cache allocated across QueryNode local disks in gigabytes.
  • {{ outputs.scan_milvus_memory_metrics.vars.memory_utilization_pct }}: Percentage of total QueryNode memory currently in active utilization.
  • {{ outputs.scan_milvus_memory_metrics.vars.is_alerting }}: Boolean flag indicating whether memory utilization breached configured safety thresholds.

Prerequisites

  • Milvus distributed cluster v2.3 or higher with Prometheus metrics collection enabled.
  • Prometheus server actively scraping Milvus metrics endpoints with network accessibility from Kestra.
  • Configured Slack incoming webhook URL with permissions to post messages into the designated alert channel.
  • Appropriate memory and mmap configuration tuned in Milvus milvus.yaml configuration map.

Secrets

  • SLACK_WEBHOOK_URL: Vault secret required for authenticated API execution and notifications.

Quick start

  1. Register the required secrets in your Kestra namespace settings.
  2. Import this blueprint into your Kestra instance under the company.ai namespace.
  3. Review input parameters such as threshold levels and target resource identifiers.
  4. Execute the flow manually to verify connectivity, then enable the automated schedule.

Common pitfalls and troubleshooting

  • Mmap Virtual vs Resident Memory: Mmap uses virtual address space; distinguish between OS file page cache and process resident set size (RSS).
  • Prometheus Scrape Interval Alignment: Align the audit cron frequency with Prometheus scrape intervals to avoid evaluating stale cached metrics.
  • Rolling Node Restart Spikes: During rolling upgrades, remaining QueryNodes absorb relocated segments causing transient memory spikes.
  • Multi-Cluster Label Filtering: Ensure Prometheus queries specify the exact cluster label when multiple Milvus deployments share one Prometheus server.

How to extend

  • Automated QueryNode Horizontal Scaling: Trigger Kubernetes Horizontal Pod Autoscaler updates or add QueryNode replicas dynamically.
  • Collection Offloading: Automatically trigger Milvus releaseCollection API calls on inactive collections during acute memory emergencies.
  • Grafana Snapshot Generation: Capture and attach automated Grafana dashboard render snapshots to Slack alert messages.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.