ethereumをeth-netstatで状態監視する


完成イメージ

仕組みはこんな感じ


※dockerコンテナをホスト側から操作するので各gethのポート番号は異なります。

監視対象はこちらで作成したdockerコンテナ
API(eth-net-intelligence-api)とWeb(eth-netstats)はdockerのホスト上に設置します(dockerコンテナ化出来たらまた刷新するかも)

共通

・npmのパッケージインストール
sudo npm install -g grunt-cli
sudo npm install -g pm2
sudo npm install -g primus

eth-net-intelligence-apiのインストール

cd ~/
git clone https://github.com/cubedro/eth-net-intelligence-api
cd eth-net-intelligence-api
bin/update.sh
※rootの実行権限が必要なのでsudoできるユーザかrootで実行要

cd eth-net-inteligence-api
npm install
cat - > process.json
---
[

  {
    "name"              : "node01",
    "cwd"               : "/home/yosshi/eth-net-intelligence-api",
    "script"            : "app.js",
    "log_date_format"   : "YYYY-MM-DD HH:mm Z",
    "log_file"          : "/home/yosshi/logs/node01-app-log.log",
    "out_file"          : "/home/yosshi/logs/node01-app-out.log",
    "error_file"        : "/home/yosshi/logs/node01-app-err.log",
    "merge_logs"        : false,
    "watch"             : false,
    "max_restarts"      : 10,
    "exec_interpreter"  : "node",
    "exec_mode"         : "cluster_mode",
    "env":
    {
      "NODE_ENV"        : "test",
      "RPC_HOST"        : "localhost",
      "RPC_PORT"        : "8546",
      "LISTENING_PORT"  : "30304",
      "INSTANCE_NAME"   : "node01",
      "CONTACT_DETAILS" : "",
      "WS_SERVER"       : "http://127.0.0.1:53000",
      "WS_SECRET"       : "secret",
      "VERBOSITY"       : 2
    }
  },
  {
    "name"              : "node02",
    "cwd"               : "/home/yosshi/eth-net-intelligence-api",
    "script"            : "app.js",
    "log_date_format"   : "YYYY-MM-DD HH:mm Z",
    "log_file"          : "/home/yosshi/logs/node02-app-log.log",
    "out_file"          : "/home/yosshi/logs/node02-app-out.log",
    "error_file"        : "/home/yosshi/logs/node02-app-err.log",
    "merge_logs"        : false,
    "watch"             : false,
    "max_restarts"      : 10,
    "exec_interpreter"  : "node",
    "exec_mode"         : "cluster_mode",
    "env":
    {
      "NODE_ENV"        : "test",
      "RPC_HOST"        : "localhost",
      "RPC_PORT"        : "8547",
      "LISTENING_PORT"  : "30305",
      "INSTANCE_NAME"   : "node02",
      "CONTACT_DETAILS" : "",
      "WS_SERVER"       : "http://127.0.0.1:53000",
      "WS_SECRET"       : "secret",
      "VERBOSITY"       : 2
    }
  }
]
---
※各pathやWS_SECRETは環境にあわせてください

pm2 start process.json

・その他のコマンド
pm2 list
pm2 monit
pm2 show node01
pm2 restart node01
pm2 kill

eth-netstats

cd ~/
git clone https://github.com/cubedro/eth-netstats
cd eth-netstats
npm install
grunt all
export PORT=53000; export WS_SECRET=secret; npm start

ブラウザで http://localhost:53000/ で接続できる。