概要
Node-REDのノードでnode-red-contrib-osというものがあります。これを使えばサーバの基本情報を取得したり、CPU/メモリ/ディスクといったリソースを監視したりすることができます。
とりあえずenebular Flowで試してみる
Flowは以下です。
[{"id":"67b92c01.7430ec","type":"milkcocoa","z":"fe18e088.694ba","appId":"<あなたのMilkcocoa App ID>"},{"id":"f7925704.7ab208","type":"CPUs","z":"fe18e088.694ba","name":"","x":98.5,"y":209,"wires":[["ba663891.29ea08"]]},{"id":"f7de6c38.ea8e5","type":"Loadavg","z":"fe18e088.694ba","name":"","x":104.5,"y":158,"wires":[["8e77d6b9.27c198"]]},{"id":"7e475bd9.4655dc","type":"Memory","z":"fe18e088.694ba","name":"","x":271.5,"y":57,"wires":[["c5b91d21.456ea"]]},{"id":"25c96c09.14060c","type":"inject","z":"fe18e088.694ba","name":"","topic":"","payload":"","payloadType":"date","repeat":"60","crontab":"","once":false,"x":100.5,"y":44.5,"wires":[["7e475bd9.4655dc","2137a046.a2371","f7de6c38.ea8e5","f7925704.7ab208"]]},{"id":"89f73b88.486e48","type":"milkcocoa out","z":"fe18e088.694ba","milkcocoa":"67b92c01.7430ec","dataStore":"server1/loadavg","operation":"push","targetId":"","name":"","x":446.5,"y":158,"wires":[["a9e9f392.0fa768"]]},{"id":"a9e9f392.0fa768","type":"debug","z":"fe18e088.694ba","name":"","active":true,"console":"false","complete":"false","x":544.5,"y":273,"wires":[]},{"id":"2137a046.a2371","type":"Drives","z":"fe18e088.694ba","name":"","x":113.5,"y":107,"wires":[["eef9a751.5d3b6"]]},{"id":"8e77d6b9.27c198","type":"change","z":"fe18e088.694ba","name":"","rules":[{"t":"set","p":"payload.loadavg1","pt":"msg","to":"payload.loadavg.0","tot":"msg"},{"t":"set","p":"payload.loadavg5","pt":"msg","to":"payload.loadavg.1","tot":"msg"},{"t":"set","p":"payload.loadavg15","pt":"msg","to":"payload.loadavg.2","tot":"msg"},{"t":"delete","p":"payload.loadavg","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":271.5,"y":157.5,"wires":[["89f73b88.486e48"]]},{"id":"ba663891.29ea08","type":"change","z":"fe18e088.694ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.cpus.0","tot":"msg"},{"t":"set","p":"payload.user","pt":"msg","to":"payload.times.user","tot":"msg"},{"t":"set","p":"payload.nice","pt":"msg","to":"payload.times.nice","tot":"msg"},{"t":"set","p":"payload.sys","pt":"msg","to":"payload.times.sys","tot":"msg"},{"t":"set","p":"payload.idle","pt":"msg","to":"payload.times.idle","tot":"msg"},{"t":"set","p":"payload.irq","pt":"msg","to":"payload.times.irq","tot":"msg"},{"t":"delete","p":"payload.times","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":273,"y":210,"wires":[["bb10b0e8.ecd9b8"]]},{"id":"bb10b0e8.ecd9b8","type":"milkcocoa out","z":"fe18e088.694ba","milkcocoa":"67b92c01.7430ec","dataStore":"server1/cpus","operation":"push","targetId":"","name":"","x":449,"y":208,"wires":[["a9e9f392.0fa768"]]},{"id":"5c1e076.78c99f8","type":"milkcocoa out","z":"fe18e088.694ba","milkcocoa":"67b92c01.7430ec","dataStore":"server1/drives","operation":"push","targetId":"","name":"","x":447,"y":107,"wires":[["a9e9f392.0fa768"]]},{"id":"c5b91d21.456ea","type":"milkcocoa out","z":"fe18e088.694ba","milkcocoa":"67b92c01.7430ec","dataStore":"server1/memory","operation":"push","targetId":"","name":"","x":449,"y":58,"wires":[["a9e9f392.0fa768"]]},{"id":"eef9a751.5d3b6","type":"change","z":"fe18e088.694ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.0","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":269,"y":105,"wires":[["5c1e076.78c99f8"]]}]
CPU、メモリ、ディスク、Load Averageといった情報を1分間隔で取得して多少データ加工をしてからMilkcocoaへ投入しています。とりあえず試すためにCPUとディスクは取得できる配列の最初の要素のデータだけ投入しています。
今回はMilkcocoaのデータストアを以下のように各メトリクス毎に用意しました。
メトリクス | データストア |
---|---|
Load Average | server1/loadavg |
CPU | server1/cpus |
ディスク | server1/drives |
メモリ | server1/memory |
Milkcocoaのデータストアの詳細についてはドキュメントを参照します。
enebular INFOMOTIONで可視化
あとはenebular INFOMOTIONの設定をします。データソースの設定やINFOMOTIONの作成の詳細は各リンク先のドキュメントを参照します。
Load Average
データソース設定
INFOMOTION設定
項目 | 設定する値 |
---|---|
TYPE | metricsgraphics |
DATASOURCE | server1/loadavg |
rows y_accessor | loadavg1 |
rows y_accessor | loadavg5 |
rows y_accessor | loadavg15 |
legend name | 1分 |
legend name | 5分 |
legend name | 15分 |
limit | 20 |
完成
CPU
データソース設定
INFOMOTION設定
項目 | 設定する値 |
---|---|
TYPE | metricsgraphics |
DATASOURCE | server1/cpus |
rows y_accessor | user |
rows y_accessor | nice |
rows y_accessor | sys |
rows y_accessor | irq |
rows y_accessor | idle |
legend name | user |
legend name | nice |
legend name | sys |
legend name | irq |
legend name | idle |
limit | 20 |
完成
ディスク
データソース設定
INFOMOTION設定
項目 | 設定する値 |
---|---|
TYPE | metricsgraphics |
DATASOURCE | server1/drives |
rows y_accessor | size |
rows y_accessor | used |
rows y_accessor | available |
legend name | size |
legend name | used |
legend name | available |
limit | 20 |
完成
メモリ
データソース設定
INFOMOTION設定
項目 | 設定する値 |
---|---|
TYPE | metricsgraphics |
DATASOURCE | server1/memory |
rows y_accessor | totalmem |
rows y_accessor | freemem |
rows y_accessor | memusage |
legend name | totalmem |
legend name | freemem |
legend name | memusage |
limit | 20 |
完成
おまけ
ここまでやったらディスクI/OとネットワークI/Oも取得したいですが、環境によってコマンドが異なるようなメトリクスを取得する場合はnode-red-node-daemonを使って定期的に取得する方法が良さそうです。
こちらはまたの機会に。