Self-hosted runners - offline

We’re using Actions with 2 self-hosted Windows runners, 2 Mac runners, 2 Linux runners.
Linux and Windows are rock-solid: never had to manually restart or otherwise troubleshoot them going offline.
Mac runners, every so often (about every 1-3 months) will show as Offline, where the solution would be to either manually stop and start the service (last happened today), or, worse, log in via UI (didn’t have to do that in about 4 months).

Questions:

  1. Why does it happen, specifically on Mac, but not on the other OSs? All of our runners take about the same amount of load/jobs.
  2. More importantly, is there a way to trigger an alert (email/Slack/other webhook) when a provisioned self-hosted runner changes its status to or from Offline?