由于蓝总要搞软文推广系统的统计,挂上微信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
也可以导出做数据分析