LoginSignup
2
3

More than 5 years have passed since last update.

【Node.js】udpで回線監視をするアプリケーション(udping)を作った話

Last updated at Posted at 2016-12-11

SFC-RG Advent Calendar 2016の11日目です。

スクリーンショット 2016-12-12 2.04.04.png

概要

  • Node.jsで簡単な回線監視を行うアプリケーションを作った
  • コマンドラインツール,WEBアプリケーション,Node.jsモジュールの3つの使い方が出来るようにする
  • RaspberryPiなどのIoT機器で回線監視に用いることをを想定。
  • サーバー側・クライアント側の両方から、RTTの上昇や不通といった回線異常を検知できます。

GitHub
npm

構成

環境

  • Node.js v6.9.2 (v4以降なら動くはず)
  • Mac OS X 10.12.1
  • Ubuntu 16.04

Windowsは未確認です。大したことはやってないので大丈夫だとは思いますが、出来ないこともあるかもしれません。

シーケンス図

基本的な仕組みはこんな感じ。
udping_図.001.jpeg

使い方

プライベートIPを介する場合、必要に応じてポートフォワーディングを行ってください。

コマンドラインツールとして利用する

~/
npm install udping --global

グローバルオプションをつければ、udpingをそのままターミナルのコマンドとして使えます。

サーバー側

~/
udping -s

クライアント側

~/
udping [サーバー側のIPアドレス]

主なオプション

ping風です。

  • -s, --server
    サーバーモードで起動します。

  • -c, --client
    クライアントモードで起動します。

  • -t, --time
    実行時間(秒) デフォルトは無限です。

  • -i, --wait
    実行間隔(秒) デフォルトは1秒です。サーバー側は1.5秒

  • -f, --file
    ログデータを書き出すパスを指定できます。
    デフォルトは[実行ディレクトリ]/result_udping/

  • -h, --host
    サーバー側のIPアドレスです。
    通常はudping 192.168.1.1のように省略します。

  • -p, --port
    サーバー側のポート番号を指定します。デフォルトは55555。独自にで指定したい場合や他のプログラムとの競合がある場合のみ変更してください。

モジュールとして他のNode.jsアプリケーションから利用する

普通にnpmでインストールしてください。

~/
npm install --save udping

udpingクラスを呼び出すと使えます。
引数に環境設定用のオブジェクトを与えてください。
``node.js:yourApp.js
const Udping = require(
udping`);
const _env = {
//サーバーorクライアント クライアントが初期値。
//mode: "client",
mode: "server",

//サーバーのホストネーム IP 
host: "localhost",

port: 55555,
execTIme: new Date().getTime(),
savepath: `./result_udping/${Date.now()}_result.txt`,
//何ミリ秒おきに送るか。モードをサーバーにした場合は1.5倍
wait: 1000,
//タイムアウトやエラーが起きた時のcallback。初期設定はプリミティブ型のfalseを入れておく。
errCallback: false,
//成功時のcallback.初期設定はプリミティブ型のfalseを入れておく。
successCallback: false

}
const udpingServer = new Udping(_env);
```

WEBコンソールでRTTをチャートで可視化する(おまけ機能)

RTTを可視化させて楽しむ機能を作りました。

CLI版をインストールした状態で、

~/
udping-web

で起動します。適当なブラウザでlocalhost:3012を開いてください。

スクリーンショット 2016-12-12 2.04.04.png
こんな感じでヌルヌル動きます

参考文献

npm でコマンドラインツール開発事始め

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3