Опишу один из способов как можно мониторить «ферму» и удалённо перезагружать в случае если она зависла, «отвалилась» видеокарта или программа для майнинга, пропал интернет, завис роутер.
Преимущества GSM-розетки:
- Автоматическая перезагрузка «фермы», даже если она «жестко» зависла.
- Вы будите проинформированы о перезагрузке фермы. Даже если у Вас в этот момент отсутствует интернет на мобильном. Вам приходит обыкновенная СМС.
- Google Drive — всегда работает в «облаке», без вашего участия, проверенно более 5 лет.
- Цена вопроса ~2000р. + 100 р. в год. (за любой тариф)
Недостатки других систем по мониторингу:
- Программный WATCHDOG — кто бы что не говорил, но… зависает!
- USB WATCHDOG — не отсылает оповещение, бывает не перезагружает если по какой-то причине закрылся «майнер».
- Wi-Fi умные розетки автоматически не перезагрузят систему. Необходимо на них заходить и в ручную отключать и включать. При условии что у неё не «отвалился» интернет и не завис роутер.
Вся идея мониторинга работает если Вы майните на пуле и пул отдаёт статистику работы вашей «фермы».
- Регистрируемся в Google.com или используем готовую учётную запись gmail.com. Бесплатно!
- Регистрируемся на clickatell.com — это для отправки СМС на Вашу розетку. Бесплатно!
- Покупаем GSM-розетку. Хорошо зарекомендовали себя «GSM-Розетка SOKOL». Достаточно 1-й версии SOKOL-GS1. Или другую доступную GSM-розетку, которая работает через СМС команды.
Смысл работы мониторинга:
Скрипт работает, круглосуточно, в Google Drive и каждую минуту опрашивает Ваш пул. Как только скрипт получит Вашу скорость равную нулю H/sec, сразу вышлет СМС на розетку для перезагрузки «фермы». Всё работает без вашего участия.
Все СМС Бесплатны!
Настройка Скрипта для Гугл диска
На примере криптовалюты KARBO (карбованец), с алгоритмом CryptoNight и пула krb.sberex.com
Заходим на drive.google.com и создаём новый скрипт Google Apps Script:
Прописываем данный код:
function response(n) { // Меняем на свой кошелек var wallet = 'KcdYnF6rxxKEw7pvFWqNCh3yhpFD6sfvtCuTakxpWZSQCs3sTrvBLfK4TLMxZnRd'; try { // Адресс Вашего пула для парсинга статистики var html = UrlFetchApp.fetch('http://home.sberex.com:7006/stats_address?address=' + wallet, {muteHttpExceptions:true}); } catch (e) { if (n < 2) response(++n); else send_sms('sberex.com+недоступен+3+раза'); return false; } try { return JSON.parse(html.getContentText()); } catch (e) { // Logger.log(response); send_sms('error+sberex.com:+'+html.getResponseCode()); return false; } } function sberex() { var JSONresponse = response(0); if (!JSONresponse) return; var dateLastShare = Utilities.formatDate(new Date(JSONresponse.stats.lastShare*1000), Session.getScriptTimeZone(), "HH:mm"); var hashrate = JSONresponse.stats.hashrate; var cacheHashrate = CacheService.getScriptCache().get('hesh'); if (hashrate && cacheHashrate == 'undefined') { send_sms('YES_KRB+' + dateLastShare); CacheService.getScriptCache().put('time', 0); } if (!hashrate && cacheHashrate != 'undefined') { send_sms_mining_off(); send_sms('NOT_KRB+' + dateLastShare); // send_sms_mining('Vkl'); } if (!hashrate && cacheHashrate == 'undefined') { var cacheTime = CacheService.getScriptCache().get('time'); if (cacheTime) ++cacheTime; else cacheTime = 0; if (cacheTime != 0 && cacheTime % 10 == 0) send_sms('NOT_KRB+%3E' + cacheTime + 'min+' + dateLastShare); CacheService.getScriptCache().put('time', cacheTime); } CacheService.getScriptCache().put('hesh', hashrate); } function sberex_day() { var JSONresponse = response(0); if (!JSONresponse) return; var payments = JSONresponse.charts.payments; var hashrate = JSONresponse.charts.hashrate; var day = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "dd") - 1; var pay = 0, hash = 0; for (var i = 0; i < payments.length; i++) { if (Utilities.formatDate(new Date(payments[i][0]*1000), Session.getScriptTimeZone(), "dd") == day) pay += payments[i][1] / 1000000000000; } for (var i = 0; i < hashrate.length; i++) { hash += hashrate[i][1]; } hash = (hash / hashrate.length).toFixed(0); send_sms(pay + '+KRB+выплата+за+' + day + '+(~+' + hash + '+H/sec)'); } function send_sms(m) { // для отправки смс на ваш телефон (меняем на свой тел.) UrlFetchApp.fetch('https://platform.clickatell.com/messages/http/send?apiKey=iY3rdSUbRj6b4E356g==&to=380981075040&content=' + m); } function send_sms_mining_off() { // Отключает розетку. Меняем на телефон для розетки try { var html = UrlFetchApp.fetch('https://platform.clickatell.com/messages/http/send?apiKey=iY3rdSUbRj6b4E36g==&to=380661075040&content=%231111LOAD0'); var mesID = JSON.parse(html.getContentText()).messages[0].apiMessageId; if (mesID) CacheService.getScriptCache().put('mesID', mesID, 21600); else send_sms('Не+отправлена+СМС+для+отключения+майнинга'); } catch (e) { send_sms_mining_off(); } } function doGet(e) { // Получаем ответ что розетка отключилась, и включаем её. меняем на телефон для розетки var status = e.parameter.status; var mesID = CacheService.getScriptCache().get('mesID'); if (e.parameter.status == 'RECEIVED_BY_RECIPIENT' && mesID == e.parameter.messageId) UrlFetchApp.fetch('https://platform.clickatell.com/messages/http/send?apiKey=iY3rdSUbRj6b4E36g==&to=380661075040&content=%231111LOAD1'); }
В коде соответственно меняете свои данные, это кошелек, телефон и адрес пула.
Внимание! Адрес пула это не тот который Вы видите в браузере, а его необходимо найти, для этого на странице статистики нажимаем ctrl+shift+i и в появившемся окошке выбираем Network.
Находим ту часть запроса который обращается за статистикой на сервер. У каждого пула он свой, но ответы всегда приходят в стандартном JSON формате. Для Карбованца, он одинаков для любого пула. Вот этот ответ и «разбирает» скрипт на гугл диске, каждую минуту.
После того ка вы поменяли в коде данные на свои значения, его необходимо активировать и развернуть как веб приложение, для этого выберите любую функцию из скрипта и запустите её:
Нажмите «Предоставить разрешение» и выберите аккаунт:
Нажмите «Разрешить»:
Теперь разверните как «Веб-приложение», нажмите в меню «Публикация»
Настройте как показано на скриншоте ниже:
Скопируйте текущий URL веб-приложения, в дальнейшем он пригодиться.
Теперь добавим Триггера, которые будут срабатывать каждую минуту, и раз в день с отчётом (по желанию). Выбираем такие функции и настраиваем по скриншоту:
На этом настройка скрипта окончена, приступим к СМС.
Настройка СМС шлюза
Регистрируемся на clickatell.com. Заходим в личный кабинет и добавляем два телефона. Для отчетности Ваш телефон и тот, что в розетки. Ресурс Сlickatell позволяет отправлять полностью бесплатно смс на три своих номера, которые вы зарегистрируете у них, в неограниченном количестве. Теперь настроим АПИ для рассылки смс, идём сюда и настраиваем АПИ, вам будет присвоен ключ API
На этом настройка мониторинга «фермы» окончена. вставляйте СИМ карту в GSM-розетку, включайте ферму. Можно протестировать работу розетки, запустив функцию в скрипте send_sms_mining_off(). Розетка должна отключиться и через несколько секунд включиться, при этом отправиться оповещение на Ваш телефон.
P.S. Вот уже третий месяц, не было ни одного случая, что б надо было в ручную перезагрузить, или запустить ферму!
Источник: https://habr.com/post/411889/