我正在尝试使用cli编写一个查询来过滤CW日志。
在控制台中,我可以使用以下命令过滤日志:
{($.latencies.request >15000) && ($.request.uri = "some/api/call")}
但是如果我在cli上写一个查询
queryId=$(aws logs start-query
--log-group-name "${loggroup}"
--start-time `date -jnRu -v-1d +%s`
--end-time `date +%s`
--query-string "fields @timestamp, @message
| parse @message "$.latencies.request>15000, request.uri = 'some/api/call'"
| limit 20" | jq --raw-output '.queryId'
)
echo "querying loggroup ${loggroup} n"
aws logs get-query-results
--query-id $queryId --output text
,但给出错误MalformedQueryException
如何解决这个问题?
= = = =更新使用filter-log-events
会在调用
aws_cw_filter_logs(){
echo "filtering logs using a query n"
local loggroup=${1:-"myloggroup"}
local logstream=${2:-"app/app/sdasdsadas"}
local query=${3:-"{($.latencies.request >15000) && ($.request.uri = "'"/some/api/"'")}"}
aws logs filter-log-events
--log-group-name $loggroup
--log-stream-names $logstream
--max-items 1
--output text
--filter-pattern $query
}
这是好的,想知道是否有日期过滤功能,如在控制台(没有跟踪文档)
仍然可以使用--start-time
和--endtime
选项。参见:https://awscli.amazonaws.com/v2/documentation/api/latest/reference/logs/filter-log-events.html