对于使用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