Zac*_*ach 19 logging amazon-web-services amazon-cloudwatch
有没有办法1)过滤和2)通过API或CLI从Cloudwatch中检索原始日志数据?我需要从Cloudwatch中提取一部分日志事件进行分析.
我不需要创建指标或类似的东西.这是针对特定事件的历史研究.
我已经转到控制台中的日志查看器,但我试图拉出特定的行来告诉我一段时间的故事.日志查看器几乎不可能用于此目的.如果我有实际的日志文件,我只会grep并在大约3秒内完成.但我没有.
澄清
在Cloudwatch日志的描述中,它说:"您可以查看原始日志数据(仅在Web视图中?),以便在需要时查看问题的根源.可以存储和访问日志数据(仅在Web视图中? )只要你需要使用高度耐用,低成本的存储,你就不必担心填满硬盘." - 是我的
如果此控制台视图是获取源数据的唯一方法,那么通过Cloudwatch存储日志对我来说是不可接受的解决方案.我需要以足够的灵活性来获取实际数据来搜索模式,而不是点击几十页的行并复制/粘贴.但是,似乎有可能无法获得获取源数据的更好方法.
Jan*_*sky 44
有关使用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服务的官方CLI,现在它也支持日志.
要显示帮助:
$ aws logs filter-log-events help
Run Code Online (Sandbox Code Playgroud)
过滤器可以基于:
--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
Run Code Online (Sandbox Code Playgroud)
它打印6列制表符分隔文本:
EVENTS表示该行是日志记录而不是其他信息)eventIdtimestamp记录作为活动时间宣布的时间)logStreamNamemessageingestionTime所以,如果你有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
Run Code Online (Sandbox Code Playgroud)
该cwlogsAWSCLI插件是简单的使用方法:
$ 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
Run Code Online (Sandbox Code Playgroud)
它需要人类可读的日期时间,并始终返回带有(空格分隔)列的文本输出:
logStreamNamedatetimemessage另一方面,安装起来有点困难(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
Run Code Online (Sandbox Code Playgroud)
(如果您在上一个命令中输入拼写错误,只需在~/.aws/config文件中更正)
awslogs 命令来自 jorgebastida/awslogs这成为我最喜欢的一个 - 易于安装,功能强大,易于使用.
安装:
$ pip install awslogs
Run Code Online (Sandbox Code Playgroud)
列出可用的日志组:
$ awslogs groups
Run Code Online (Sandbox Code Playgroud)
列出日志流
$ awslogs streams /var/log/syslog
Run Code Online (Sandbox Code Playgroud)
要获取记录并按照它们进行操作(请参阅新的记录):
$ awslogs get --watch /var/log/syslog
Run Code Online (Sandbox Code Playgroud)
您可以按时间范围过滤记录:
$ awslogs get /var/log/syslog -s 2015-11-10T15:45:00 -e 2015-11-10T15:50:00
Run Code Online (Sandbox Code Playgroud)
从版本0.2.0开始,您还可以--filter-pattern选择.
输出有列:
message使用--no-group和--no-stream你可以关闭前两列.
使用--no-color你可以摆脱输出中的颜色控制字符.
编辑:随着awslogs版本0.2.0添加--filter-pattern,文本更新.
| 归档时间: |
|
| 查看次数: |
31826 次 |
| 最近记录: |