前回は環境のセットアップからサーバーソフトの起動、プロセス監視までを行いました。
まあこれだけで十分といえば十分なのですが、今回はさらに監視対象を加えます。
そもそもNEMのスーパーノードとは、計算リソースを使ってトランザクションの承認などを行う代わりに報酬がもらえるという仕組みになっていて、正しく運用できているかというチェックが4時間ごとに自動で行われます。
現在稼働中のSN一覧は https://supernodes.nem.io/ で見ることができますし、各ノードの詳細ページではSNのパフォーマンスチェック各ラウンドの結果を見ることができます。
Bandwidth、Height、Chain part…など8項目のチェックをすべてクリアし続けていないとSNとして認められず、報酬がもらえません。
なのでそもそもサーバーのプロセスを監視することも重要なのですが、このテスト結果を監視するのがとても重要です。
今回はgoogle apps scriptを使って監視します。こういう用途でたぶん一番楽な方法じゃないかなと思います。
google spread sheetなどを制御することができる便利言語で、なんとcronのように定期実行&失敗時にはメール通知もできるのでNEMに限らず簡単なweb監視にとても便利なのです。
では書いていきましょう
google spread sheetから「スクリプトエディタ」を開きます
そしたら、以下のようにスクリプトを入力します:
function myFunction() {
var response = UrlFetchApp.fetch("https://supernodes.nem.io/details/2");
var reg_table = /<table(?: .+?)?>[\s\S]*?<\/table>/g;
var content = response.getContentText();
var tables = content.match(reg_table);
var reg_tr = /<tr(?: .+?)?>[\s\S]*?<\/tr>/g;
var tr = tables[tables.length - 1].match(reg_tr);
if ( tr[1].match(/PASS/)) {
Logger.log("PASS");
} else {
throw new Error("Round failed!!: https://supernodes.nem.io/details/2");
}
}
“https://supernodes.nem.io/details/2” の2の部分は、監視したいSNのIDに書き換えてください。関数名はなんでも良いです。
パフォーマンスチェックにPASSしなかった場合、エラーを投げます。
これを定期実行&失敗時にメール送信するように設定します。
スクリプトエディタ上の時計アイコンをクリックし、先ほど書いた関数(myFunction)に対して、
- 時間主導型
- 時タイマー
- 1時間ごと
を設定します。さらに右側の「通知」をクリックして、「起動失敗の通知」に、メールを送ってほしいメールアドレスを入力、間隔を「今すぐ」とします。
これを「今すぐ」にしないと、エラーが発生してもメールの来るタイミングが日ごととかになってしまうので注意してください。
試しにわざと失敗させたりして、ちゃんとメールが送られるか確認すると良いでしょう。
次回は、構築に際して困った時にどうしたら良いか、などのtipsを書こうと思います。
コメント