とある目的で「CPU 負荷とメモリ利用状態を Node.js から取得する」プログラムを作ったので、github で公開してみました:
https://github.com/dotnsf/cpumem
Git clone かダウンロードでソースコードをコピー&展開し、
で実行します。デフォルト設定だと5秒ごとに以下のようなフォーマットで結果をコンソールに出力します(赤字はコメント):
公開しているこのプログラムでは取得結果を単純にコンソール出力しているだけですが、実際にはこの結果を MQTT などでどこかに飛ばして記録したり、データベースに格納したりすることを想定しています。
中身はすごくシンプルで、単純に os パッケージを require し、os パッケージで提供されている機能をほぼそのまま使って CPU 利用率やメモリ使用量を求め、それを出力しているだけです。CPU 利用率のみ、いわゆる「パーセント」値で出力されるよう計算していますが、その程度です。
なお、デフォルトの取得間隔である5秒を変更する場合は、settings.js 内の exports.intervalms の値を変更してから実行してください(値はミリ秒で指定)。
https://github.com/dotnsf/cpumem
Git clone かダウンロードでソースコードをコピー&展開し、
$ node cpumem
で実行します。デフォルト設定だと5秒ごとに以下のようなフォーマットで結果をコンソールに出力します(赤字はコメント):
{ "cpus": [ { "user": 5.438012814200345, 1つ目のCPUコアのユーザープロセスによる利用率 "nice": 0.6939879964053115, 1つ目のCPUコアの実行優先度を変更したユーザープロセスによる利用率 "sys": 0.6002479372975158, 1つ目のCPUコアのシステムプロセスによる利用率 "idle": 93.26775125209683, 1つ目のCPUコアのアイドル状態になっている割合 "irq": 0 }, : (CPU コア数ぶん繰り返し) : ], "totalmem": 8284266496, 総メモリ量 "freemem": 345624576, 空きメモリ量 "uptime": 24193171, システム稼働時間(秒) "loadavg": [ 0.36669921875, 直近1分間の平均CPUおよびIO利用率 0.4462890625, 直近5分間の平均CPUおよびIO利用率 0.50439453125 直近15分間の平均CPUおよびIO利用率 ], "timestamp": 1548947954556 記録したタイミングのタイムスタンプ値 }
公開しているこのプログラムでは取得結果を単純にコンソール出力しているだけですが、実際にはこの結果を MQTT などでどこかに飛ばして記録したり、データベースに格納したりすることを想定しています。
中身はすごくシンプルで、単純に os パッケージを require し、os パッケージで提供されている機能をほぼそのまま使って CPU 利用率やメモリ使用量を求め、それを出力しているだけです。CPU 利用率のみ、いわゆる「パーセント」値で出力されるよう計算していますが、その程度です。
なお、デフォルトの取得間隔である5秒を変更する場合は、settings.js 内の exports.intervalms の値を変更してから実行してください(値はミリ秒で指定)。