Minerダウンを検知する仕組み2017年9月8日みなさんRIGが落ちた時の検知ってどうしていますか?私の場合は全RIGがethermine.orgのPoolに接続しているので、workerがダウンした際にethermineからメール通知が来ます。これでも充分といえば充分なんですが、GPUが1枚だけ死んだ場合は通知が来ませんし、通知が来るまでラグが1時間くらいあるのです。落ちたら即検知できないものか、と模索していました。最初に思いついたのがpingによる生死監視。定期的にpingを投げ、応答がなければRIGが落ちてると判断するというもので、ネットワークエンジニア時代によくやっていた手法です。1つはリモート拠点に対してのpingはどうするかという点、もう1つはRIGが生きててもMinerが落ちてる場合がある点。後者は特にethOSだと顕著です。WinだとだいたいOSごと死ぬけど、ethOSはsshで入って再起動できることが多いです。ping監視は意味無さそうです。ethOSのステータスパネル(http://xxxxxx.ethosdistro.com/)を見てみると、conditionがわかるようになってます。こんな感じで”a”列に状態が記述されてます。ここを検知して異常があれば通知が来るような仕組みをつくれば良さそうです。ethOSのステータスパネルではAPIとしてJSONデータが取得できます。これ使えばなんとかできそうです。ちなみに私はJSONデータなんて使ったこともない、javascriptはjQueryがいじれる程度、phpはwordpressがいじれる程度のスキルしか持ち合わせておりません。体系的に学んだプログラミング言語といえばSE時代の新人研修でC言語を習った程度です。間違っていること、効率が悪いことをしている可能性があることを承知した上で以降を読んで下さい。Notationの略なので、特に何も考えずにJavaScriptでなんとかしようと試行錯誤しましたが、最終的にphpで落ち着きました。JavaScriptだとcronで定期実行できなかったんです。JSONを取得するとこんな文字列がでてきます。こいつをコネコネしてやりましょう。4303"}},"total_hash":497.71,"alive_gpus":22,"total_gpus":22,"alive_rigs":3,"total_rigs":3,"current_version":"1.2.4","avg_temp":57.723333333333,"capacity":"100.0","per_info":{"claymore":{"hash":498,"per_alive_gpus":22,"per_total_gpus":22,"per_alive_rigs":3,"per_total_rigs":3,"per_hash-gpu":"22.6","per_hash-rig":"166.0","current_time":1504924911}}}中を見ると”condition”:”mining”という記述がありました。minerが落ちるとここの表記が”mining”から変わるようです。確認したところ、minerが落ちると”no_hash”、再起動中は”just_booted”、GPU温度高すぎで”throttle”などが確認できました。実際にググりまくってphpを書いてみました。XMLで似たようなことやろうとした時はクロスドメイン問題とか色々あって苦労したのに...。適当にmonitor.phpと名前をつけてWEBサーバーにアップします。※ちなみにステータスパネルURLはethOS上でhelpmeコマンドで確認できます。'の状態が変化しました。}}?>local.confでworker名(rack_loc)を指定していない場合は適宜書き換えてください。このPHPのURLをブラウザで実行するとこうなります。試しに1台リブートしてみました。RIGを1台rコマンドで再起動させ、起動後にupdateコマンド(ステータスパネルに状態を通知する)をした所、ちゃんと反映されました。ブラウザを更新した瞬間メールも届きました。ステータスパネルIDは恥ずかしいので隠してます。ちなみにGPU温度が高くて”throttle”になることが結構多いので、”throttle”ではメールが来ないようにしてます。よろしくないけれど、”throttle”でも掘れてるので。無事にメール通知が確認できたので次は定期実行させましょう。WebサーバーのCron機能を使います。Xserverの場合は次のような設定にします。分を”*/5′′とすることで5分毎に実行されるようになります。コマンドの”/usr/bin/php7.0′′の部分はサーバで実行しているPHPのバージョンと合わせてください。PHP7.1.4を利用している場合は”/usr/bin/php7.1′′になります。Cronが動いているか不安な場合はここにメールアドレスを入れれば結果を通知してくれます。入れっぱなしだと5分毎にメールが来ちゃうので、確認できたら消しておきましょう。充分にテストできていないので真似する際は気をつけてください。ethosdistroのAPI制限は調べてないけど、5分に1回程度なら大丈夫じゃないかなと思います。2017.09.29追記RIGを停止した場合、6日間はステータスパネルに残り続けるようです。今のままだと6日間ひたすらメールが届き続けてしまうので若干コードを直しました。具体的には”unreachable”も除外するようにしてます。最近BTC価格が戻ってきましたね。...日本から届いたRIG不安定でどうしようもなくなったRIG5を家族に送ってもらいました。...マイニング設定を調整するGPU使用率100%で起動しっぱなしはちょっと怖いですよね。...ASRock変態マザーに13枚搭載完了というような内容のツイートをしたらバズりました。AM本文に「workerがダウンした際にethermineからメール通知が来ます。provided!」とエラーになります。AM>「*.*.*.201」これだけではちょっと判断できませんが、おそらくプライベートIPを入力されていませんか?ethermineの設定ではグローバルIPを入力する必要があります。AMご指摘の通り、プライベートIPを入力していました。グレーで薄く表示されていたのはグローバルIPの4オクテット目でした。いただいたヒントをもとにグローバルアドレスを入力した所、設定が反映しました。おかげさまで設定できました。ありがとうございました。ethConfigのメールアラート機能もこのパネルのデータを使って実装しました。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。設定まとめとりあえずethOSが気になる人はここParallelminerマイニング用の電源を売ってます。国内でATX電源を買うよりリーズナブルだと思いますよgpuShackethOSの購入はここから管理人:hyperbananaこんにちは、hyperbananaです。フリーランスのWebクリエイターをしています。アイコンはいらすとやさんからお借りしました。