Skip to content

Add Seagate FARM log metrics support - #376

Open
mpyne1 wants to merge 1 commit into
prometheus-community:masterfrom
mpyne1:feature/seagate-farm-metrics
Open

Add Seagate FARM log metrics support#376
mpyne1 wants to merge 1 commit into
prometheus-community:masterfrom
mpyne1:feature/seagate-farm-metrics

Conversation

@mpyne1

@mpyne1 mpyne1 commented Aug 6, 2026

Copy link
Copy Markdown

This PR adds Seagate FARM (Field Accessible Reliability Metrics) log support to smartctl_exporter.

FARM Log Metrics

Parses Seagate FARM log data from smartctl -j --log=farm and exposes the following Prometheus metric families:

  • Environment: temperature (current/min/max/highest), 12V and 5V rail voltage (current/min/max), motor power
  • Workload: read/write command counters
  • Error tracking: reallocated sectors, CRC errors, command timeouts, unrecoverable read/write errors
  • Reliability: MR head resistance per head, reallocated sectors per head, error rate, seek error rate, high priority unload events

FARM log collection is enabled via the --smartctl.farm-log flag and handles errors gracefully with limited concurrency to avoid overloading storage controllers.

Signed-off-by: mpyne <mpyne@45drives.com>
Comment thread main.go
).Default("standby").String()
smartctlFarmLog = kingpin.Flag("smartctl.farm-log",
"Collect Seagate FARM log metrics (requires smartmontools 7.4+)",
).Default("false").Bool()

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why default is false? This feature will broke something if will be enabled by default?

Comment thread readjson.go

var wg sync.WaitGroup
// Limit concurrent smartctl calls to avoid overwhelming the system
sem := make(chan struct{}, 8)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems some hardcoded limits, not FARM related at all 🤷‍♂️

What is overwhelming you experienced? We specially merged #204 to avoid non-parallel timeouts on hosts with 60+ SATA devices. 18 month in prod on fleet with 30000 devices - no single issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants