Jak omezit error_log velikost?

fotka

  • ***
  • 216
    • Zobrazit profil
    • Linux forum
    • E-mail
Jak omezit error_log velikost?
« kdy: 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
Linux nováček - CeskeForum.com


cl1d3

Re: Jak omezit error_log velikost?
« Odpověď #1 kdy: 07. 11. 2010, 19:05:12 »
Riešením je logrotate daemon.

fotka

  • ***
  • 216
    • Zobrazit profil
    • Linux forum
    • E-mail
Re: Jak omezit error_log velikost?
« Odpověď #2 kdy: 07. 11. 2010, 20:04:43 »
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?
Linux nováček - CeskeForum.com

cl1d3

Re: Jak omezit error_log velikost?
« Odpověď #3 kdy: 07. 11. 2010, 21:40:39 »
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.

« Poslední změna: 07. 11. 2010, 21:57:10 od cl1d3 »

fsdfsdf

Re: Jak omezit error_log velikost?
« Odpověď #4 kdy: 07. 11. 2010, 21:54:50 »
/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!


fotka

  • ***
  • 216
    • Zobrazit profil
    • Linux forum
    • E-mail
Re: Jak omezit error_log velikost?
« Odpověď #5 kdy: 07. 11. 2010, 22:11:46 »
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.
Linux nováček - CeskeForum.com

PCnity

  • *****
  • 685
    • Zobrazit profil
    • E-mail
Re: Jak omezit error_log velikost?
« Odpověď #6 kdy: 08. 11. 2010, 00:15:21 »
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.

faha

Re: Jak omezit error_log velikost?
« Odpověď #7 kdy: 08. 11. 2010, 00:46:03 »

fotka

  • ***
  • 216
    • Zobrazit profil
    • Linux forum
    • E-mail
Re: Jak omezit error_log velikost?
« Odpověď #8 kdy: 10. 11. 2010, 00:25:17 »
Kód: [Vybrat]
CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common

This configuration will rotate the logfile whenever it reaches a size of 5 megabytes.

Kód: [Vybrat]
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?
Linux nováček - CeskeForum.com

PCnity

  • *****
  • 685
    • Zobrazit profil
    • E-mail
Re: Jak omezit error_log velikost?
« Odpověď #9 kdy: 10. 11. 2010, 00:43:45 »
Posielaj ich cez pipe do wrappera. Ten wrapper si musis napisat sam, ale uplne na to staci bash.

fotka

  • ***
  • 216
    • Zobrazit profil
    • Linux forum
    • E-mail
Re: Jak omezit error_log velikost?
« Odpověď #10 kdy: 10. 11. 2010, 01:00:18 »
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ě ;)
Linux nováček - CeskeForum.com

PCnity

  • *****
  • 685
    • Zobrazit profil
    • E-mail
Re: Jak omezit error_log velikost?
« Odpověď #11 kdy: 10. 11. 2010, 01:11:26 »
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 :)
« Poslední změna: 10. 11. 2010, 01:19:38 od PCnity »

PCnity

  • *****
  • 685
    • Zobrazit profil
    • E-mail
Re: Jak omezit error_log velikost?
« Odpověď #12 kdy: 12. 11. 2010, 12:29:18 »
BTW:

man rotatelogs

CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common

Tomas M

Re: Jak omezit error_log velikost?
« Odpověď #13 kdy: 12. 11. 2010, 14:09:24 »
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

Kód: [Vybrat]
#!/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.

PCnity

  • *****
  • 685
    • Zobrazit profil
    • E-mail
Re: Jak omezit error_log velikost?
« Odpověď #14 kdy: 12. 11. 2010, 14:46:20 »
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.