What I do with spinning disks, is keep track of any changes in the raw value ("data") of SMART attributes 1, 5, 196, 198, 199.
I do not trust disks with any number of reallocated sectors (5, 196); to me, they are very similar to bad pixels on a display.
Sure, the disk may be otherwise good, but the data I keep on spinning disks is valuable enough for me to be picky.
The disks I've had fail, have either done so completely unexpectedly, or with an increase in (some of the) aforementioned attributes just before failure.
I also run smartd on machines with spinning disks; it is responsible for reading the disk sector by sector regularly, to ensure all data is still accessible.
I also run an offline SMART test to update all the attributes before checking them; this depends a bit on the drive firmware, though.
Whenever I haven't powered up the drives for a while (say, for a month or longer; I have offline simulation data I use for exploring visualization and sonification), I run a full SMART self-test, and recheck the attributes for any changes.
All this is classed "paranoid", but I do it with existing services and a couple of custom scripts, so it's not much of an effort, really.
It won't always catch a drive before they fail, and i may have discarded drives that still have life in them.
I do not use any Seagate drives, for example, because I've had too many of them fail.