Fórum Ubuntu CZ/SK
Ostatní => Ubuntu Server => Téma založeno: Tomáš Břinčil 19 Ledna 2009, 20:49:58
-
Ahoj,
chtěl bych si nechat zasílat smsky o stavu serveru.
Jsem ve fázi, kdy mám php soubor, který když otevřu můžu mu předat informace pomocí GET, které se mi odešlou pomocí mailu smskou na mobil.
Napadlo mě to až dneska a ještě jsem ani nezačal googlit, jenom mě napadlo, že by se to někomu mohlo ještě třeba líbit a chtěl by se zapojit.
Potřebuju získat informace o stavu daemonech. Jako třeba Apache, MySQL, Samba atd :) Věřim tomu, že existuje nějakej jednoduchej způsob jak to zjistit.
Ale dostávám se k problému, jak to dostat do CRONu a jak otvírat každou hodinu nějakým scriptem stránku které pomocí GET předám pár informací.
Měl bych tedy dejme tomu něco v PERLu co se mi každou hodinou spustí a získá informace a otevře stránku které předá nějaké parametry...
Po odeslání emailu se mi automaticky přeposílá sms na mobil, mám to nastavený na seznamu a můj operátor je O2.
Vše je zadarmo...
$date = Date("j/m/Y H:i:s", Time());
$zprava = " server: status OK!";
$subj = $date.$zprava;
$success = mail("jannovak@seznam.cz", $subj, "trebajmenoserveru", "trebajmenoserveru");
if ($success) {
echo "OK!";
} else {
"KO!";
}
-
Každej daemon má svoje PID. Nevím přesně z hlavy jak se to dá zjistit, ale vím, že startovací scripty v /etc/init.d maj v sobě takovou funkci zakomponovanou, takže by mohlo stačit jen vytáhnout. Tím se dá zjistit zda daný process již běží nebo ne.
V cronu se dá spouštět PHP script. Nevím jak tam přes GET vložit ty parametry. Ale to by se dalo zase ošetřit, že před PHP ty informace uloží nějakej jinej program či script někde do txt nebo do MySQL a to PHP si to odtamtud vytáhne.
-
To mě nenapadlo přes PID, ale jak zjistíš který čemu patří?
Přes get bych to měl vymyšlený jako poslat na adresu www.example.com/mail.php?stav=OK?uptime=123456789
A script který odesílá email už ví co dostal přes GET, tedy $stav = ok; a $uptime = 123456789;
$date = Date("j/m/Y H:i:s", Time());
$stav = $_GET["stav"];
$uptime = $_GET["uptime"];
$zprava = " server: status OK!";
$subj = $date.$zprava.$stav.$uptime;
$success = mail("jannovak@seznam.cz", $subj, "trebajmenoserveru", "trebajmenoserveru");
if ($success) {
echo "OK!";
} else {
"KO!";
}
Teď tedy vytvořit script který zjistí ty stavy a podle toho vytvoří tu URL adresu, tedy nějak takhle:
jestliže neběží MySQL {
otevřít stránku www.example.com/mail.php?db=nebezi
}
else {
otevřít stránku www.example.com/mail.php?db=bezi
}
A upravit to, aby mohl posílat víc informací najednou, s tím bych si už poradil. Jenom bych potřeboval nakopnout :)
-
No to PID uměj zjistit ty scripty co jsem ti psal...tj příklad:
někde v /etc/init.d/apache2 je funkce na zjištění zda to běží...protože pokud již běží bude se /etc/init.d/apache2 start asi zlobit (pokud ne bind to dělá určitě). Takže stačí správně okopírovat.
No a programovací logiku znám... ale v cronu spustíš určitej PHP script...po určitý čase opětovně...ale podmínky typu if jsem v tom neviděl...takže musíš spustit třeba shell script...co udělá zjištění PID...a podle toho spustí PHP script s určitý GET (tuším že by to mohlo jít přes wget to PHP z shellu, ale nemám vyzkoušeno).
-
Jsem celkem sklerotik a tak si kazdy rano v devet posilam sms se svatky/narozeninami svych znamych v nasledujicich dvou dnech.
V cronu to vypada takto
1 9 * * * ~/scripts/svatky.pl -d 2 | cstocs utf8 ascii | mail neconeco@vodafonemail.cz
(pustim skript, odstanim diakritiku a poslu to rovnou mailem na vodafoni alias)
tim chci rict, ze je zbytecne na to posilani delat php skript, kdyz to muzes poslat mailem rovnou. bezici procesy si vytahas treba pres pidof, neco jako
#!/bin/bash
echo uptime: `uptime | cut -d "," -f 1`
for P in httpd smbd; do
if pidof $P &> /dev/null; then
echo "$P: OK";
else
echo "$P: not running";
fi
done
a pak to rovnou posli mailem. Nicmene podle me by bylo lepsi overovat dostupnost sluzby (nahraje se mi konkretni stranka) nez jen to, zda proces bezi.
-
No ono taky kdyz nepojede apache treba tak se pak ta sms taky neposle, protoze by to posilal php skript pokud se nepletu.
-
Jo díky moc za rady, mrknu na to a případně udělám howto, pokud to k něčemu bude.
Martin - ViPEr*CZ*: Proto mám ten php script nahranej na jiném serveru :)
-
a co monitorovat jednotlive tasky nagiosem? napriklad na url webu, databaze .. etc? zasilani na mail ( mobilni mail) je samozrejmosti.
Me spis v souvislosti s tematem zajima opravdove zasilani alertu smskou z mobilu pripojeneho usb kabelem k serveru . mate nekdo zkusenosti s takovymto resenim? odesilanim napr. pres sw gnokii? zajimaji me zkusenosti s podporovanymi telefony a hlavne spolehlivosti reseni. ( nejake informace mam uz z webu gnokii, ale ona je praxe obcas jina :-) ). diky za pripadne re:
-
Napište to v bashi, použijte mailutils a jednoduchý konstrukt
echo "zprava" | mail -s "Zprava o stavu" +420.........@sms.cz.o2.com
btw.
apache2ctl status
/etc/init.d/mysql status
/etc/init.d/postfix status
...
zhusta o sobě ti démoni umí dát vědět :)
-
Hmm status jsem ani netušil... dík za info.