Miesięcznik informatyków i menedżerów IT sektora publicznego

Jacek Orłowski

Termometr za grosze

MONITORING | Zachowanie optymalnej temperatury w serwerowni to nie lada wyzwanie. Jeśli w pomieszczeniu będzie za ciepło, maszyny mogą pracować niestabilnie. Pojawiają się także zasadnicze pytania: gdzie i w jaki sposób mierzyć temperaturę?

Fot. D. Stańda

Nie oszukujmy się - większość małych organizacji nie dysponuje profesjonalnymi serwerowniami. Szczególnie w wielu jednostkach samorządu terytorialnego nie ma warunków lokalowych (lub funduszy), by zorganizować pomieszczenie techniczne z prawdziwego zdarzenia. Serwery, routery, przełączniki, centrale telefoniczne - umieszcza się więc często w zaadaptowanych naprędce komórkach lub pakamerach. - W starych budynkach ulokowanie serwerowni to często przypadek - mówi Rafał, informatyk zatrudniony w jednej z instytucji kultury. Sam fakt wygospodarowania osobnego "pokoju na serwery" nie załatwia jednak sprawy. Jeśli w urzędzie położono sieć strukturalną, to wszystkie jej kable zbiegają się w centralnym miejscu na patchpanelu zamontowanym w 19-calowym stelażu lub szafie teletechnicznej. Arkadiusz Śmigielski z gminy Radomsko tak opisuje swoje "data center": - Serwerownia znajduje się w piwnicy i ma ok. 25 m2. Jest tu jedno zamalowane antywłamaniowe okno, a cały sprzęt umieszczono w szafie o wysokości 12 U. Tego typu pomieszczenia nie mają zazwyczaj podłogi lub sufitu technicznego oraz jakiegokolwiek systemu chłodzenia.

Choć serwerownia z prawdziwego zdarzenia w urzędzie to rzadkość, to warto jednak kontrolować niektóre jej "parametry pracy". Krytyczna z uwagi na stabilność i bezpieczeństwo urządzeń jest bez wątpienia temperatura panująca w pomieszczeniu. Szczególnie tam, gdzie nie ma właściwej wentylacji lub klimatyzacji, należy ją dokładnie monitorować. - W jednym z obsługiwanych przeze mnie urzędów, w szafie z serwerami zamontowany został czujnik temperatury. Ostatnio odnotowałem tam 29 stopni, a przecież wiosna dopiero się zaczyna! - mówi Piotr Hyla z firmy świadczącej usługi IT na rzecz jednostek administracji publicznej. Mało kto jednak w ogóle sprawdza warunki panujące w pomieszczeniu technicznym: - Nikt nie mierzy u nas temperatury w serwerowni - przyznaje informatyk z Radomska. Jak przyznaje wielu pracowników urzędów gmin, niektóre jednostki są po prostu zbyt małe, aby inwestować w profesjonalne pomieszczenie techniczne.

Serwer, czujnik, termometr

Temperaturę w serwerowni można okiełznać bez kosztownych inwestycji. Podstawą do podjęcia jakichkolwiek działań musi być jednak wiarygodny pomiar tego parametru. Najprostszym sposobem jest zastosowanie zwykłego domowego termometru rtęciowego i samodzielne prowadzenie dziennika pomiarowego - odczyty można wykonywać na przykład przy okazji codziennego obchodu serwerowni. Na dłuższą metę będzie to jednak czynność męcząca, szczególnie gdy zechcemy monitorować kilka punktów. Jeśli nasze pomieszczenie nie jest klimatyzowane, warto przecież poznać zależność temperatury w serwerowni od warunków panujących na dworze. Dobrym pomysłem jest również badanie parametrów panujących w obudowie każdego z serwerów (patrz: ramka: "Chłodzenie profesjonalnie"). Może się bowiem okazać, że za nadmierne wydzielanie ciepła do pokoju odpowiada tylko jedna maszyna i w prosty sposób da się temu zaradzić (np. zmniejszając częstotliwość taktowania procesora).

Ponieważ umieszczenie w każdym serwerze tradycyjnej "rtęciówki" byłoby trudne do zrealizowania (a zarazem niepraktyczne), do pomiaru temperatury w serwerowni warto wykorzystać elektronikę. Przy okazji warto zauważyć, że większość obecnie stosowanych płyt głównych wyposażona jest już w odpowiednie czujniki, niestety - choćby ze względu na różnice w oprogramowaniu systemowym - trudno jest ich użyć do budowy kompleksowego i uniwersalnego systemu monitorowania. Dużo prostszym, a jednocześnie niedrogim rozwiązaniem będzie utworzenie niezależnej sieci pomiarowej wykorzystującej protokół 1-Wire oraz elektroniczne czujniki temperatury DS-1820.

