Fórum Root.cz
Hlavní témata => Software => Téma založeno: fotka 07. 11. 2010, 15:16:55
-
Ahoj, mám server a na něm je spousta hostingových účtů
u každé domény se vytváří automaticky error_log soubor a někdy může narůst více jak 100MB velikosti.
Chci se zeptat jak můžu globálně omezit velikost těchto souborů, a nebo globálně nastavit mazání, vyprazdňování toho souboru?
Děkuji,
cpanel
-
Riešením je logrotate daemon.
-
Měli byste prosím nějaký příklad jak ho použít?
Pokud třeba nechci aby ty logy byly větší než 100MB pro každou doménu/subdoménu?
-
Ja názorne príklady nedávam, keď ste sa už rozhodol fušovať linuxovým administrátorom do remesla, naučte sa to robiť sám.
Takto pochopíte problematiku, možno sa popri tom naučíte niečo nové. Ja som ochotný vás iba naviesť k správnemu nástroju, na správnu cestu ale za vás vašu úlohu riešiť nebudem.
--
A ako som už raz napísal, treba sa pohrať s démonom logrotate, ten dokáže spustu veci a myslím si, že aj tú ktorú potrebujete spraviť vy. Prípadne ešte príkazy: `man logrotate', ak by ste nevedel kde hľadať informácie.
-
/etc/logrotate.d/rsyslog:
/var/log/syslog
{
rotate 9
#daily
size 100k
missingok
notifempty
delaycompress
compress
postrotate
invoke-rc.d rsyslog reload > /dev/null
endscript
}
Uvedene nastaveni zpusobi, ze pokud presahne log 100k pak se stopne syslog demon, prejmenuje se prislusny soubor a znova zapne syslog demon. Parametr delaycompress pak zpusobi, ze se pakuji az starsi soubory. Zapoznamkovane daily znamena, ze se syslog nemeni denne, ale jen po prekroceni velikosti
JInak ale vsechno tohle je RTFM!
-
Děkuji za příklad. Nejsem si jistý jestli mluvíme oba o tom samém logu!
Já mám server na kterém je cPanel kontrol panel pomocí něhož tvořím hosting účty. Mám jich tam hodně a některé mají i subdomény.
/home/user/public_html/*
/home/user2/public_html/*
V těchto složkách je například skript wordpressu a také v tom adresáři kromě index.php a dalších se tvoří ty error_log
které chci limitovat ve všech účtech na serveru....
Nechci je rotovat, to by mi asi nepomohlo, já chci uvolnit místo a omezit to například na těch 100MB na 1 error_log..
děkuji,
P.
-
Toto by ma uz urazilo... To hore JE UKAZKA.
Uplne suhlasim s cl1d3. Ako ma tu dnes uz niekto nazval, som mozno zakomplexovany diktator, napriek tomu mojmu teamu rad poradim... Lenze potom RTFM.
Ja osobne logy z apacha a NGX cez pipe posielam do vlastneho erappera ktory sa potom pomocou REG EXP semi inteligencie riesi co s nimi dalej. Zarovej ich rotuje.
Ale pre bezne pouzitie je logrotated uplne najlepsie riesenie.
-
Treba pomuze toto.
http://httpd.apache.org/docs/2.0/programs/rotatelogs.html
-
CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common
This configuration will rotate the logfile whenever it reaches a size of 5 megabytes.
ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"
This configuration will rotate the error logfile whenever it reaches a size of 5 megabytes, and the suffix to the logfile name will be created of the form errorlog.YYYY-mm-dd-HH_MM_SS.
---
Ahoj, děkuji za doporučení. Mě ale právě z výše uvedeného přijde že to slouží k rotaci jednoho log souboru. Já ale potřebuju rotovat/(nebo spíše chci to smazat či omezit) desítky logů v jednotlivých složkách uživatelů (domény a subdodmény v /home/useXY/public_html/error_log
Jak toho můžu docílit?
-
Posielaj ich cez pipe do wrappera. Ten wrapper si musis napisat sam, ale uplne na to staci bash.
-
Posielaj ich cez pipe do wrappera. Ten wrapper si musis napisat sam, ale uplne na to staci bash.
Děkuji za radu, zní to docela nějak složitě ;)
-
Nemam chut zverejnit moj buggy wrapper, ale tu mozno dojdes k inspiracii :) Myslienka posielat log z apache do php skriptu znie trochu cudne, ale moze to fungovat. A php dnes vie vela vela vela ludi.
http://www.codeblog.co.uk/2008/03/06/web-platforms/how-to-pipe-logs-from-apache-to-php/
http://www.sudleyplace.com/pipederrorlogs.html
Myslienka je jednoducha... Log nejde priamo do suboru, ale do skriptu ktory sa prv rozhodne co s tym... Napriklad ze bude drzat len 1000 riadkov. Potom to lahko zakomponujes do vhost configov...
Napriklad u mna sa volakedy riesil mod_vhostalias a klasicky spliter mi nevyhovoval. Zaroven som potreboval distribuovat error logy co normalne nie je mozne, kezde su len pre vhost. Taky vlastny wrapper ma potom podstatne viac flexibility co dalej... Semi inteligenciu... Napriklad alarming.
Fakt odporucam pristupovat k danej teme zvedavo a skusat. Uz len s tymy ukazkami sa pohnes dalej aj ked ti mozno nie je hned jasne co by si robil...
Staci dalsich 5 minut s googlom a najdes toto:
http://stackoverflow.com/questions/215896/how-to-use-php-to-delete-x-number-of-lines-from-the-beginning-of-a-text-file
Ked skombinujes tieto linky, mas presne to co si chcel a zaroven moznost to do buducnosti brutalne rozsirit :)
-
BTW:
man rotatelogs
CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common
-
Je zajimave, kolik je tu "odborniku", co jsou ochotni "nakopnout spravnym smerem" a pritom vubec spravnym smerem nikoho nekopou, protoze nepochopili zadani problemu.
Ten clovek spravuje hostingy pres cpanel. Ma milion hostingovych domen, a predpokladam ze mu cpanel nekde vytvari pro kazdou hostingovou domenu zvlastni kousek httpd.conf souboru, tudiz kazda domena ma SVOJI VLASTNI errorLog direktivu.
Pokud chapu syslog spravne, musel by se pro kazdou novou hostingovou domenu znovu nastavovat, coz je o nicem. Rotatelogs by zas vyzadovalo zmenu konfiguracnich direktiv, ktere generuje cpanel, coz taky asi nelze (nevim).Tudiz reseni zde nabizena jsou IMHO na nic.
Navrhoval bych vec vyresit kratkym scriptem, ktery by se spoustel z cronu treba jednou za den. Skript projde vsechny hostovane domeny, vyhleda error_log soubory ktere jsou vetsi nez 100MB, smaze je, a provede graceful restart http serveru (tudiz se webserver bezpecne restartuje aniz by odpojil stavajici spojeni). Restartovany webserver si vytvori nove error_log soubory tam kde mu budou chybet
#!/bin/bash
find /home -name error_log -size +100M | xargs rm -f # najdi soubory s nazvem error_log a smaz je
/etc/rc.d/rc.httpd restart # nebo "service httpd restart", nebo nevim, zalezi od distra
Pokud uzivatel hostingu chce mit u sebe v adresari i nejake svoje vlastni error_log soubory vetsi nez 100MB, pak je nutne prikaz find patricne upravit, aby mazal jen zrovna ty error_logy, ktere jsou webserveru... Treba pouzit -maxdepth 1 parametr pro find, nebo grep, neco, to uz nechavam na kreativite kazdeho.
-
To co pises je relativne vacsie zverstvo nez vlastny skript co ti rovno pocas pisania logu obmedzuje jeho velkost. Naco preboha restart? To nie je fakt lepsie potom uz hoci aj echo "" > /path/to/file.log???
Kazdopadne riesenie je upravit template cpanelu na vytvaranie vhost suborov a v nich urcit pravidla. Ci uz posielat log do wrappera alebo pouzit apachecku utilitu spomenutu vyussie.
-
Co KONKRETNE mas za problem s restartem?
Graceful restart je naprosto safe.
-
Pretoze RELOADUJE KONIGURAK!
Ja som si zvykol nieco predpripravit a necakany restart/reload by ma nepotesil.