我有一组json格式的cloudwatch日志,其中包含用户名字段。如何编写一个计算每月唯一身份用户数的cloudwatch指标查询?
答案 0 :(得分:2)
您现在可以执行此操作!使用CloudWatch Insights。
API:https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_StartQuery.html
我正在处理类似的问题,对此API的查询如下:
fields @timestamp, @message
| filter @message like /User ID/
| parse @message "User ID: *" as @userId
| stats count(*) by @userId
获取用户ID。现在,这将返回并列出其中的一个,然后逐一计数。获得唯一性的总数可以在获得响应后完成,或者可以通过更多地查询来实现。
您可以使用AWS控制台中的CloudWatch Insights页面轻松处理查询。
答案 1 :(得分:2)
现在,您可以使用CloudWatch Insights查询中的count_distinct
指令对唯一字段值进行计数。
示例:
fields userId, @timestamp
| stats count_distinct(userId)
有关CloudWatch Insights的更多信息:https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html
答案 2 :(得分:2)
我认为您可以通过以下查询来实现:
正在解析的日志语句:“正在尝试登录用户:abc .....”
fields @timestamp, @message
| filter @message like /Trying to login user/
| parse @message "Trying to login user: * and " as user
| sort @timestamp desc
| stats count(*) as loginCount by user | sort loginCount desc
这将以这种方式打印表格,
# user loginCount
1 user1 10
2 user2 15
......
答案 3 :(得分:0)
我认为你不能。
Amazon CloudWatch Logs可以扫描日志文件中的特定字符串(例如" Out of memory")。当遇到此字符串时,它将增加一个指标。然后,您可以为"当“内存不足”的数量创建一个警报。错误在15分钟内超过10"。
但是,您正在寻求计算唯一身份用户,但这并不能很好地转化为此方法。
您可以使用 Amazon Athena ,它可以针对存储在Amazon S3中的数据运行SQL查询。例如,请参阅: