Aşağıdaki komutu kullanarak günlüğü görüntüleyebilirim. Ben sadece CloudWatch Günlükleri HTTP API ortaya bu durum şu anda CLI bir özelliği değildir günlüğü gerçek zamanlıaws günlüğünü gerçek zamanlı olarak görüntüleme (tail -f gibi)
cevap
görebileceği şekilde tail -f
gibi özelliği almak için komut nedir
aws logs get-log-events --log-group-name groupName --log-stream-name streamName limit 100
. Bu Windows üzerinde çalışmaz ve milisaniye cinsinden saati almak için daha iyi bir yolu olabilir:
#! /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
Destek Sen oldukça trivially bir kabuk komut dosyası ile işlevselliği taklit olabilir.
Cevabınız için teşekkür ederim. Sunucu zamanından bu yana benim için bu iş yardımcı oldu ve yerel makine zamanım farklı. Yerel saatimi değiştirmeyi denedim ancak yine de düzgün şekilde senkronizasyon yapmıyor. – LynAs
CloudWatch günlükleri zaman dilimi ile depolanır ve CloudWatch API zaman damgaları için UTC'yi kullanır (UNIX epoch milisaniye cinsinden), bu nedenle eğer sistem GMT'nin doğusundaki bir saat dilimini kullanırsa, bu yalnızca geçmişte olaylar alacaktır. GMT'nin batısı. Ayrıca, CloudWatch günlükleri neredeyse her zaman bir kaç saniye geciktirilir, bu nedenle UTC'ye kadarki zamanı düzeltseniz bile (bu benim tecrübemde) olayları döndürme olasılığı vardır. –
CloudWatch günlükleri (kesin tanımı gereği, yani değil "gerçek zamanlı"), son zaman damgası için önceki olayları ayrıştırmak ve orada bir sonraki iterasyon başlatmak gecikebilir Çünkü: Eğer kuyruğu, isterseniz
#!/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
Ya tüm günlük grubu, bir dere adı olmadan filter-log-events
kullanın: https://gist.github.com/tekwiz/964a3a8d2d84ff4c8b5288d9a703fbce: Ben de GitHub uz olarak kullanmak komut yukarı koyduk
#!/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
.
Uyarı: Yukarıdaki kod & komut dosyaları, Homebrew ve GNU coreutils ile özelleştirilmiş (bastardized ??) benim macOS sistemim için yazılmıştır, bu nedenle bazı komut seçeneklerinin sisteminiz için ayarlanması gerekebilir. Düzenlemeler açıktır :)
cwtail'u yeni keşfettim ve iyi çalışıyor (bir lambda işlevinin CloudWatch günlüklerini izlemek için).
yüklemek için:
npm install -g cwtail
günlük grupları listelemek için:
cwtail -l
Sonra aldım kez 'kuyruk' için gruba log hangi: benim yarattığım
cwtail -f /aws/lambda/ExampleFunction
Bunu yapmak için bir JetBrains plugin called awstail :)
'awslogs' paketi şaşırtıcıdır. Bir sorun çözüldü Bu sabah bir iş takım üyesi sadece "şeyler bulmak için günlükleri grep" istedim vardı. Kesinlikle basit çözümler için gitmek için yol. –