2012-04-26 12 views
5

私は分散型サーバシステムを持っています。node.jsでシステム統計を取得する方法

多くのサーバーがPubSubを通じて調整されています。 これらはすべて統計サーバーに接続されています。 毎分のサーバーは、その統計を統計サーバーに送信します(処理された要求の数、平均時間など)。

だから...このstat-messagesにシステムステータスを含めるとよいでしょう。 CPU負荷(コアごと)と空きメモリが必要です。

私はちょっとした回避策を講じて、 "exec"というlinuxコマンドを呼び出して答えを解析し、送信用のJSONデータを作成することにしました。

しかし、このデータはコマンドラインからどのように取得できますか?

Mac OS Xでは、私はgeektoolスクリプトで必要なものすべてを簡単に手に入れることができますが、linux(debian)では動作しません。例えば

:MacのOS Xのライオンで

top -l 1 | awk '/PhysMem/ {print "Used: " $8 " Free: " $10}' 

私が手:

Used: 3246M Free: 848M 

とDebianでちょうどエラー...

+0

Dtraceを試しましたか? http://mcavage.github.com/presentations/dtrace_conf_2012-04-03 – codef0rmer

+0

https://github.com/sebhildebrandt/systeminformation – vbarbarosh

答えて

7

Linuxでは、あなたは/ procのを使用することができます。統計を読むコマンドラインの例は、hereを参照してください。

更新fs.readFile()

を使用して、直接かかわらノードからファイルを読み込む方が良いでしょう: おそらく優れているOS APIもあります。 使用例:Convert the output of os.cpus() in Node.js to percentage

+0

Thnxたくさん!空きメモリの量を得る方法を見つけましたが、すべてのコアにCPU負荷がかかりません。そして.../proc/loadavgはゼロを返します。それは普通ですか? – brianconnoly

+1

os.loadavg();を使用します。それは配列の1分、5分、15分でサーバの総負荷を返します。 – Licson

+0

+1 OS API .. –

1

あなたはtopコマンドのラッパーですos-usageを試すことができます。

これは、CPU使用率やメモリ使用率などの統計情報を提供します。使用例:

var usage = require('os-usage'); 

// create an instance of CpuMonitor 
var cpuMonitor = new usage.CpuMonitor(); 

// watch cpu usage overview 
cpuMonitor.on('cpuUsage', function(data) { 
    console.log(data); 

    // { user: '9.33', sys: '56.0', idle: '34.66' } 
}); 

// watch processes that use most cpu percentage 
cpuMonitor.on('topCpuProcs', function(data) { 
    console.log(data); 

    // [ { pid: '21749', cpu: '0.0', command: 'top' }, 
    // { pid: '21748', cpu: '0.0', command: 'node' }, 
    // { pid: '21747', cpu: '0.0', command: 'node' }, 
    // { pid: '21710', cpu: '0.0', command: 'com.apple.iCloud' }, 
    // { pid: '21670', cpu: '0.0', command: 'LookupViewServic' } ] 
}); 
1

恥知らずプラグ - https://www.npmjs.com/package/microstats

もディスクスペース、CPUやメモリがユーザ定義のしきい値を超えたときにユーザに警告するように構成することができます。 linux、macOS、windowsで動作します。

関連する問題