Jak mohu vygenerovat data souboru protokolu Nginx pro jednu nebo více domén testu (vypalovačky) na testovacím serveru? Chci v podstatě napodobit živý web s přihlášeným běžným provozem, ale bez poskytnutí legitimního webu.

Začal jsem se o tom učit logrotate a přizpůsobuji to webům na mých serverech. Abych plně pochopil, jak to funguje, v ideálním případě se snažím replikovat položky souboru protokolu, jako by testovací domény byly živé weby, aniž by se domény otevíraly širšímu publiku, protože jsou pro tento účel v zásadě jednorázové domény.

Mám plný (root) přístup k mému VPS, mám Nginx nastavený tak, jak chci, testovací domény jsou spíše webové než interní a mám logovací soubory, které se v současné době jen zvětšují, jak čas postupuje ... proto potřeba pro logrotate.

Nepotřebuji nástroj pro srovnávání, souběžnost nebo testování zátěže v tradičním smyslu, protože nechci server přemoci, takže něco jako ab nebo siege která může běžet v režimu odkapávání-odkapávání, může být cesta k prošetření.

Vy mohl určitě použijte něco jako ab nebo siege - ale zdá se to jako spousta práce pro malý užitek, přinejmenším vzhledem k tomu, čeho se snažíte dosáhnout.

Kdybych byl tebou, vytvořil bych jen nějaké náhodné / prázdné soubory. Dejte jim správné jméno a vložte je na správné místo a logrotate by měl dělat svou práci normálně - vůbec se nestará o to, jaký je obsah souborů, což dává smysl, protože soubory protokolu mohou vypadat odlišně pro různé služby nebo dokonce pro různé uživatele stejné služby.

V nejjednodušším případě vám něco takového může stačit:

touch /var/log/nginx/access.log

Nebo pokud jste chtěli získat trochu většího vkusu, připojte k souboru protokolu datum a čas, abyste mohli sledovat, kdy se protokoly skutečně otáčejí. Dalo by se něco takového dát na váš crontab a nechat ho běžet každou minutu / hodinu / cokoli:

echo `date` >> /var/log/nginx/access.log

Předpokládám, že pokud byste chtěli mít své falešné protokoly Koukni se spíše jako skutečné protokoly můžete udělat něco takového:

# Generate Random IP Address IP_ADDRESS='$(( $RANDOM % 254 + 1 )).$(( $RANDOM % 254 + 1 )).$(( $RANDOM % 254 + 1 )).$(( $RANDOM % 254 + 1 ))' # Get the current date/time NOW=$(date +'%d/%b/%Y:%H:%M:%S') # Append a fake entry to the log file echo '$IP_ADDRESS - - [$NOW +0000] \'GET / HTTP/2.0\' 200 5316 \'https://example.com/\' \'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36\' \'-\'' >> /var/log/nginx/access.log 

Výše uvedené vytvoří řádky, které vypadají takto, pomocí náhodně generované adresy IP a aktuálního data a času:

79.139.188.5 - - [23/Sep/2020:16:07:54 +0000] 'GET / HTTP/2.0' 200 5316 'https://example.com/' 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36' '-'

Avšak vytváření protokolů Koukni se jako skutečné protokoly se mi jeví jako přehnané a podle mého způsobu myšlení to ladění jen zkomplikuje, než jen přidání data a času do souboru.

Všechno, co bylo řečeno, pokud rotujete protokoly podle velikosti souboru, můžete použít něco jako truncate příkaz pro generování souborů různých velikostí. Například tento příkaz vytvoří soubor 4 MB:

truncate -s 4M /var/log/nginx/access.log

Je zřejmé, že žádná z těchto možností ve skutečnosti simuluje protokoly Nginx, ale opět to není nutné testovat logrotate. Nakonec vám může také pomoci použít --force možnost pro logrotate abyste mohli okamžitě vidět, jak budou vaše záznamy rotovány. (Viz: https://www.shellhacks.com/logrotate-force-log-rotation/).

Hodně štěstí!

  • 2 Toto je vaše třetí odpověď a stejně jako ostatní dvě je mimořádně kvalitní. Děkujeme, že jste si našli čas na napsání tak dobrých odpovědí, a vítejte na této stránce!

Pracoval pro vás: Charles Robertson | Chcete nás kontaktovat?