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:
- Wywo?ujemy downtimes produkuj?c kolumn? z odnotowanymi przerwami
- Wynik przekazujemy do awk, które pokazuje nam tylko 10 pole (pola liczymy co spacj?) – czyli liczb? sekund ile trwa?o wy??cznie serwera
- 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
- 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 -)
- Gotowy string który ma posta? ci?gu sekund oddzielonego plusami przekazujemy do kalkulatora bc, który wykona dodawani.
- Otrzyman? sum? liczby sekund dzielimy przy pomocy awk przez 60 otrzymuj?c minuty
- Otrzymane minuty ponownie dzielimy przez 60 otrzymuj?c godziny.
- 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!









