Wykres temperatury serwera w RRD (NetBSD)

In: Job / Praca|NetBSD

29 kwi 2010

Dzięki za regularne odwiedziny na moim blogu! Jeśli uważasz, że jest on godny polecenia to śmiało wyślij link do niego lub link do kanału RSS albo subskrypcje przez e-mail znajomym. Dzięki !

Zastanawiałem się ostatnio jak wyrysować sobie temperaturę jaką ma serwer lub jego otoczenie (zależnie od zainstalowanych sensorów) w serwerowni, bez instalowania mysql i cacti (oraz pluginów ponieważ domyślnie z snmp chyba temperatury zczytać nie można).

W NetBSD mamy możliwość sprawdzania danych z ACPI przy pomocy envstat. Trzeba przekompilować kernel aby zawierał odpowiednie „hardware monitory”.

Działanie envstat wygląda nastepująco i różni się w zależności od maszyny, niemniej jednak różnego rodzaju temperatury powinny być widoczne:

cancer@snort~/rrd[175]13:34#envstat
 Current  CritMax  CritMin  CritCap     Unit
[ipmi0]
 PS 2 Status:        OFF
 PS 1 Status:        OFF
 CPU Vtt:      1.250                                   V
 CPU 2 VCore:      1.040                                   V
 CPU 1 VCore:      1.260                                   V
 DASD Temp:     26.000                                degC
 VBAT:      3.184                                   V
 -12V Sense:    -11.412                                   V
 12VA Sense:     12.033                                   V
 5V Sense:      5.018                                   V
 12VC Sense:     12.600                                   V
 12VB Sense:     12.600                                   V
 2.5V Sense:      2.590                                   V
 1.8V Sense:      1.810                                   V
 1.5V Sense:      1.550                                   V
 1.3V Sense:      1.400                                   V
 1.25V Sense:      1.310                                   V
 CPU 2 Temp:     29.000                                degC
 CPU 1 Temp:     29.000                                degC
 Fan 12 Tach:       1740                                 RPM
 Fan 11 Tach:       1860                                 RPM
 Fan 10 Tach:       1830                                 RPM
 Fan 9 Tach:       1890                                 RPM
 Fan 8 Tach:       1680                                 RPM
 Fan 7 Tach:       1710                                 RPM
 Fan 6 Tach:       1710                                 RPM
 Fan 5 Tach:       1860                                 RPM
 Fan 4 Tach:       1800                                 RPM
 Fan 3 Tach:       1800                                 RPM
 Fan 2 Tach:       1710                                 RPM
 Fan 1 Tach:       1680                                 RPM
 Ambient Temp:     21.000                                degC

W moim przypadku na tym serwerze interesujące jest oczywiście pole Ambient Temp:. Nie ma tu reguły i różni producenci stosują różne oznaczenia. W IBM jest Ambient Temp, w HP Rear Ambient, gdzieś indziej może być np Aux Temp: itp.  Przyjmujemy wartość Ambient Temp, że to jest to co nam chodzi i przy pomocy grep i awk wycinamy resztę:

1
envstat | grep "Ambient Temp" | awk '{print $3}'

W wyniku dostajemy samą temperaturę czyli 21.000

Aby oznaczyć dane na wykresie trze je umieścić w czasie, do tego wystarczy nam systemowy date działający tak aby pokazywał „timestamp” czyli czas w sekundach od początku epoki. Za timestampem dostawimy dwukropek który będzie oddzielał znacznik czasu od wartości temperatury, czyli:

1
date +%s:

dostajemy 1272542448: Za pomocą date -r 1272542448 można odczytać jaką dokładnie datę pokazuje timestamp: Thu Apr 29 14:00:48 CEST 2010

Potrzebne jeszcze jest jedno zewnętrzne narzędzie do gromadzenia danych oraz rysowania wykresu – RRDTool

Po zainstalowaniu z databases/rrdtool w pkgsrc możemy przystąpić do tworzenia bazy:

1
2
3
4
5
6
rrdtool create /usr/home/cancer/rrd/temperatura.rrd -s 300 \
DS:temperatura:GAUGE:400:10:50 \
RRA:AVERAGE:0.5:1:210240 \
RRA:MAX:0.5:1:210240 \
RRA:MIN:0.5:1:210240 \
RRA:LAST:0.5:1:210240 \

Taka baza będzie aktualizowana co 5 minut (-s 300), oraz będzie gromadziła dane w zakresie od 10 stopni do 50 stopni Celsjusza (tak, po awarii klimatyzacji w serwerowni może być taka temperatura :).

W zasadzie mamy wszystko. Przy pomocy

1
rrdtool update /usr/home/cancer/rrd/temperatura.rrd timestamp:temperatura

można już wypełniać bazę danymi.

Teraz trochę automatyzacji, na początek skrypt:

