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

     

     

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

    Family / Rodzina

    9 miesi?cy debugowania !

    W 2007 roku zacz??em pisa? pewien skrypt:

    #!/bin/sh
    kid1=Antonina
    echo Moje dziecie to $kid1

    Ju? wlistopadzie dzia?a? ca?kiem nie?le :)

    # sh kid0.sh
    Moje dziecie to Antonina

    W 2010 jednak czego? zacz??o mi w nim brakowa? i postanowi?em co? do niego doda?, ?eby by? bardziej rozbudowany.

    Zacz??em od prostej zmiany nie wiedz?c jeszcze co mi z tego wyjdzie:

    #!/bin/sh
    kid1=Antonina
    kid2=""
    echo Pierwsze dziecie to $kid1
    echo Drugie dziecie to $kid2

    Jak ?atwo by?o przewidzie? wynik nie by? zadowalaj?cy:

    # sh kid.sh
    Pierwsze dziecie to Antonina
    Drugie dziecie to

    ale obrany kierunek mi si? spodoba? wi?c brn??em dalej. Kolejna wersja te? nie by?a zach?caj?ca, wr?cz bezsensu:

    #!/bin/sh
    kid1=Antonina
    kid2=$kid1
    echo Pierwsze dziecie to $kid1
    echo Drugie dziecie to $kid2

    co dawa?o nic nie wnosz?ce:

    # sh kid2.sh
    Pierwsze dziecie to Antonina
    Drugie dziecie to Antonina

    A? w ko?cu po 9 miesi?cach debugowania co jest nie tak

    #!/bin/sh
    kid1=Antonina
    kid2=$kid1
    echo $kid1 > /tmp/tmp1
    cat /tmp/tmp1 | sed "s/Anton/Michal/g" > /tmp/tmp2
    kid2=`cat /tmp/tmp2`
    echo Pierwsze dziecie to $kid1
    echo Drugie dziecie to $kid2

    dok?adnie 2 kwietnia o 13:49 – skrypt zadzia?a? z pr?dko?ci? 3800g, zajmowa? te? przyzwoicie bo 58 cm, ale najwa?niejsze, ?e by? w 100% sprawny :)

    # sh kid3.sh
    Pierwsze dziecie to Antonina
    Drugie dziecie to Michalina

    (Tak, wiem, ?e jest tam brzydki hack z sedem i przekierowaniem wyników do pliku, ale co? nie chcia? mi sed na zmiennych dzia?a? a pomys? na posta szybko chcia?em wcieli? w s?owo pisane :)

    A dla wszystkich, którzy nie lubi? lub nie rozumiej? konsolowych krzaczków – GUI w HD !

    To jest w?a?nie $kid2 czyli Michalina po 9 miesi?cach debugowania :)

    To jest w?a?nie $kid2 czyli Michalina po 9 miesi?cach debugowania :)

    Troskliwy $kid1 opiekuje si? $kid2

    Troskliwy $kid1 opiekuje si? $kid2

    Siostry $kid[1-2] w komplecie ! :)

    A teraz ju? troch? powa?niej, je?li kto? nadal my?li co autor pali? ;) Dnia 2.4.2011 na ?wiat przysz?a nasza druga córka, której nadali?my imi? Michalina (?adnie koresponduje z Antonina :). Poród odby? si? w tym samym lecz wyremontowanym szpitalu ?w. Rodziny przy ul. Jarochowskiego w Poznaniu i o dziwno trwa? oko?o 15 minut (w przeciwie?stwie do Tosi, która rodzi?a si? 10 godzin). Tata oczywi?cie by? obecny przy porodzie, mama zreszt? te? ;) Wszystko odby?o si? tak b?yskawicznie, ?e po?o?na ledwo zd??y?a z zestawem do rodzenia. Zarówno mama jak i dziecko spisa?y si? wy?mienicie, co potwierdza dziesi?tka Apgara dla ma?ej i szybki powrót obojga do domu :) Tosia z kolei pomijaj?c dzie? odbioru ze szpitala, w której by?a bardzo niepewna co si? w?a?ciwie dzieje, od razu polubi?a swoj? siostr? (nie mówi o niej inaczej jak Michalinka :) i aktywnie uczestniczy w jej ?yciu pomagaj?c przy piel?gnacji oraz ?piewaj?c jej piosenki i ko?ysanki :)

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

    In English

    Tips & Tricks

    Note to myself.
    I found that my /var/amavis/tmp has thousends of files.

    du -sg tmp/
    26 tmp/

    Actually 26Gb of crap. Now, how to delete all files excluding these with current date and one day before?

    Here is one line magic spell:

    find /var/amavis/tmp -type f -mtime +1 -exec rm -f {} \;

    Results?

    du -sm tmp/
    9 tmp/

    Bingo! ;)
    Thx to aniou #netbsd.pl



    Related Posts with Thumbnails
    Add your widget here