Могут быть косяки в логике, но думаю типа такого что-то пилил бы, что бы можно было масштабировать под любое по сути количество серверов
1. VPS или домашний комп/сервер/etc
2. ASP.NET(или любое другое решение), пилим апи
#ServerID = название сервера/другое
API:
POST - сюда шлем ServerID и время отправки запроса с наших серверов.
GET - проверяем работоспособность vps с нашего основного компа.
И так, допустим шлем пост запрос с json на API {"serverID":"VPS_137643","Time":UnixTIme}
Инфу собираем в фаил или базу
3 поля, ServerID, Time, Status
ServerID парсим из json
Time парсим из json
Status
Если в базе нет этого ServerID - добавляем, записываем время, Status ставим true
Если строка с ServerID есть - обновляем время, ставим статус true
Проверяем записи в базе
Если Status = false - не трогаем, значит сообщение уже отослано было в телегу/смс/другое и сервер до сих пор лежит
Если Status = true - проверяем Time и если после последнего сообщения от сервера прошло более N минут(допустим post запрос с инфой мы шлем каждые 10 минут, а с последняя запись в базе от этого сервера была 20 минут назад) то шлем запрос в телегу/смс/другое, если оповещение отправилось успешно, то переводим статус сервера в false
Останется отслеживать работу vps сервера, тут вроде всё просто, шлем GET запрос на vps который должен нам возвратить какие то данные или просто ответ 200 можем считать что всё ок и Апи с vps работает.
PS
Оказывается я написал почти тоже самое что и Koqpe сообщением выше, только еще апи добавил