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非常棒,因为输出很容易读取,您可以从整个日志组中流式传输日志,而不仅仅是组中的单个流.过滤和观看具有特定前缀的流也同样容易!
我刚刚发现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)
在检查了许多选项并测试了一些自定义工具后,这些工具aws logs tail对我来说效果最好。
这里有一个简单的示例命令:
aws logs tail <GROUP_NAME> --follow
这是非常有用的官方文档:
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/tail.html
由于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)
请注意,尾随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 允许您立即跟踪日志。就像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)
| 归档时间: |
|
| 查看次数: |
30494 次 |
| 最近记录: |