자비스 프로젝트
앉아서 월 용돈 5만 원 벌기 프로젝트를 추진하다가…. 맥스코인 사태 이후로 잊고 있었던 채굴에 다시 발을 담갔습니다.
때마침 이더는 호재였었고, 이미 한번 해봤던 일이기도 하니 손쉽겠다는 안일한 생각을 하고 있었습니다.
그때나 지금이나 상황은 다르지 않더군요.
이건 뭐 앉아서 용돈 벌기가 아니라 허구한 날 이게 잘못됐을지 저건 잘 돌아가고 있는지 체크하고, 모니터링 하는게 일상이 되었습니다.
뭘 그렇게 대단한걸 한다고(1060 1way, 1060 + 1070*3 4way 두셋?이 전부인...) 이러고 있을까 싶기도 합니다만…….
모니터링을 안 할 수도 없고,
나에게 알림이라도 준다면 그런 소모적인 시간을 줄일 수 있겠다 싶었습니다.
이름하여...자.비.스 프로젝트 두둥!
제가 채굴 관리를 위해 사용하고 있는 알림 방법에 대해 공유하고자 합니다.
공유해 드릴 내용은 다음과 같습니다.
- 자비스 생성하기 (소스코드 제공)
- 스위칭 채굴시 스위칭 정보 알림 받기
- 리모트매니져 이메일 알림 사용
- 마이닝풀 허브 잔고상황 알림 받기
- NVIDIA GPU 온도현황 알림 받기
- Ethminer 모니터링
- 활용방안
1. 텔레그램 봇생성
텔레그램에는 봇이라는 훌륭한 기능이 존재합니다.
누구나 봇을 만들어서 어떠한 서비스로 연계할 수 있는 확장성이 있습니다.
이런 텔레그램의 봇을 이용해 텔레그램으로 알림을 집중화해보도록 하죠.
우선 알림을 받기 위한 봇을 생성해야 합니다.
봇 생성과 관련해서는 "또탈퇴된코란"님의 글에서 소개되었던 아래의 링크로 대신합니다.
http://junemoon.tistory.com/164
(팁을 드리자면 봇이름을 멋들어지게 짓는 것입니다.! )
(혹시 랜딩봇에서 사용하셨던 텔레그램봇 정보가 있으시다면 그것으로 사용하셔도 무방합니다.)
여기서 봇 토큰과 채팅번호를 획득하셨을 겁니다.
2. 알림을 위한 자비스 인공지능 작성
저희는 이미 프로그래머입니다.
채굴 최적화를 위해 batch를 수정하고, 수정하고 하는 경험들 이미 해보셨지 않습니까?
프로그램은 거창한 것이 아니고 논리에 맞게 구동되는 로직을 구성만 해주면 되는 일입니다.
여기서는 VBS 를 통해 텔레그램 봇에 알림을 날려보겠습니다. 소스 코드는 아래와 같습니다.
-----------------------------------------------------------------------------------------------------------------------------
const name = "채굴기 이름"
const token = "bot123456789:asdfasdfasdfasdfasdf"
const chatid = "123456789"
msg = name & " " & WScript.arguments.item(0)
url = "https://api.telegram.org/" & token & "/sendMessage?text=" & msg & "&chat_id=" & chatid
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
objHTTP.Open "POST", url, False
objHTTP.Send
-----------------------------------------------------------------------------------------------------------------------------
소스에서 사용 중인 몇 가지 상수에 대한 설명입니다.
name = 채굴기 이름
token = 텔레그램 봇 토큰
chatid = 봇 chatid
위의 내용을 자신의 봇에 맞게 변경한 후,
jarvis.vbs로 저장을 합니다.
자비스의 사용법은 다음과 같습니다.
jarvis.vbs "보낼내용"
오우야...이렇게 여러분들만의 자비스가 탄생했습니다. 자비스를 이제 부려보도록 하죠.
3.1 오토스위칭시 알림
오토스위칭을 사용중이시라면 도대체 지금 뭘 마이닝 중인지, 제대로 스위칭 되긴 한 것인지 궁금할 때가 있습니다.
스위칭 되는 시점에 알림을 받을 수 있다면 좋겠다 싶습니다.
jarvis.vbs를 배치파일과 같은 위치에 복사하고, 오토스위칭 배치파일을 조금 각색해 보겠습니다.
-----------------------------------------------------------------------------------------------------------------------------
jarvis.vbs "ETH/SIA 시작"
%eth% -epool asia.ethash-hub.miningpoolhub.com:12020 -ewal username.workername -eworker username.workername -esm 2 -epsw x -allpools 1 -retrydelay -1 -dpool stratum+tcp://hub.miningpoolhub.com:20550 -dwal username.workername -dpsw x -dcoin sc -dcri 25 -ethi 16
jarvis.vbs "ETH/SIA 끝"
-----------------------------------------------------------------------------------------------------------------------------
위와같이 각각의 마이너 설정부분을 수정해주면 다음과 같이 자비스로부터 알림을 받게 됩니다.
우리 알바생들 열심히 일해주고 있군.
훌륭 스고이 나이스 아무튼 기특하기 그지없습니다.
일단 원하는 바는 이루었습니다.
이제 마지막 알림에만 집중하면 지금 어떤 코인을 채굴 중인지 바로 파악이 됩니다.
다음을 보도록 하겠습니다.
3.2. Claymore (이하 클레이모어)
클레이모어에는 Remote manager(이하 리모트매니져)라는 모니터링 프로그램이 존재합니다.
리모트매니져에서 옵션을 설정하여 알림을 받는 방법을 알아보도록 하겠습니다.
[자비스 알림]
리모트매니져에서 자비스를 사용하기 위해 자비스를 조금 수정해 보겠습니다.
-----------------------------------------------------------------------------------------------------------------------------
const token = "bot123456789:asdfasdfasdfasdfasdf"
const chatid = "123456789"
name = WScript.arguments.item(0)
problem = WScript.arguments.item(1)
select case problem
case "1": problem = "Miner Offline"
case "2": problem = "Temperature warning"
case "3": problem = "Low hashrate"
case "4": problem = "Fan warning"
case else: problem = "Unknown warning"
end select
msg = name & " " & problem
url = "https://api.telegram.org/" & token & "/sendMessage?text=" & msg & "&chat_id=" & chatid
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
objHTTP.Open "POST", url, False
objHTTP.Send
-----------------------------------------------------------------------------------------------------------------------------
자비스 호출을 위한 배치파일을 작성해 보겠습니다.
-----------------------------------------------------------------------------------------------------------------------------
jarvis.reman.vbs %1 %2
-----------------------------------------------------------------------------------------------------------------------------
리모트 매니져에서 자비스를 호출할 수 있도록 옵션을 지정해 줍니다.
이제 리모트 매니져가 감시를 하다가 이상 상황이 발생하면
자비스로부터 다음과 같이 보고가 들어옵니다.
[이메일 알림]
리모트매니져에는 이미 이메일 알림을 위한 기능이 존재합니다.
위의 빨간 상자처럼 이메일 알림을 위한 옵션을 지정해 주시면
마이너에 이상이 생겼을 경우 이메일로 알림을 보내주게 됩니다.
이 기능의 사용을 위해서는 SMTP 프로토콜을 지원하는 메일서버를 사용해야 하는데요.
Naver, Google, Nate등이 SMTP 사용을 지원합니다. (각 메일 환경설정에서 smtp 사용을 활성화 해줘야 함)
(테스트 결과 Nate에서만 인증 및 알림 발송이 가능한 것을 확인했습니다.)
[이메일을 텔레그램으로 받기]
이메일 또한 포워딩하여 텔레그램으로 알림을 받을 수 있습니다.
왜 이렇게 어렵고 힘들게 하려는고 하니, 이것은 자비스의 사용이 어렵거나 할경우
손쉽게 텔레그램으로 알림을 받을 수 있는 방법이기 때문입니다.
정확히 말씀드리면 텔레그램의 특정봇을 이용하게 되면
봇에 알림을 주기 위한 수신용 이메일 주소가 발급되는데요.
그 이메일 주소를 리모트매니져의 수신주소로 지정하면 텔레그램으로 알림이 오게 되는 원리입니다.
우선 텔레그램에 이메일 알림을 위한 봇을 추가해 줍니다.
(혹은 텔레그램에서 직접 @etlgr_bot 을 추가하셔도 됩니다.)
이 봇에 접속하시거나 /start 명령어를 텔레그램에 입력해 보면 다음과 같이 이메일 주소가 발급됩니다.
이제 저 주소를 리모트매니져에서 수신주소로 설정해 주시면
마이너가 이상 상황일 때 텔레그램으로 알림이 오게 됩니다.
첫 번째 메시지를 보시면
저 같은 경우 옵션에서 "Group mails if several problems happened the same time" 체크를 해두어서
1060, 1070 마이너에 대한 메시지가 한 메시지로 수신되었습니다.
이것도 자비스 못지않게 괜찮은 알림 방법인 것 같습니다.
물론 공공연히 열려있는 이메일이다 보니 민감성 자료는 이쪽으로 수신하지 않는 게 좋을 것 같습니다.
한 가지 더 팁을 드리자면,
메일서비스들에서 제공하는 전달 기능을 사용하여
자신의 ***@etlgr.com으로 전달처리 하면
일반 메일들도 텔레그램으로 알림을 보낼 수 있습니다.
3.3 마이닝풀허브 잔고 알림
마이닝풀허브의 코인 잔고 현황을 텔레그램으로 받아보는 자비스 응용 버전 입니다.
소스가 길어 파일을 첨부하오니 아래 내용을 자신의 정보에 맞게 수정하시고 사용하시면 됩니다.
const MPHAPI = "마이닝풀 허브 API"
const TOKEN = "bot123456789:asdfasdfasdfasdfasdf"
const CHATID = "123456789"
사용법: mph_balance.vbs "ETH"
mph_balance.vbs "ZEC"
저 같은 경우, 자비스를 호출하는 batch를 만들어
윈도우 예약작업에 스케쥴링 하였습니다.
3.4 NVIDIA GPU 온도현황 알림
NVIDA GPU 온도 현황을 텔레그램으로 받아보는 자비스 응용 버전 입니다.
소스가 길어 파일을 첨부하오니 아래 내용을 자신의 정보에 맞게 수정하시고 사용하시면 됩니다.
const NAME = "채굴기이름"
const TOKEN = "bot123456789:asdfasdfasdfasdfasdf"
const CHATID = "123456789"
사용법: nvidia_gpu_temp.vbs
예약작업으로 스케쥴 걸어주시거나, 스위칭 변경 시 한 번씩 받도록 하면 괜찮은것 같습니다.
3.5 Ethminer 모니터링
Claymore API와 호환되는 포맷으로 API를 지원하도록 만들었습니다.
따라서 클레이모어를 모니터링 할 수 있는
관리툴들(Claymore remote manager 와 같은)에서 모니터링이 가능해 집니다.
자비스와 연동하여 10분간격 상황보고가 이루어 집니다.
3.3에서 다루었던 NVIDIA 온도 체크 스크립트를 통하여 온도 모니터링이 이루어 지도록 하였습니다.
사용해보실 분들은
첨부된 zip파일에 ethminer 배치파일, 자비스소스가 포함되어 있으니,
텔레그램봇 내용을 자신의 환경과 맞게 수정하여 사용하시면 됩니다.
4. 관련 소스 및 프로그램
5. 활용 방안
1. 윈도우 부팅 / 종료 시 자비스 호출하기 (시스템이 부팅되었습니다 / 시스템이 종료됩니다)
2. 자비스를 좀 더 진화시켜 내가 보낸 메시지에도 응답하게 하기(채굴 종료/재시작?)
이렇게 제가 사용하고 있는 몇 가지 채굴 알림 방법을 소개해 보았습니다.
어떻게 활용하느냐에 따라 좀 더 손쉽고 스마트한 채굴환경 조성이 되리라 생각합니다.
뭔가 이런저런 아이디어를 모아보면 쓸모 있지 않을까요?
각자 방법들을 공유해 보는 것도 괜찮을 것 같습니다.
긴 글 읽어주셔서 감사합니다.
6. 자비스가 스토커같이 계속 메시지를 보내옵니다. 어떻게 해야 하죠?
그렇다고 영원히 모른 채 할 수는 없으니, 텔레그램에서 잠시 알람을 꺼두기로 합니다.
우리는 밀당의 대가입니다.
7. 부록
(1) 멀티플랫폼 모니터링 시스템 (Windows, Mac, Chrome, Web) - Meerkat [v0.3.1 업데이트]
이벤트 기간입니다. 좋아요↓ 한방 해주실꺼죠? ^^