Schemat budowy elektronicznego termometru oraz wykaz i koszt zakupu elementów

Interfejs i protokół 1-Wire (patrz: ramka "Przydatne adresy") zostały opracowane przez firmę Dallas Semiconductor. Za ich pomocą możemy przekazywać dane pomiędzy czujnikami (np. temperatury, wilgoci) a sterującym pracą układu sterownikiem elektronicznym. Nazwa systemu wzięła się stąd, że transmisja danych odbywa się tutaj z wykorzystaniem jednego przewodu sygnałowego i masy (łącznie dwa druty). Zaletą 1-Wire jest to, że odbiorniki mogą być zasilane z linii danych (tzw. zasilanie pasożytnicze). Dodatkowo jest to rozwiązanie tanie w realizacji. Jednak ze względu na niewielki zasięg (zwykle kilkadziesiąt metrów) oraz stosunkowo wolną transmisję danych (od 16 do 142 kbps) stosuje się je głównie w komunikacji z termometrami cyfrowymi, zamkami elektronicznymi, instrumentami meteorologicznymi etc.

Informatyk Złota Rączka

Zabawmy się zatem w "małego elektronika" i wygrzebmy z naszej szafki lutownicę, cynę i kalafonię. Wszystkie niezbędne do budowy termometru elementy (patrz: ramka "Schemat budowy elektronicznego termometru...") kupimy w każdym sklepie elektronicznym lub na aukcjach internetowych. Niektórych komponentów, np. portu DB9, możemy też poszukać wśród tzw. części zapasowych lub zużytego sprzętu komputerowego. Najdroższy element - czujnik temperatury - możemy też niekiedy otrzymać w ramach próbek rozdawanych przez niektórych producentów przez Internet lub na targach branżowych. Jeśli więc będziemy mieli trochę szczęścia, to na zakupy wydamy nie więcej niż kilkadziesiąt groszy! Skórka zatem warta wyprawki, tym bardziej że przygotowanie sterownika nie powinno nam zająć więcej niż godzinę (patrz: ramka "Warsztat").

Opisywany w artykule układ pomiarowy podłączymy do komputera poprzez złącze szeregowe (COM). W tego typu port wyposażony jest niemal każdy serwer. Jeśli jednak nasz sprzęt nie ma wbudowanego odpowiedniego interfejsu, to możemy wykorzystać dostępny w sprzedaży za kilkanaście złotych konwerter-przejściówkę USB-RS232 i w ten sposób wpiąć się do magistrali szeregowej komputera. W przedstawionym rozwiązaniu przyjęliśmy też, że od strony sieci pomiarowej poszczególne elementy będziemy zakańczać wtyczką RJ-45. Dzięki temu zarówno sterownik, jak i czujniki będziemy później mogli wpinać bezpośrednio do sieci strukturalnej urzędu. Jeśli jednak ograniczymy się do monitorowania urządzeń w obrębie szafy, to nic nie stoi na przeszkodzie, by poszczególne elementy naszego termometru połączyć "na krótko", np. za pomocą zwykłej kostki elektrycznej. W wypadku wykorzystania kilku czujników - połączyć je ze sterownikiem równolegle.

Linux lubi czujniki

Mamy już wykonany sterownik i rozmieszczone cyfrowe termometry. Całość sieci pomiarowej została prawidłowo połączona i podłączona do serwera z systemem Linux. Naszym celem jest teraz przygotowanie automatycznego monitoringu temperatury. Na początek musimy zainstalować odpowiednie oprogramowanie. W wypadku dystrybucji Debian wydajemy polecenie apt-get install digitemp rrdtool. Następnie tworzymy katalog, np. /opt/pomiary, i wchodzimy do niego. Zainicjujmy nasz układ pomiarowy, korzystając z programu digitemp_DS9097 wywołanego z parametrami -i oraz -s /dev/ttyS0, jeśli sterownik jest podłączony do pierwszego portu szeregowego.

# digitemp_DS9097 -i -s /dev/ttyS0

W efekcie wykonania powyższej komendy została zeskanowana magistrala 1-Wire. Odnaleziono w niej czujniki, które są identyfikowane poprzez swoje unikatowe adresy ROM. Aby nie pogubić się w lokalizacji termometrów, dobrym pomysłem jest podłączanie ich kolejno do szyny danych lub wcześniejsze zainicjowanie ich pojedynczo i opisanie. Zwróćmy uwagę na to, że czujniki zostały ponumerowane "informatycznie", czyli od zera w górę.

Sprawdźmy zatem, czy w naszej serwerowni panuje upał, czy może jednak chłód, wywołując uprzednią aplikację z parametrami -a i -q:

digitemp_DS9097 -s /dev/ttyS0 -a -q