1
2
3
4
5
6
7
8
#!/bin/ksh
echo -n `date +%s:` >> /usr/home/cancer/rrd/temprrd.txt
echo -n `envstat | grep "Ambient Temp" | awk '{print $3}'` >> /usr/home/cancer/rrd/temprrd.txt
echo " " >> /usr/home/cancer/rrd/temprrd.txt
temperatura=`cat /usr/home/cancer/rrd/temprrd.txt`
/usr/pkg/bin/rrdtool update /usr/home/cancer/rrd/temperatura.rrd $temperatura
/usr/pkg/bin/rrdtool graph /usr/home/cancer/public_html/temperatura.png --imgformat PNG --title="Tempertatura w serwerowni" --width 800 --height 300 --vertical-label="Stopnie Celsjusza .C" --end now --start end-2592000s DEF:temp=/usr/home/cancer/rrd/temperatura.rrd:temp:AVERAGE GPRINT:temp:LAST:"aktualna %2.2lf .C" GPRINT:temp:MIN:"minimalna %2.2lf .C" GPRINT:temp:MAX:"maksymalna %2.2lf .C" GPRINT:temp:AVERAGE:"srednia %2.2lf .C" AREA:temp#6060ef LINE1:temp#0000ff
rm /usr/home/cancer/rrd/temprrd.txt

Wrzucamy go do dowolnego pliku oraz nadajemy mu prawa do wykonania. Co z czym tu się je:

1. Pierwsza linia wyświetla timestamp oraz dwukropek oraz zapisuje wszystko do pliku /usr/home/cancer/rrd/temprrd.txt. Opcja -n powoduje, że nie mamy znaku nowej lini i powrotu karetki.
2. Druga liniawycina nam temperature i wstawia ją w tym samym pliku zaraz za dwukropkiem
3. Trzecia linia dostawia spacje wraz ze znakiem końca linii.
4. Przy pomocy polecenia cat podstawiamy naszą daną z pliku temprrd.txt pod zmienną temperatura.
5. Aktualizujemy bazę danymi ze zmiennej temperatura.
6. Rysujemy wykres. WAŻNE ! Ta linia aż do temp#0000ff musi być w całości !
7. Ostatnia linia usuwa plik z danymi tymczasowymi.

Taki skrypt dodajemy do crontaba aby był uruchamiany co 5 miut:

1
*/5     *       *       *       *       /bin/ksh /usr/home/cancer/rrd/temprrd.sh >/dev/null 2>&1

Za kilkanaście minut powinien pojawić się wykres mniej więcej taki jak ten poniżej:

temperatura Wykres temperatury serwera w RRD (NetBSD)

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
Rating: +1 (from 1 vote)
Related Posts with Thumbnails

Popularity: 1% [?]

Jeśli podobał Ci się ten post, zobacz również "TFC Temp File"

© odwiedź stronę http://maciejewski.org po więcej fajnych postów!

Dodaj post do:
  • Wykop
  • Gwar
  • OSnews.pl
  • Digg
  • del.icio.us
  • Reddit
  • Technorati
  • Blip
  • co-robie
  • email
  • Facebook
  • Flaker
  • Google Bookmarks
  • Google Buzz
  • LinkedIn
  • MySpace
  • PDF
  • Ping.fm
  • RSS
  • StumbleUpon
  • Twitter
  • Śledzik
If you enjoyed this post, make sure you subscribe to my RSS feed!

 Viewed 557 times by 60 viewers

Podobne posty

Skomentuj

Co znajdziesz na tym blogu

Witaj czytelniku! Nazywam się Bartosz Maciejewski i jestem Administratorem sieci oraz systemów UNIX/Windows. Na moim blogu znajdziesz zatem wpisy dotyczące głównie tej tematyki. Od czasu do czasu pisuję też bardziej prywatnie zwłaszcza o mojej córce Tosi Miłego Czytania! EOF ;)

  • New NetBSD developer « Shinden’s Lair: [...] it’s official and couple of people already had mentioned this, I’ll write on my bl [...]
  • Tomek: Maniak to Ty jednak jesteś ;-) [...]
  • witnes: Noo, dużo lepszy ten theme :) wszystko bardziej przejrzyste. [...]
  • Marcin: 1 ) kable puszcza się w peszlach mrozoodpornych 2 ) mikrotiki się ekranuje puszkami eluminiowymi [...]
  • Krysti: Piękne produkcje! Gear of War... Grałem. Mnie osobiście bardzo się podobała. Aczkolwiek uważam [...]

Reklama

Postaw mi Piwo!


Komentujący:

Najwięcej napisali:
  1. Bartosz Maciejewski (4)
  2. blinkkin (2)
  3. anonymous (1)
  4. Krysti (1)
  5. Marcin (1)
  6. Michał (1)
  7. Prawo jazdy (1)
  8. Tomasz Kowalczyk (1)
  9. Tomek (1)
  10. Turosław (1)
  11. witnes (1)
  12. Zbigniew (1)

Flickr

www.flickr.com
This is a Flickr badge showing public items from bartosz.maciejewski tagged with mobile. Make your own badge here.
  • RSS
  • Blip
  • Twitter
  • Facebook
  • GoldenLine
  • LinkedIn
  • Flickr