CloudWatch लॉग देरी हो सकती है क्योंकि (सटीक परिभाषा द्वारा यानी नहीं "वास्तविक समय") आप पिछले टाइमस्टैम्प के लिए पिछली प्रतियोगिताओं में पार्स और वहाँ अगले चरण शुरू:
#!/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
या यदि आप पूंछ एक करना चाहते हैं संपूर्ण लॉग समूह, एक धारा नाम के बिना filter-log-events
का उपयोग करें: https://gist.github.com/tekwiz/964a3a8d2d84ff4c8b5288d9a703fbce:
#!/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
मैं भी स्क्रिप्ट है कि मैं GitHub gists के रूप में उपयोग ऊपर डाल दिया।
चेतावनी: उपरोक्त कोड & स्क्रिप्ट मेरे मैकोज़ सिस्टम के लिए लिखे गए हैं जिन्हें होमब्री और जीएनयू कोर्यूटिल्स के साथ अनुकूलित (बास्टर्डनाइज्ड ??) है, इसलिए कुछ कमांड विकल्पों को आपके सिस्टम के लिए tweaked की आवश्यकता हो सकती है। संपादन का स्वागत है :)
स्रोत
2016-06-27 12:24:24
'awslogs' पैकेज अद्भुत है। एक समस्या हल हुई जिसमें आज सुबह था, जहां एक बिजनेस टीम सदस्य सिर्फ "चीज़ें खोजने के लिए लॉग को grep" करना चाहता था। निश्चित रूप से सरल समाधान के लिए जाने का तरीका। –