Jak długo serwer był niedostępny?

Po dzisiejszej wichurze, która spowodowała wyłączenie prądu w nocy, chciałem się dowiedzieć jak długo go nie było. Nie jest to takie trudne jeżeli w domu ma się serwer chodzący 24h na dobę i oprócz mierzenia uptime’u monitorujemy także downtime. O paczce downtime przy okazji dodania jej do pkgsr-wip pisałem jakiś czas temu.

Pierwsze co nam będzie potrzebne to zainstalowanie paczki downtimed – http://dist.epipe.com/downtimed/. Używając pkgsrc paczka jest w wip/downtimed.

Po wydaniu polecenia downtimes dostajemy listę przerw w działaniu serwera:

crash 2015-04-01 00:48:28 -> up 2015-04-01 02:22:27 =    01:33:59 (5639 s)

Do tego czasu w moim przypadku należy dodać 27 minut ponieważ tyle mi UPS podtrzymuje całą szafkę teletechniczną ze switchem serwerem i innymi urządzeniami.

A teraz pobawmy się bardziej danymi z downtimed. Za pomocą jednego zgrabnego “one-line’ra” możemy przeliczyć jak długo nasz serwer “leżał”.

downtimes | awk {'print $10'} | sed 's/^.//' | paste -sd+ - | bc | awk '{print $1/60}' | awk '{print $1/60}' | awk '{print $1/24}'

Robimy co następuje powyższym poleceniem:

  1. Wywołujemy downtimes produkując kolumnę z odnotowanymi przerwami
  2. Wynik przekazujemy do awk, które pokazuje nam tylko 10 pole (pola liczymy co spację) – czyli liczbę sekund ile trwało wyłącznie serwera
  3. Kolumnę z sekundami (i początkowym nawiasem) przekazujemy do sed’a przy pomocy, którego kasujemy nawiaz z pierwszego znaku. Ściślej rzecz ujmują zamieniamy pierwszy znak w każdej linijce na nic, ostatecznie dostajemy kolumnę sekund
  4. Kolumnę z sekundami przekazujemy do polecenia paste z parametrem -sd+ co powoduje sklejenie kolumny w jeden string oddzielony znakami + (znak “-” za -sd+ jest wymagany przy używaniu BSD paste, przy GNU paste można bez -)
  5. Gotowy string który ma postać ciągu sekund oddzielonego plusami przekazujemy do kalkulatora bc, który wykona dodawani.
  6. Otrzymaną sumę liczby sekund dzielimy przy pomocy awk przez 60 otrzymując minuty
  7. Otrzymane minuty ponownie dzielimy przez 60 otrzymując godziny.
  8. Na koniec wynik w minutach dzielimy przez 24 otrzymując ilość dni , kiedy serwer był niedostępny.

Powyższe polecenie na moim domowym serwerze daje wynik 7.74633 dnia, czyli ponad 7,5 dnia.

Włóżmy ten wynik w jakiś kontekst, aby się przekonać czy to dobry wynik czy nie. Akurat przeciwieństwem downtimed jest uptimed (surprise, surpise!) , który mierzy czas działania serwera i kilka innych ciekawych rzeczy jak rekordowe uptime’y oraz jaki był w tym momencie zainstalowany system, a także sumaryczną ilość dni ile działał serwer. Przy okazji możemy sprawdzić czy nasze obliczenia przy pomocy downtimed sprawdzą się.

Na dzień dzisiejszy uprecords (komenda do wywołania statystyk) u mnie wygląda tak:

dom# uprecords
#               Uptime | System                                     Boot up
----------------------------+---------------------------------------------------
1   102 days, 14:03:21 | NetBSD 6.1.4_PATCH        Tue Jul  8 16:37:50 2014
2    81 days, 05:59:55 | NetBSD 6.1.4_PATCH        Fri Apr 18 10:33:21 2014
3    80 days, 01:40:20 | NetBSD 6.1.5_PATCH        Sat Jan 10 22:07:27 2015
4    68 days, 12:05:30 | NetBSD 6.1.0_PATCH        Mon Sep  9 21:51:38 2013
5    44 days, 23:30:13 | NetBSD 6.1.5_PATCH        Wed Nov 26 19:51:24 2014
6    44 days, 07:09:29 | NetBSD 6.1.0_PATCH        Sat Dec  7 11:02:04 2013
7    41 days, 14:10:24 | NetBSD 6.1.0_PATCH        Fri Jan 31 22:46:29 2014
8    38 days, 16:54:02 | NetBSD 6.0.0_PATCH        Sun Nov 25 23:59:36 2012
9    37 days, 20:55:24 | NetBSD 6.0.0_PATCH        Sat Jan 12 12:13:53 2013
10    37 days, 14:33:08 | NetBSD 6.1.0_PATCH        Fri Jun 21 23:19:00 2013
----------------------------+---------------------------------------------------
->  23     6 days, 11:12:42 | NetBSD 6.1.5_PATCH        Wed Apr  1 02:27:59 2015
----------------------------+---------------------------------------------------
1up in     2 days, 21:08:28 | at                        Fri Apr 10 10:49:08 2015
t10 in    31 days, 03:20:27 | at                        Fri May  8 17:01:07 2015
no1 in    96 days, 02:50:40 | at                        Sun Jul 12 16:31:20 2015
up   876 days, 17:53:56 | since                     Sun Nov  4 00:02:44 2012
down     7 days, 18:44:01 | since                     Sun Nov  4 00:02:44 2012
%up               99.120 | since                     Sun Nov  4 00:02:44 2012

Wg uptimed serwer na ponad 876 dni był nieosiągalny przez 7 dni i prawie 19 godzin, co stanowi SLA na poziomie 99.12% :) Całkiem nieźle jak na domowy serwer!

Sprawdźmy jeszcze czy wyniki downtimed i uptimed nie róźnią się zbytnio, czyli czy 7 dni 18 godzin i 44 minuty to mniej więcej 7.74633. Ponownie przy pomocy bc konwertujemy tym razem godziny do systemu dzisiętnego.

dom# echo "scale=5; 44/60" | bc
.73333
dom# echo .73333+7 | bc
7.73333

Całkiem blisko, ale jak blisko? :) Poraz trzeci użyjmy bc aby policzyć procentową różnicę między tymi wartościami:

dom# bc
scale=5
7.74633-7.73333
.01300
7.74633+7.73333/2
11.61299
.01300/11.61299*100
.11100

Różnica 0.11% czyli w zasadzie pomijalna. Za to zabawa w konsoli przednia :)

 

 

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
Related Posts with Thumbnails

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

Podobne posty

Dodaj komentarz

Twój adres email nie zostanie opublikowany.

Time limit is exhausted. Please reload the CAPTCHA.

CommentLuv badge