Skip to content

Replace N/A Info metrics with actionable V3 health signals #8

Description

@Vonng

Summary

Metrics → Info currently displays these two rows permanently as n/a:

  • Time since last Heal Activity
  • Time since last Scan Activity

This is not only a missing-series problem. BasicDashboard.tsx currently hardcodes both values to "n/a", so fixing the advanced widget queries alone cannot populate the Info page.

The two legacy time-since values should be replaced with higher-signal V3 summaries and the Info page should consume the same widget data as the advanced dashboard.

Proposed replacement

1. Erasure Health

Use:

min(minio_cluster_erasure_set_overall_health{$__query})

Display:

  • 1Healthy
  • 0Unhealthy
  • missing → Unknown

Using min is conservative when every cluster node is scraped: any unhealthy view should make the summary unhealthy.

2. Usage Data Age

Use:

max(minio_cluster_usage_objects_since_last_update_seconds{$__query})

Display the result as a duration in seconds, for example 1 minute or 3 hours. Missing data before the first usage update should render as Pending, not zero.

This is more relevant than node-local scanner activity because it directly explains how fresh the adjacent Reported Usage value is.

The resulting summary becomes:

Erasure Health    Healthy
Usage Data Age    1 minute
Uptime            4 hours

Why not preserve Time Since Last Heal?

minio_heal_time_last_activity_nano_seconds is not available in V3 and is a weak top-level health signal:

  • a healthy cluster may legitimately have no recent healing activity;
  • recent activity does not prove that healing succeeded;
  • the V2 series is conditional and can be absent;
  • erasure-set health directly reports whether storage remains healthy.

minio_cluster_erasure_set_healing_drives_count is still useful, but belongs in the Drives card or Resources/Advanced view. It can be presented as Online / Healing / Offline rather than occupying the Reported Usage summary.

Implementation notes

  • Replace widget IDs 80/81 with the new metric definitions and titles.
  • Change the age formatter from nanoseconds to seconds.
  • Replace the Heal/Scan-specific renderers with a generic status/summary renderer, or make them honor the supplied widget title.
  • Make BasicDashboard fetch/reuse the same widget results instead of keeping its own hardcoded values or PromQL.
  • Preserve explicit fallback states when Prometheus is unavailable.
  • Honor the existing selector assembled from job and CONSOLE_PROMETHEUS_EXTRA_LABELS.

Acceptance criteria

  • Metrics → Info no longer shows unconditional n/a values when V3 metrics are available.
  • Metrics → Usage and Metrics → Info use the same semantic definitions.
  • A healthy single-node deployment renders Healthy and a finite usage age.
  • A multi-node deployment produces one conservative cluster summary without duplicate target series.
  • Missing first-scan data renders Pending; unreachable metrics render Unknown or Unavailable.
  • No new compatibility-only MinIO metric is required.

Related: #2, #7

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    Status
    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions