Splunk学习心得

由于蓝总要搞软文推广系统的统计,挂上微信UI后cnzz统计出了问题,于是打算直接把nginx的access.log导入splunk分析,这也是第一次正式接触splunk。

1.安装splunk

我的系统是centos 64位的,所以我先到官网下载了安装包,根据网上的文章安装流程如下:

首先创建一个splunk用户组,创建splunk用户,并且放在/opt/splunk目录下

[root@iZ28hzo5igsZ ~]# groupadd splunk
[root@iZ28hzo5igsZ ~]# useradd -d /opt/splunk -m -g splunk splunk
[root@iZ28hzo5igsZ ~]# su - splunk
[splunk@iZ28hzo5igsZ ~]$ id
uid=1001(splunk) gid=1001(splunk) groups=1001(splunk)
[splunk@iZ28hzo5igsZ ~]$ getconf LONG_BIT
64

下载完以后,直接解压到~目录,然后进入安装,输入密码

[splunk@iZ28hzo5igsZ ~]# tar -xvf splunk-6.4.0-f2c836328108-Linux-x86_64.tgz
[splunk@iZ28hzo5igsZ ~]# cd splunk/bin
[splunk@iZ28hzo5igsZ ~]# ./splunk start --accept-license

就完成安装了

---恢复内容结束---

---恢复内容开始---

由于蓝总要搞软文推广系统的统计,挂上微信UI后cnzz统计出了问题,于是打算直接把nginx的access.log导入splunk分析,这也是第一次正式接触splunk。

1.安装splunk

我的系统是centos 64位的,所以我先到官网下载了安装包,根据网上的文章安装流程如下:

首先创建一个splunk用户组,创建splunk用户,并且放在/opt/splunk目录下

[root@iZ28hzo5igsZ ~]# groupadd splunk
[root@iZ28hzo5igsZ ~]# useradd -d /opt/splunk -m -g splunk splunk
[root@iZ28hzo5igsZ ~]# su - splunk
[splunk@iZ28hzo5igsZ ~]$ id
uid=1001(splunk) gid=1001(splunk) groups=1001(splunk)
[splunk@iZ28hzo5igsZ ~]$ getconf LONG_BIT
64

下载完以后,直接解压到~目录,然后进入安装,输入密码

[splunk@iZ28hzo5igsZ ~]# tar -xvf splunk-6.4.0-f2c836328108-Linux-x86_64.tgz
[splunk@iZ28hzo5igsZ ~]# cd splunk/bin
[splunk@iZ28hzo5igsZ ~]# ./splunk start --accept-license

就完成安装了,由于数据直接在本机上,所以不需要转发和上传,直接导入日志,如果无法导入需要注意权限。

等我们导入完数据就可以在搜索栏看到这些数据了。

 

接下来完成蓝总要求的几个任务

1.查询一下访问createurl.php和urlsell.php的 PV 和 UV

查询PV很简单,直接输入createurl就可以了

index="main" source="/home/wwwlogs/access.log" createurl
index="main" source="/home/wwwlogs/access.log" urlsell 

查询UV的话需要额外添加条件

index="main" source="/home/wwwlogs/access.log" urlsell |stats dc(clientip)
index="main" source="/home/wwwlogs/access.log" create |stats dc(clientip)

 

可以看到pv有1888,而uv只有359,这里uv是按照独立IP来统计的。

2.查询urlsell访问的走势图

index="main" source="/home/wwwlogs/access.log" urlsell | timechart count by host

如上是近几日的走势图

3.搜索每篇文章的单独UV,找出受到用户喜爱的文章。

这里搜先说明一下,用户访问文章的入口文件是urlsell.php,其中有个参数pagename用来标识文章,我们这里要通过正则表达式来搜索。

index="main" source="/home/wwwlogs/access.log" urlsell | rex field=uri "<pagename>pagename=(?<pn>\w+)[&\s]"

当我写好正则表达式,我发现搜索出来的结果并没有标识我要的东西,看来还是需要添加一个统计

index="main" source="/home/wwwlogs/access.log" urlsell | rex field=uri "pagename=(?<pn>\w+)[&\s]" | stats count by pn

我们通过正则表达式匹配出pagename参数的值,这里通过()复制给<pn>,语法参照如下

我们匹配出如下结果

我们也可以看所有文章的对比,那么就用时间来统计

index="main" source="/home/wwwlogs/access.log" urlsell | rex field=uri "pagename=(?<pn>\w+)[&\s]" | timechart count by pn

 

也可以导出做数据分析

posted @ 2018-08-22 23:13  EnochLin  阅读(567)  评论(0编辑  收藏  举报