Best method for monitoring SQL

Looking into the best method for monitoring SQL, how do you monitor your instances/database?

Do you use an existing monitoring tool (i.e. SCOM) or custom PowerShell scripts calling queries? I’m looking to better the way we monitor SQL, it’ll be monitoring the basics such as log/db filling up, availability groups being offline, accounts being locked, failed backups, etc. whatsapp web whatsapp plus routerlogin

Any guidance or information on how others do this would be great!