如何实时查看aws日志(如tail -f)

Lyn*_*nAs 47 amazon-cloudwatch aws-cli

我可以使用以下命令查看日志.

aws logs get-log-events --log-group-name groupName --log-stream-name streamName --limit 100
Run Code Online (Sandbox Code Playgroud)

什么是获取功能的命令,tail -f以便我可以实时查看日志

Tyl*_*ock 78

我是真的很失望awslogs,并cwtail让我做我自己的工具,叫做锯能够有效地流CloudWatch的日志到控制台(和colorizes的JSON输出):

您可以在MacOS上安装它:

brew tap TylerBrock/saw
brew install saw
Run Code Online (Sandbox Code Playgroud)

它有一些很好的功能,比如能够自动扩展(缩进)JSON输出(尝试运行该工具--expand):

saw watch my_log_group --expand
Run Code Online (Sandbox Code Playgroud)

有一个Lambda,你想看到错误日志?没问题:

saw watch /aws/lambda/my_func --filter error 
Run Code Online (Sandbox Code Playgroud)

Saw非常棒,因为输出很容易读取,您可以从整个日志组中流式传输日志,而不仅仅是组中的单个流.过滤和观看具有特定前缀的流也同样容易!

  • 神奇的工具! (3认同)
  • 惊人的。我无法让 docker 设置正常工作。我相信 aws 配置的映射方式存在问题。发布版本工作得非常顺利,我是最大的粉丝! (2认同)

Rya*_*anG 29

看看awslogs.

如果您恰好正在使用Lambda/API Gateway,请查看apilogs.

  • `awslogs` 包很棒。解决了我今天早上遇到的一个问题,即业务团队成员只想“grep 日志以查找内容”。绝对是寻求简单解决方案的方法。 (2认同)
  • 但是... python 预装在许多基于 Unix 的操作系统中 :) (2认同)

Gre*_*sky 8

我刚刚发现cwtail和它的作品很好(看lambda函数的CloudWatch的日志)。

安装:

npm install -g cwtail
Run Code Online (Sandbox Code Playgroud)

列出日志组:

cwtail -l
Run Code Online (Sandbox Code Playgroud)

然后,一旦你选择了哪个日志组“尾巴”:

cwtail -f /aws/lambda/ExampleFunction
Run Code Online (Sandbox Code Playgroud)


Fab*_*tto 8

在检查了许多选项并测试了一些自定义工具后,这些工具aws logs tail对我来说效果最好。

这里有一个简单的示例命令:

aws logs tail <GROUP_NAME> --follow

这是非常有用的官方文档:

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/tail.html


Tra*_*ick 6

由于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
Run Code Online (Sandbox Code Playgroud)

或者,如果要尾随整个日志组,请在filter-log-events不使用流名称的情况下使用:

#!/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
Run Code Online (Sandbox Code Playgroud)

我还提出了我用作GitHub gists的脚本:https://gist.github.com/tekwiz/964a3a8d2d84ff4c8b5288d9a703fbce .

警告:上面的代码和脚本是为我的macOS系统编写的,它是用Homebrew和GNU coreutils定制的(bastardized ??),因此可能需要为你的系统调整一些命令选项.欢迎编辑:)


小智 6

为了有效跟踪CloudWatch Logs,我创建了一个名为cw的工具。

它非常容易安装(支持brew,snap和scoop),速度快(针对特定的硬件体系结构,没有中间运行时),并且具有一系列功能使生活更轻松的。

您使用cw的示例为:

cw tail -f groupName:streamName
Run Code Online (Sandbox Code Playgroud)


Ant*_*pos 6

请注意,尾随aws日志现在是官方awscli的受支持功能,尽管仅在awscli v2中(尚未发布)。tail -f现在可以通过类似以下操作来跟踪和跟踪日志(如):

aws logs tail $group_name --follow
Run Code Online (Sandbox Code Playgroud)

要安装v2版本,请参阅此页面上的说明。它是在此PR中实现的。要在上次re:Invent会议上演示它,请观看此视频。

除了跟踪日志外,它还允许使用--since参数将日志查看回到指定时间,该参数可能花费绝对时间或相对时间

aws logs tail $group_name --since 5d
Run Code Online (Sandbox Code Playgroud)

为了使awscli的v1和v2版本分开,我将awscli v2安装到单独的python虚拟环境中,并且仅在需要使用awscli v2时才将其激活。

  • 使用此链接用于 aws v2 :https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html,尝试使用“-i”和“-b”选项安装它以提供自定义安装和二进制文件位置。 (2认同)
  • 作为 v1 插件向后移植,对于那些无法使用 v2 的人:https://pypi.org/project/awscli-plugin-logs-tail/ (2认同)

Sac*_*San 5

AWS 允许您立即跟踪日志。就像tail -f一样。使用以下命令

aws logs tail <log group name> --follow
Run Code Online (Sandbox Code Playgroud)

例如,如果您使用带有应用程序名称的 ElasticBeanStalkmyapp-prd并希望尾随 web1.log 它将是

aws logs tail /aws/elasticbeanstalk/myapp-prd/var/log/web-1.log --follow
Run Code Online (Sandbox Code Playgroud)