NetBSD

    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 :)

     

     

    Related Posts with Thumbnails

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

    Add your widget here