0x01 前言

我使用ELK套件分析nginx日志,用kibana生成酷炫的可视化图表。作为站长的我们可能比较关心自己站点被搜索引擎爬行的数量,那么ELK可以达成你的愿望。

如果你还没有配置ELK,可以参考以下内容:

  1. 使用Elastic Stack处理nginx日志
  2. 安装配置Elastic Stack 5

0x02 准备

在使用kibana新建图表之前,你需要有数量可观的nginx日志,并且日志内包含ua信息,并且ua信息内需要含有各种搜索引擎爬行的记录。例如:

#google 图片爬虫
66.249.65.102 - - [29/Dec/2016:19:43:41 +0800] "GET /wp-content/uploads/2016/12/1481342832.jpg HTTP/1.1" ngx.hk 200 25145 "-" "Googlebot-Image/1.0" "-" 127.0.0.1:8080 200 EXPIRED "image/jpeg" 0.021 > 0.021

#MJ12bot 爬虫
163.172.68.132 - - [29/Dec/2016:19:31:33 +0800] "GET /tag/%E7%9B%91%E6%8E%A7 HTTP/1.1" ngx.hk 200 17206 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.7; http://mj12bot.com/)" "-" 127.0.0.1:8080 200 MISS "text/html; charset=UTF-8" 0.915 > 0.915

还需要有一套配置完成的ELK套件,如果一切都完美地完成,那么处理完成之后的ua信息应该和下图类似:

google 图片爬虫
MJ12bot 爬虫

0x03 图表

一切都准备就绪,就可以通过kibana建立相关图表。

单击kibana中的Visualize并点选pie chart建立圆饼图:

新建kibana圆饼图

然后根据实际情况选择索引:

选择kibana索引

然后需要选择切片(Slice Size)的聚合模式、在切片分割中使用terms并选择通过字段(Field):ua.name进行分割:

点击顶部的run按钮,会发现所有ua.name都包含在内,然而这并不符合我们的要求:

我们还需要通过高级配置通过正则语法进行细致的匹配,点击下方的Advanced,在Include Pattern中添加以下内容:

.*bot.*|.*spider.*|.*crawler.*

再次点击运行,即可达成目标:

我的网站对于搜索引擎来说是一个新站,因为我换过好几次域名,在写这篇文章的前2天我再次更换了域名,从上面的图表可以看出,Google的蜘蛛真的很勤奋。

最后记得保存,点击顶部的save,赋予这个图表一个名称并保存即可。

0x04 结语

通过图表可以得知蜘蛛爬行的次数,还可以了解互联网中的各种爬虫,除了常见的Google、baidu、yandex和bing,原来还有许多少见的爬虫。