计算aws cloudwatch指标中的唯一值

时间:2017-06-26 17:48:02

标签: amazon-cloudwatch amazon-cloudwatchlogs amazon-cloudwatch-metrics

我有一组json格式的cloudwatch日志,其中包含用户名字段。如何编写一个计算每月唯一身份用户数的cloudwatch指标查询?

4 个答案:

答案 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查询。例如,请参阅: