2015-12-01 3 views
7

Je peux voir le journal en utilisant la commande suivante.comment regarder aws log temps réel (comme queue -f)

aws logs get-log-events --log-group-name groupName --log-stream-name streamName limit 100 

quelle est la commande pour obtenir fonctionnalité comme tail -f afin que je puisse voir le journal en temps réel

Répondre

4

Jetez un oeil à awslogs.

Si vous travaillez avec Lambda/API Gateway spécifiquement, jetez un oeil à apilogs.

+0

Le paquet 'awslogs' est incroyable. J'ai résolu un problème que j'ai rencontré ce matin où un membre de l'équipe de gestion voulait simplement "grep les logs pour trouver des trucs". Certainement le chemin à parcourir pour des solutions simples. –

1

Ce n'est pas actuellement une caractéristique de la CLI, car il expose simplement l'API HTTP pour CloudWatch journaux. Vous pouvez imiter assez trivialement la fonctionnalité avec un script shell:

#! /bin/sh 

end_time=$(($(date +"%s") * 1000)) 
aws logs get-log-events --log-group-name groupName --log-stream-name streamName --end-time $end_time 

while : 
do 
    start_time=$end_time 
    end_time=$(($(date +"%s") * 1000)) 
    aws logs get-log-events --log-group-name groupName --log-stream-name streamName --start-time $start_time --end-time $end_time 
    sleep 1 
done 

Avertissement: cela ne fonctionnera pas sous Windows, et il peut y avoir une meilleure façon d'obtenir le temps en millisecondes.

+0

Merci pour votre réponse. Cela a aidé mais cela fonctionne pour moi depuis l'heure du serveur et le temps de ma machine locale est différent. J'ai essayé de changer mon heure locale mais il ne se synchronisera pas correctement. – LynAs

+0

Les journaux CloudWatch sont stockés avec le fuseau horaire, et l'API CloudWatch utilise l'UTC pour les horodatages (l'heure UNIX en millisecondes), donc cela n'obtiendra des événements que si vous utilisez un fuseau horaire à l'est de GMT (et rien si vous est à l'ouest de GMT). En outre, les journaux CloudWatch sont presque toujours retardés de quelques secondes, donc la probabilité que cela renvoie des événements même si vous corrigez l'heure UTC est assez faible (selon mon expérience). –

5

Parce que les journaux CloudWatch peuvent être retardés (et non « en temps réel » par définition précise) vous analysez les événements précédents pour la dernière horodatage et commencer la prochaine itération il:

#!/bin/bash 

group_name='<log-group-name>' 
stream_name='<log-stream-name>' 
start_seconds_ago=300 

start_time=$((($(date -u +"%s") - $start_seconds_ago) * 1000)) 
while [[ -n "$start_time" ]]; do 
    loglines=$(aws --output text logs get-log-events --log-group-name "$group_name" --log-stream-name "$stream_name" --start-time $start_time) 
    [ $? -ne 0 ] && break 
    next_start_time=$(sed -nE 's/^EVENTS.([[:digit:]]+).+$/\1/ p' <<< "$loglines" | tail -n1) 
    [ -n "$next_start_time" ] && start_time=$(($next_start_time + 1)) 
    echo "$loglines" 
    sleep 15 
done 

Ou si vous voulez une queue groupe entier journal, utilisez filter-log-events sans nom de flux:

#!/bin/bash 

group_name='<log-group-name>' 
start_seconds_ago=300 

start_time=$((($(date -u +"%s") - $start_seconds_ago) * 1000)) 
while [[ -n "$start_time" ]]; do 
    loglines=$(aws --output text logs filter-log-events --log-group-name "$group_name" --interleaved --start-time $start_time) 
    [ $? -ne 0 ] && break 
    next_start_time=$(sed -nE 's/^EVENTS.([^[:blank:]]+).([[:digit:]]+).+$/\2/ p' <<< "$loglines" | tail -n1) 
    [ -n "$next_start_time" ] && start_time=$(($next_start_time + 1)) 
    echo "$loglines" 
    sleep 15 
done 

J'ai aussi mis en place les scripts que j'utilise comme GIST GitHub: https://gist.github.com/tekwiz/964a3a8d2d84ff4c8b5288d9a703fbce.

Attention: les scripts ci-dessus sont écrits pour mon système macOS personnalisé (bastardisé ?? Les modifications sont les bienvenues :)

3

Je viens de découvrir cwtail et ça marche bien (pour regarder les logs CloudWatch d'une fonction lambda).

Pour installer:

npm install -g cwtail 

Pour la liste des groupes journaux:

cwtail -l 

Ensuite, une fois que vous avez choisi loch qui groupe 'queue':

cwtail -f /aws/lambda/ExampleFunction