如何计算CloudWatch日志中IP地址的出现次数

时间:2019-06-04 08:34:03

标签: amazon-web-services amazon-cloudwatch

假设我有一个云监视日志,如下所示:

What it should be like

最左侧的IP代表请求的来源。

是否可以列出我指定的时间范围内每个IP的出现次数?

我的意思是我想创建如下所示的数据:

time range: 2019-06-02 00:00:00 - 2019-06-04 13:00:00
number of occurrences of `172.31.13.80`: 130
number of occurrences of `172.31.25.110`: 112
number of occurrences of `172.31.8.124`: 99
number of occurrences of `172.31.8.121`: 86

看来enter image description here可以做一些我想要的事情。但是我还没有弄清楚如何通过Insights做到这一点。

有人知道如何计算每个IP的出现次数吗?

4 个答案:

答案 0 :(得分:1)

如果您的目标是分析实际的远程IP地址,并且您正在使用ELB,则最好捕获ELB access logs并对其进行分析。这将带来以下好处:

  • 访问源请求数据,包括客户端IP和SSL参数。
  • 时间信息,包括失败请求的时间。
  • 无需编写公开请求标题的自定义日志格式。

AWS Athena具有用于访问这些日志的预置查询,并且Athena的类似SQL的查询语言为您提供了比CloudWatch Logs Insights更大的灵活性。您还可以将日志发送到CloudWatch并使用Insights(可识别ELB日志格式),但这似乎是不必要的工作。

答案 1 :(得分:1)

识别日志中任何位置的 IP:

fields @timestamp, @message
  | parse @message /(?<@ip>^*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})[.]*)/
  | stats count() as requestCount by @ip
  | sort requestCount desc

答案 2 :(得分:0)

“ Elastic Load Balancing在尽力而为的基础上记录请求。我们建议您使用访问日志来了解请求的性质,而不是作为对所有请求的完整记帐。”

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html

如果准确性和使用ELB日志非常重要,则应牢记。我过去做过一些工作,使用ELB日志分析HTTP访问日志,发现它们之间的请求计数有相当大的差异(http日志准确)

答案 3 :(得分:0)

下面的查询进行了所需的分组。我看到了here

this.props.passToParent(childValue);