我正在尝试使用javascript v3从aws获得日志洞察力,我可以看到,我们只能使用StartQuery调度查询,稍后可以分别使用getQueryResults方法获得结果。我遇到了filterLogEvents方法,它单独使用Regex过滤日志事件,但我需要单独使用查询。
有什么黑客可以同步得到结果吗?
发布于 2022-06-30 19:21:48
我使用了‘aws’v2,并设法获得这样的查询结果,希望这会有所帮助。
const cl = new AWS.CloudWatchLogs({
region: 'your-region',
})
const params = {
endTime: new Date().getTime() /* required */ ,
logGroupName: 'your-log-group-name' /* required */ ,
queryString: `fields @message, @timestamp
| parse @message /\\[(?<time>[\\S ]+): (?<msg_type>\\S+)\\/.+\\[(?<task_id>\\S+)\\](?<msg>.+)/
| filter task_id = '${taskId}'
| sort @timestamp desc
| display @timestamp, time,msg_type,msg`,
startTime: new Date().getTime(),/*start time*/
}
const getResults = (data) => {
cl.getQueryResults({
queryId: data.queryId
}, (_err, _data) => {
if (_err) {
console.log(_err, _err.stack)
}
else {
const res = _data.results ? .map((r) => {
return {
timestamp: r.find((el) => el.field === '@timestamp') ? .value,
type: r.find((el) => el.field === 'msg_type') ? .value,
msg: r.find((el) => el.field === 'msg') ? .value,
}
})
/*check the status and run the function again*/
if (_data.status.toLowerCase() === 'running') {
getResults(data)
}
})
}
cl.startQuery(params, (err, data) => {
if (err) {
console.log(err, err.stack)
} else {
getResults(data)
}
})
https://stackoverflow.com/questions/71235333
复制相似问题