前回、Pythonでサーバー上のリソースを取得するためのアプリを作成してみました。
elsammit-beginnerblg.hatenablog.com
前回のアプリはfrontをjavascriptで作成したのですが、どうせならReactを使用してしっかり作ってみようかな?
と思い、再挑戦することに。
どうせならサーバーサイドもpythonではなく、nodejsでも使ってみようと思ったのですが、、、
nodejsでCPUやメモリリソースのチェックの仕方を知らない!!
ということで、今回はnodejsでリソース取得する方法を調べましたので備忘録として残そうと思います。
■CPU・メモリリソース取得するためのモジュール
nodejsでリソースを取得するには、
osモジュールを使用すれば取得できます。
下記でモジュールを読み込めばOK。
const os = require('os');
■CPUリソース取得
では、osモジュールを用いてCPUリソースを取得するためには、
こちらのコードを実行すればOKです。
const cpuInfos = os.cpus();
こちらを実行すると、
各コア毎のCPUリソースがオブジェクト配列で取得できます。
[ { model:***** speed: ****, times: { user: ****, nice: 0, sys: ****, idle: **** irq: 0 } }, { model: **** speed: ****, times: { user: ****, nice: ****, sys: ****, idle: ****, irq: **** } }, ・・・ ]
timesオブジェクトの中身はそれぞれ下記の意味になります。
・user CPUがユーザーモードで費やしたミリ秒数。
・nice CPUがniceモードで費やしたミリ秒数。
・sys CPUがsysモードで費やしたミリ秒数。
・idle CPUがアイドルモードで費やしたミリ秒数。
・irq CPUがirqモードで費やしたミリ秒数。
■メモリリソース取得
次はメモリリソースの取得です。
メモリはそれぞれ下記の通り、トータルメモリや空きメモリの取得が行えます。
const totalMem = os.totalmem(); const freeMem = os.freemem();
■実際にCPUやメモリリソースを取得するためのサーバーアプリを作成
では、先ほどのCPUやメモリを取得するWebアプリケーションを簡単に作成してみました。
コードはこちら。
const os = require('os'); const express = require('express'); const app = express(); getCpuInfo = () =>{ const nowDate = new Date(); const cpuInfos = os.cpus(); let cpuUsage = 0; let cpuUsageRet = []; cpuInfos.forEach((element) => { let total = 0; for(let type in element.times){ total += element.times[type]; } cpuUsage += (1 - (element.times["idle"] / total))* 100; }); cpuUsage = (cpuUsage / count).toFixed(2); cpuUsageRet = {cpuUsage:cpuUsage,date:nowDate}; return cpuUsageRet; } getMemInfo = () =>{ const nowDate = new Date(); const nowDateStr = `${nowDate.getFullYear()}/${nowDate.getMonth()+1}/${nowDate.getDate()} ${nowDate.getHours()}:${nowDate.getMinutes()}:${nowDate.getSeconds()}` const totalMem = os.totalmem(); const freeMem = os.freemem(); const memUsage = ((1 - freeMem / totalMem)*100).toFixed(2); return { date:nowDateStr, memUsage:memUsage, }; } app.listen(8080, ()=>{ console.log("Server Start"); }); app.get('/', (req, res) =>{ const cpuUsage = getCpuInfo(); const memUsage = getMemInfo(); const usage = {CPU:cpuUsage, Memory:memUsage}; res.json(usage); res.end(); });
expressを使用しておりますが、コードは単純で、
getリクエストを受け付けたら、CPUやメモリリソースを取得し、jsonでfrontに返すコードになります。
こちらを、
node ファイル名.js
等で実行頂いた後にWebブラウザ等でアクセスすると、
CPUやメモリリソースが格納されたjsonデータが取得できるかと思います。
■最後に
今回はnodejsでリソースを取得する方法についてまとめました。
react + nodejsでリソース取得用のアプリを作成中です。
作成出来ましたら、ブログで報告していきたいと思います。