對於使用AWSCLI(純一個以及與cwlogs
插件)看到http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/SearchDataFilterPattern.html
對於圖案語法(plain text
,[space separated]
如作爲{JSON syntax}
)見:http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html
用於Python命令行實用程序awslogs
看到https://github.com/jorgebastida/awslogs。
AWSCLI:AWS日誌過濾日誌事件
AWSCLI是AWS服務官方CLI,現在它也支持日誌。
要顯示幫助:
$ aws logs filter-log-events help
過濾器可以基於:
- 日誌組名
--log-group-name
(只顯示最後一個被使用)可以指定
- 日誌流名
--log-stream-name
(多次)
- 開始時間
--start-time
- 結束時間
--end-time
(未--stop-time
)
- 濾波器圖案
--filter-pattern
只有--log-group-name
是強制性的。
時間表示爲使用毫秒(而不是秒)的紀元。
呼叫可能是這樣的:
$ aws logs filter-log-events \
--start-time 1447167000000 \
--end-time 1447167600000 \
--log-group-name /var/log/syslog \
--filter-pattern ERROR \
--output text
它打印製表符分隔文本的6列:
- 1:
EVENTS
(表示,該行是一個日誌記錄,而不是其他信息)
- 第二:
eventId
- 3:
timestamp
(由記錄事件時間申報時間)
- 4:
logStreamName
- 5:
message
- 6:
ingestionTime
所以,如果你有Linux的命令行工具在手,只在乎區間日誌記錄信息從2015-11-10T14:50:00Z
到2015-11-10T15:00:00Z
,你可能得到它,如下所示:
$ 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與cwlogs插件
的cwlogs
AWSCLI插件更易於使用:
$ 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
它希望人類可讀的日期,時間,總是返回文本輸出,(空格分隔)列:
- 1:
logStreamName
- 2nd:
date
- 3rd:
time
- 4th till結束:
message
在另一方面,它是有點困難,安裝(幾個步驟要做加上當前pip
需要申報安裝域信任的一個)。
$ 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
awslogs
命令從jorgebastida/awslogs
這成爲我最喜歡的一個(如果您在最後一個命令錯字,只需要修正它~/.aws/config
文件) - 安裝簡便,功能強大,簡單易用。
安裝:
$ pip install awslogs
列出可用的日誌組:
$ awslogs groups
要列出日誌流
$ awslogs streams /var/log/syslog
爲了得到記錄,並按照他們(見新的,因爲他們來吧):
$ awslogs get --watch /var/log/syslog
你可以按時間範圍篩選記錄:
$ awslogs get /var/log/syslog -s 2015-11-10T15:45:00 -e 2015-11-10T15:50:00
自版本0.2.0你那裏也--filter-pattern
選項。
輸出有列:
- 1:登錄組的名稱
- 第二:日誌流名稱
- 3:
message
使用--no-group
和--no-stream
您可以切換前兩個列關閉。
使用--no-color
您可能會排除輸出中的顏色控制字符。
編輯:作爲awslogs
版本0.2.0增加了--filter-pattern
,文本更新。
我澄清了我的問題。我們不需要或不需要度量標準,每個日誌行都是一個自由形式的字符串。我不想計算登錄或返回代碼。我試圖從調試輸出散佈在許多其他輸出中的特定時間點調試特定問題。而這個問題持續了幾分鐘,所以剛剛通過並複製出網絡視圖通常不是一個可行的解決方案。 – Zach