Solaris 10 Health check script

 ( miszterx | 2011. augusztus 17., szerda - 8:47 )

Akármennyire is rutinos az ember, mindig hibázhat, kihagyhat egy fontosabb komponenst, vagy elnézheti a sok-sok soros kimeneteket.

Ezért vált fontossá, hogy legyen egy olyan "általános" script ami ezt az adminisztrátor helyett megteszi. A script alapvetően nem bonyolult reporting célra készült, ez sosem volt tervem. Csak annyit akartam elérni, hogy egyszerű és félreérthetetlen üzenetek alapján lássa az ember ha valami nincs rendben. Ezek után már tudni fogja a megfelelő adminisztrátor mi fele nézelődjön.
Követelmények

- A script maga KSH alapú, így /bin/ksh megléte szükséges, bár Solaris 10 alatt ez adott.
- A script Solaris 10 SMF, illetve hálózati eszközöket hív meg, a Solaris 9-es rendszereken ezen eszközök nem elérhetőek. A script önmaga el se indul, ha nem Solaris 10-et azonosít.
- A script standard Solaris parancsokat hív meg, viszont ahol tesztelésnél kijött probléma, ott a teljes PATH-al hívtam meg őket.
- A tesztelő parancsok legtöbbje megkívánja a root jogosultságot, így a script ezen verziója csak root-ként futtatható.
Tesztelési Komponensek

A tesztelési részeket a scriptben külön függvényekként írtam meg. Ez már csak azért is fontos, mert a script külön képes azonosítani, hogy egy local zónában vagy egy global hoston fut. Local Zónában nincs értelme a legtöbb tesztelési folyamatnak. Így tetszés szerinti csoportosítást lehetett megvalósítani.

- Fault Management Check:
Lekéri az FMADM faulty kimenetelét. Ha bármilyen event megtalálható itt, figyelmeztet.

- Filesystem check:
ZFS esetén kiírja nekünk a különböző ZFS filesystem-eket, illetve a vfstab-ban található bejegyzéseket ellenőrzi, hogy mountolva is vannak-e.

- SVM check:
Ellenőrzi a metadb-k meglétét és állapotát, illetve a metadevice-k státuszát.

- SAN Multipatching check:
Ellenőrzi a FC HBA portok meglétét, illetve ha van, akkor legalább két port aktív legyen.

- Network check:
Lekéri az /etc/hostname.* interfacek nevét, és megnézni, hogy a konfigurált interfaceken van-e link. Ezen túl ellenörzi a default route meglétét, és hogy egyéb routingoknál használt gateway pingelhető-e.

- Solaris Service check:
Ellenőrzi, hogy az SMF illetve, INET servicek státusza megfelelő-e.

- Zone Check:
Ellenőrzi, hogy az adott gépen van-e local zone, illetve figyelmeztet ha csak configured vagy installed állapotban vannak.

- Email queue check:
Ellenőrzi, van-e felgyűlve kézbesítetlen levél.

- Veritas VxVM check:
Ellenőrzi, hogy van-e installálva Veritas Volume Manager, illetve ha vannak VxVM volume-k, akkor ACTIVE ENABLED az állapotuk.

- Veritas VCS check:
Ellenőrzi, hogy van-e installálva Veritas Cluster Suite. Ha igen, akkor a megfelelő GAB, LLT, HAD komponensek futnak-e és konfiguráltak. Illetve ha vannak Service Group-ok, akkor minden megfelelőképpen aktív-e valahol.
Használat

Egyszerűen csak el kell indítani a scriptet:

# ./health_check.sh

Screenshot:

Letöltés: http://blog.xorp.hu/solaris-10-health-check-script

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Ha lesz időm, ránézek.
Jónak, tűnik, gratula a gondolathoz + az elkészítéséhez!! :)
<-------
You can't grep on dead trees.

Koszonom szepen.

A fele talalt teszteles, a masik felet en vittem bele, es adtam neki egy megfelelo pofat, illetve zona-host check reszt.

Eddigi gepeken amin tesztelem nem volt gond, bar altalaban a gepek ugyan azt a strukturat kepviseltek, kisebb nagyobb elteressel.

ha van eszrevetel azt szivesen veszem.

MiszterX -- http://blog.xorp.hu

Nem rossz, nem rossz. grt.

Koszi!

MiszterX -- http://blog.xorp.hu

Pár ötlet (de ez már csak szépítés):

- hogy mindenhol működjön a használt parancsokat teljes elérési úttal érdemes megadni (ha más más rendszer s komponensek érdemes lekérdezni, hogy az adott parancsnak mi az elérése, majd berakni egy változóba s azzal hivatkozni rá) els=`/usr/bin/which ls` stb.
- ha több rendszeren kell futtatni érmes lenne egy helyről futtatni egy sriptet ami a többin is lefuttatja
- nem OK státusznál mail küldés vagy ha nem tud küldeni a rendszer scp oda ahol tud küldeni a rendszer s mail
- időbélyeg, timestamp=`date +"%Y%m%d_%H%M"` (szerk. ooops ez megvan benne ;-)
- és persze időzítés

Szebb megoldás ha pl. a munint, nagiost egészíti ki az ember pár pluginnel.

pl:

#!/bin/sh
USERS="www munin nagios stb users"

if [ "$1" = "config" ]
then
echo 'graph_title Cpu usage by user'
echo 'graph_category system'
echo 'graph_vlabel Cpu usage by user'
for i in $USERS; do echo "cpu_usage_$i.label $i"; done
else

for j in $USERS
do
k=0; for i in `ps -u $j -o pcpu | grep -v %`; do k=`echo $k + $i | bc`; done;
echo "cpu_usage_$j.value $k"
done
fi