Telegram бот для мониторинга ферм

Что это такое?
 

    Это готовый набор скриптов для автоматизации работы ферм и оперативного оповещения о важных событиях, он же программный watchdog. Его можно использовать как при первоначальной настройке ферм и отладке разгона, так и в дальнейшей эксплуатации с целью минимизации простоев. Бот отправляет сообщения в чат или группу Telegram. Это бесплатно и не требует предоставления доступа к ригу сторонним сервисам. Образцы возможных вариантов сообщений вы можете видеть справа. Скрипты поставляются в виде bat-файлов, что даёт не только прозрачность исходных кодов, но и возможность их доработки под свои нужды. Для подключения к Telegram бот может использовать прокси-сервер. Код можно адаптировать для любого майнера от Claymore.

Принцип работы.

    При возникновении какого-либо сбоя бот отправляет сообщение в мессенджер и реагирует на часть ошибок по заранее определённому алгоритму. Например, при подвисании одной из карт прежде всего в Телеграм отправляется сообщение о начале перезагрузки. Сообщение содержит название фермы, причину перезагрузки (номер GPU) и время работы майнера до возникновения неполадки (аптайм). Риг отправляется на перезагрузку, а после перезагрузки сообщает об успешном её выполнении. Скрипт различает запланированный им ребут от случайного (например, при аварийном отключении электричества или срабатывании аппаратного watchdog'а), сообщения бота в этих случаях разные.

    Скрипт ведет детальную статистику ошибок перезапуска. Например, сообщение бота "RIG03 reboot n100 by GPU5" означает, что пятая карта третьей фермы повисла в сотый раз. Для обнуления статистики следует запустить clrstats.bat, при этом бот сообщит в чат показания всех счётчиков до сброса. Для периодического сохранения статистики ошибок в истории Telegram можно добавить запуск очистки в планировщик, например, такой командой: schtasks /create /sc monthly /d 1 /tn clrstats /tr C:\dualminer\clrstats.bat /st 00:01

    Кроме того, можно настроить отправку сообщений из Claymore's Manager при выполнении различных условий (потеря связи с фермой, перегрев, низкий хэшрейт, проблемы с кулером).

 

Режим "Авторазгон".


    При включении этого режима скрипт автоматически подбирает стабильные частоты памяти для каждой карты отдельно.

    Принцип работы:

    При каждой перезагрузке фермы частота памяти каждой карты постепенно повышается на 10 Гц. И наоборот, при возникновении заранее указанного количества проблем с картой, её частота понижается на 10 Гц. При возникновении первой ошибки карты, эта карта добавляется в "стоп-лист", т.е. не участвует в дальнейшем разгоне. После того как все карты фермы "упрутся" в свой стабильный максимум, бот сообщит об окончании подбора частот.

    Использование:

    Предполагается, что перед включением этой опции файл конфигурации уже настроен на стабильную работу фермы с заниженными частотами и сохранён как main.txt. Частоты карт должны быть вынесены в отдельный файл mclock.txt по порядку в столбик. Из этих файлов бот генерирует итоговый файл конфигурации config.txt.
    В файле настроек бота telebot.bat следует:
 - включить режим авторазгона (autofreq=1),
 - указать максимальную частоту карт (maxfreq=), при достижении которой карта также добавляется в стоп-лист,
 - указать количество сбоев перед понижением частоты (freqfails=). Для ускорения процесса подбора рекомендуется установить значение 1 (т.е. понижать частоту при каждой возникшей ошибке), а после окончания подбора увеличить до 2-3, чтобы исключить снижение частоты из-за разового случайного сбоя.
    Для сокращения времени подбора можно принудительно вызывать reboot.bat через планировщик, например, каждый час.
    clrstops.bat удаляет стоп-лист для повторного подбора (например, при смене карт, их порядка или других настроек, влияющих на стабильность).
    clrstats.bat также сбрасывает счётчик ошибок, который используется в сравнении с freqfails.
    При отключенном режиме авторазгона бот меняет частоты только в меньшую сторону каждые freqfails сбоев. Если изменения не требуются, можно убрать вызов autofreq.bat в конце скрипта reboot.bat.
    После настройки параметров перед первым запуском следует запустить autofreq.bat для создания первоначального файла конфигурации.

Установка и обновление.


    Ниже вы можете скачать готовый набор DualMiner, который содержит последнюю версию майнера и всё необходимое для интеграции с Telegram. В этом случае вам останется только внести ваши недостающие настройки в текстовые файлы.

    Для обновления майнера и/или бота в комплекте есть скрипт update.bat. В нём необходимо настроить пути и список файлов переноса, чтобы в дальнейшем разворачивать актуальные версии на фермы одним кликом. Есть возможность развёртывания обновлений на фермы с FTP сервера.
    Если же вы хотите самостоятельно добавить скрипты к уже существующей установке майнера:

 - скопируйте в папку с вашим майнером .bat файлы и curl.exe из архива (утилиту cURL также можно скачать с официального сайта),
 - если вы размещаете файлы в другой папке, вручную исправьте пути к логам майнера и утилите curl в bat файлах (параметр %~dp0),
 - убедитесь, что в файле запуска или конфиге установлен режим перезапуска майнера (параметр -r 1),
 - убедитесь, что включено ведение журнала по умолчанию (параметр -dbg),
 - убедитесь, что имена файлов и пути журнала не изменены (параметр -logfile).

DualMiner 14.7 + Telegram бот 3.0 от 17.06.2019 (Windows x64)

Настройка.


    Прежде всего, нужно зарегистрировать бота в Telegram. Для этого откройте чат с ботом @BotFather (см. пример) и последовательно введите (или нажмите соответствующие кнопки): /start, /newbot, далее имя бота как оно будет отображаться в чате, следующей строкой имя бота латиницей и обязательно словом "bot" в конце. В ответном большом сообщении вы получите уникальный ID вашего бота - он потрубуется позже. Для работы с группами нужно отключить режим /setprivacy - Disable. В меню Edit Bot также можно ввести ему описание и загрузить аватарку (Botpic).


    Затем откройте чат с ботом и напишите любое тестовое сообщение. Или добавьте бота в группу и напишите сообщение там. Вариант с группой может быть удобен, если за фермами следит несколько человек. Откройте "https://api.telegram.org/botВАШ:ИД/getUpdates", предварительно поменяв ВАШ:ИД на полученный выше. На странице найдите текст "id":большое_число - это второе значение, которое понадобится вам при настройке - ID чата. Если вы писали в группу, то число будет со знаком минус.

    Теперь распакуйте архив с майнером в удобную папку (без русских букв в пути!) и отредактируйте файл telebot.bat. В поля botid= и chat= после знака равно вставьте полученные выше ID бота и чата. Для подключения через прокси-сервер введите параметры подключения в строке proxy=, либо удалите строку целиком, если прокси не требуется. Добавьте остальные настройки майнера в txt: кошельки, пулы, параметры карт и т.д.
    

    Создайте ярлык на файл start.bat и поместите этот ярлык в папку Автозагрузки (например, C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\). Не перемещайте сам файл из папки, иначе ничего не будет работать.


    Если вы используете Claymore's Manager, укажите путь к notify.bat в настройках событий, тогда менеджер будет передавать боту название рига и тип события.

    Запустите майнер файлом start.bat - теперь вы будете получать сообщения о состоянии рига в Телеграм. Текст сообщений бота по умолчанию вы можете изменить в bat файлах.

    Вы можете дублировать сообщения бота по электронной почте. Для отправки писем проще всего воспользоваться утилитой sendemail. Поместите её в папку с майнером и добавьте вызов в bat файлы рядом с вызовом curl.exe по примеру:

%~dp0sendemail.exe -f "%computername% <отправитель@ya.ru>" -t получатель1@ya.ru, получатель2@ya.ru -u "%answer%"  -m %answer% -s smtp.yandex.ru -o tls=yes -xu отправитель@ya.ru -xp пароль_отправителя

    Если у вас есть идеи как улучшить бота - пишите!