Hvordan kan jeg generere data for Nginx-loggfiler for ett eller flere testdomener (brenner) på en testserver? Jeg vil i hovedsak etterligne et live nettsted med vanlig trafikk som er logget, men uten å tilby et legitimt nettsted.

Jeg har begynt å lære om logrotate og jeg tilpasser det for nettstedene på serverne mine. For å forstå mer fullstendig hvordan det fungerer, ser jeg ideelt ut til å replikere loggfiloppføringer som om testdomenene er live nettsteder, uten å åpne domenene for et større publikum, siden de egentlig er disponible domener for dette formålet.

Jeg har full (root) tilgang til VPS-en min, jeg har Nginx satt opp slik jeg vil ha det, testdomenene er alle på websiden i stedet for interne, og jeg har loggfiler som for øyeblikket bare blir større etter hvert som tiden går ... derav behovet til logrotate.

Jeg trenger ikke et benchmarking-, samtidighets- eller belastningstestingsverktøy i tradisjonell forstand, da jeg ikke vil overvelde serveren, så noe som ab eller siege som kan kjøre i drypp-drypp-drypp-modus kan være en rute å undersøke.

Du kunne absolutt bruke noe sånt ab eller siege - men det virker som mye arbeid til liten nytte, i det minste gitt det du prøver å oppnå.

Hvis jeg var deg, ville jeg bare lage noen tilfeldige / tomme filer. Gi dem riktig navn og sett dem på rett sted og logrotate burde gjøre jobben sin normalt - det bryr seg ikke i det hele tatt om hva innholdet i filene er, noe som er fornuftig siden loggfiler kan se annerledes ut for forskjellige tjenester eller til og med for forskjellige brukere av samme tjeneste.

På det enkleste kan noe som dette være nok for deg:

touch /var/log/nginx/access.log

Eller hvis du ønsker å bli litt mer fancier, legger du til dato / klokkeslett i loggfilen din, slik at du kan spore når loggene faktisk blir rotert. Du kan legge noe slikt til crontab, og la den kjøre hvert minutt / time / hva som helst:

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

Jeg antar at hvis du ville ha falske logger se mer som ekte logger, kan du gjøre noe slikt:

# 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 

Ovennevnte vil opprette linjer som ser slik ut, ved hjelp av en tilfeldig generert IP-adresse og gjeldende dato / tid:

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' '-'

Imidlertid lage loggene dine se som om virkelige logger virker som for mye for meg, og for min måte å tenke på, vil det bare gjøre feilsøking mer komplisert enn bare å legge til dato / klokkeslett i filen.

Alt som er sagt, hvis du roterer logger basert på filstørrelse, kan du bruke noe som truncate kommando for å generere filer i forskjellige størrelser. For eksempel oppretter denne kommandoen en 4 MB-fil:

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

Klart ingen av disse alternativene simulerer faktisk Nginx-logger, men igjen, det er egentlig ikke nødvendig å teste logrotate. Til slutt kan det også være nyttig å bruke --force alternativ for logrotate slik at du umiddelbart kan se hvordan loggene dine roteres. (Se: https://www.shellhacks.com/logrotate-force-log-rotation/).

Lykke til!

  • 2 Dette er ditt tredje svar her, og som de to andre er det ekstremt høy kvalitet. Takk for at du tok deg tid til å skrive så gode svar og velkommen til dette nettstedet!

fungert for deg: Charles Robertson | Ønsker du å kontakte oss?