Service trait
Would it make sense to create a base trait which all checkers implement? This would standardize the way they are implemented and make it easier to add a new check for those unfamiliar with the code.
e.g. a trait that defines the lifecycle init, iteration, and constants for the config items. Though maybe things don't fit here so cleanly. A benefit here is that instrumentation can live here and also be standardized.