2012-04-26 19 views
5

Mam system serwerów rozproszonych.Jak uzyskać statystyki systemowe za pomocą node.js

Istnieje wiele serwerów koordynowanych przez PubSub. Wszystkie są połączone z serwerem statystyk. Co minutę serwery przesyłają swoje statystyki do serwera statystyk (liczba przetworzonych zapytań, średni czas itd.).

Więc ... Byłoby miło dołączyć status systemu do wiadomości stat. Potrzebuję obciążenia procesora (każdy rdzeń) i ilości wolnej pamięci.

Zrobiłem małe obejście i zdecydowałem się zadzwonić komendą linux z "exec", przeanalizować odpowiedź i utworzyć dane JSON do wysłania.

Ale jak mogę uzyskać te dane z wiersza poleceń?

W systemie Mac OS X mogę łatwo uzyskać wszystko, czego potrzebuję ze skryptami geektool, ale w systemie Linux (debian) nie działają.

Na przykład:

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

W systemie Mac OS X Lion uzyskać:

Used: 3246M Free: 848M 

I właśnie błąd w Debianie ...

+0

Czy próbowałeś Dtrace? http://mcavage.github.com/presentations/dtrace_conf_2012-04-03 – codef0rmer

+0

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

Odpowiedz

7

W systemie Linux można używać/proc . Zobacz here dla kilku przykładów wiersza poleceń, aby przeczytać statystyki.

Byłoby lepiej, aby odczytać pliki z węzła bezpośrednio chociaż korzystając fs.readFile()

Aktualizacja: Istnieje również OS API który jest chyba lepiej. Przykładowe użycie: Convert the output of os.cpus() in Node.js to percentage

+0

Thnx dużo! Znaleźliśmy sposób na uzyskanie ilości wolnej pamięci, ale nadal nie mogę uzyskać obciążenia procesora na każdym rdzeniu. I .../proc/loadavg zwraca zera. Jest to normalne? – brianconnoly

+1

Użyj os.loadavg() ;. Zwróci całkowite obciążenie serwera w 1-minutowej, 5-minutowej i 15-minutowej w tablicy. – Licson

+0

+1 dla interfejsu API systemu operacyjnego .. –

1

Możesz wypróbować os-usage, która jest opakowaniem dla polecenia top.

Zawiera statystyki takie jak użycie procesora i wykorzystanie pamięci. Przykład użycia:

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

bezwstydna - https://www.npmjs.com/package/microstats

Może być również skonfigurowany tak, aby ostrzec użytkownika, gdy miejsca na dysku, procesora lub pamięci przekracza próg zdefiniowany przez użytkownika. działa na Linux, MacOS i Windows.

Powiązane problemy