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!