May 21 22:28:46 Sensor 0 C: 20.19 F: 68.34

May 21 22:28:47 Sensor 1 C: 18.88 F: 65.97

May 21 22:28:48 Sensor 2 C: 20.56 F: 69.01

May 21 22:28:49 Sensor 3 C: 21.00 F: 69.80

W najprostszym przypadku wystarczy zatem przekierować standardowe wyjście do pliku (np. /opt/pomiary/dziennik.log) oraz dodać odpowiedni wpis do systemowego crone'a i dziennik pomiaru będzie gotowy.

Gra automatyka

Dziennik w postaci pliku tekstowego nie zadowoli jednak wytrawnych administratorów. Warto zatem poświęcić jeszcze trochę czasu i przygotować skrypt, który wygeneruje efektowne wykresy. W tym celu skorzystamy z zainstalowanego wcześniej narzędzia RRD (patrz: ramka "Przydatne adresy"). Na początek musimy wygenerować plik bazy, w której będziemy zapisywać pomiary:

# /usr/bin/rrdtool create /opt/¬

pomiary/temperatura.rrd DS.:¬

temp1:GAUGE:720:U:U DS.:temp2:¬

GAUGE:720:U:U DS.:temp3:GAUGE:720:¬

U:U DS.:temp4:GAUGE:720:U:U RRA:¬

AVERAGE:0.5:1:52560

Powyższa komenda przewiduje przechowywanie czterech odczytów przez sześć miesięcy przy założeniu, że pomiar będzie następował co pięć minut. Decyduje o tym ostatnia liczba (w naszym przykładzie 52560). Gdybyśmy zdecydowali się przechowywać dane dłużej (lub krócej), to wartość tę określimy wg wzoru: (60/t)*24*d, gdzie "t" to czas w minutach pomiędzy pomiarami (t < 60,
wynik dzielenia 60/t musi być liczbą całkowitą), a "d" to łączna liczba dni.

Teraz przygotujemy odpowiedni "programik" (patrz: ramka "Skrypt do pomiaru temperatury i generowania wykresu"). W tym celu tworzymy zbiór, wydając polecenie touch /opt/pomiary/temp.sh, i nadajemy mu odpowiednie uprawnienia do wykonywania: chmod +x /opt/pomiary/temp.sh. Przykładowy skrypt wykonuje dla nas cztery zadania: odczytuje temperatury z czujników, zapisuje je do tekstowego pliku dziennika, aktualizuje bazę pomiarową RRD oraz generuje wykres dobowy, pokazujący zmianę temperatury we wszystkich monitorowanych miejscach.

Ponieważ listing w ramce jest opisany, nie będziemy go szczegółowo omawiać. Zwróćmy tylko uwagę na to, że temperatura z każdego termometru odczytywana jest osobnym poleceniem digitemp_DS9097 wywołanym z parametrem "-t", po którym podajemy numer ROM-u
czujnika. W przykładzie wykorzystano też pętlę until…do...done, zapobiegającą błędnym odczytom. Zdarzają się one bowiem w praktyce - szczególnie przy dużych odległościach między sterownikiem a czujką. Jest to jednak rozwiązanie wrażliwe na zapętlanie się, np. wtedy gdy jedną z czujek odepniemy od sieci pomiarowej. Rozwiązaniem tego problemu może być dopisanie na początku skryptu poleceń "ubijających" niepotrzebne procesy lub wstawienie do pętli instrukcji warunkowej if wraz z licznikiem prób odczytu.

Nie tylko dla admina

W analogiczny sposób możemy tworzyć wykresy dla różnych przedziałów czasowych - tygodniowych, miesięcznych lub rocznych. Wygenerowane pliki możemy umieścić na stronie intranetowej w sekcji związanej z siecią komputerową urzędu lub udostępnić w sieci lokalnej przez Sambę i oglądać je bezpośrednio w przeglądarce plików graficznych. Ciekawą propozycją jest także wzbogacenie skryptu o wysyłane e-mailem lub SMS-em alerty, gdy temperatura wzrośnie powyżej określonego, krytycznego poziomu.

Jeśli jeden z czujników umieściliśmy na dworze, to możemy wykorzystać pochodzące z niego dane na oficjalnej stronie urzędu. Umieszczenie tam aktualnej i "własnoręcznie" zmierzonej temperatury w miejscowości będzie na pewno atrakcyjną informacją dla mieszkańców.

Autor jest redaktorem naczelnym miesięcznika "IT w Administracji". Ma wieloletnie doświadczenie m.in. w zarządzaniu sieciami komputerowymi oraz administrowaniu systemami linuksowymi.

 
 

Polecamy

Biblioteka Informacja Publiczna

Specjalistyczne publikacje książkowe dla pracowników administracji publicznej

więcej