Per usare AWSCLI (una pianura così come con cwlogs
plugin) vedono http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/SearchDataFilterPattern.html
Per la sintassi modello (plain text
, [space separated]
come come {JSON syntax}
) vedi: http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html
Per utility a riga di comando python awslogs
vedere https://github.com/jorgebastida/awslogs.
AWSCLI: tronchi AWS filtro-log-eventi
AWSCLI è CLI ufficiale per i servizi di AWS e ora supporta i log troppo.
Per mostrare aiuto:
$ aws logs filter-log-events help
Il filtro può essere basata su:
- nome del gruppo di log
--log-group-name
(solo ultimo è utilizzato)
- registro nome del flusso
--log-stream-name
(è possibile specificare più volte)
- ora di inizio
--start-time
- ora di fine
--end-time
(non --stop-time
)
- filtro picchiettio
--filter-pattern
Solo --log-group-name
è obbligatoria.
I tempi sono espressi come epoca utilizzando millisecondi (non secondi).
La chiamata potrebbe assomigliare a questo:
$ aws logs filter-log-events \
--start-time 1447167000000 \
--end-time 1447167600000 \
--log-group-name /var/log/syslog \
--filter-pattern ERROR \
--output text
Esso stampa 6 colonne di scheda separata testo:
- 1 °:
EVENTS
(per indicare, la linea è un record di log e non altre informazioni)
- 2 °:
eventId
- 3 °:
timestamp
(tempo dichiarato dal record come ora dell'evento)
- 4 °:
logStreamName
- 5 °:
message
- 6:
ingestionTime
Quindi, se si dispone di utility a riga di comando di Linux a portata di mano e la cura solo di registrare messaggi di log per l'intervallo da 2015-11-10T14:50:00Z
a 2015-11-10T15:00:00Z
, si può farlo nel modo seguente:
$ aws logs filter-log-events \
--start-time `date -d 2015-11-10T14:50:00Z +%s`000 \
--end-time `date -d 2015-11-10T15:00:00Z +%s`000 \
--log-group-name /var/log/syslog \
--filter-pattern ERROR \
--output text| grep "^EVENTS"|cut -f 5
AWSCLI con cwlogs plug
012.351.641.061.
Il cwlogs
plug AWSCLI è più semplice da usare:
$ aws logs filter \
--start-time 2015-11-10T14:50:00Z \
--end-time 2015-11-10T15:00:00Z \
--log-group-name /var/log/syslog \
--filter-pattern ERROR
Si aspetta leggibile data-ora umana e restituisce sempre output di testo con (delimitati spazio) colonne:
- 1 °:
logStreamName
- 2:
date
- 3a:
time
- 4 fino a Alla fine:
message
D'altra parte, è un po 'più difficile da installare (qualche passo da fare, più attuale pip
richiede di dichiarare il dominio di installazione come uno di fiducia).
$ pip install awscli-cwlogs --upgrade \
--extra-index-url=http://aws-cloudwatch.s3-website-us-east-1.amazonaws.com/ \
--trusted-host aws-cloudwatch.s3-website-us-east-1.amazonaws.com
$ aws configure set plugins.cwlogs cwlogs
(se si commette errore di battitura in ultimo comando, basta correggerlo in ~/.aws/config
file)
awslogs
comando dal jorgebastida/awslogs
Questa diventato il mio preferito uno - facile da installare, potente, facile da usare .
installazione:
$ pip install awslogs
Per elencare i gruppi di registro disponibili:
$ awslogs groups
Per elencare registro flussi
$ awslogs streams /var/log/syslog
Per ottenere i record e li seguono (vedi quelli nuovi come come):
$ awslogs get --watch /var/log/syslog
E si possono filtrare i record per intervallo di tempo:
$ awslogs get /var/log/syslog -s 2015-11-10T15:45:00 -e 2015-11-10T15:50:00
Dalla versione 0.2.0 lì anche la possibilità --filter-pattern
.
L'uscita ha colonne:
- 1 °: log nome del gruppo
- 2 °: log nome del flusso
- 3 °:
message
Utilizzando --no-group
e --no-stream
è possibile passare i primi due colonne disattivate.
Utilizzando --no-color
è possibile eliminare i caratteri di controllo del colore nell'output.
EDIT: come awslogs
versione 0.2.0 aggiunge --filter-pattern
, testo aggiornato.
Ho chiarito la mia domanda. Non vogliamo o non abbiamo bisogno di metriche e ogni riga di registro è una stringa di forma libera. Non sto cercando di contare gli accessi o i codici di ritorno. Sto cercando di eseguire il debug di un problema specifico da un punto specifico nel tempo in cui l'output di debug è disseminato su molti altri output. E il problema persiste per pochi minuti, quindi è sufficiente passare e la copia della visualizzazione Web non è una soluzione valida in generale. – Zach