按照http访问路径进行访问量的统计和展现的一次实践网站安全分享!


笔者在通过web界面展现由自定义脚本统计各http(按照http访问路径分类)服务在特定时间周期的访问量的项目中,通过zabbix trapper设置和自定义shell脚本相结合的方式实现了统计和展现需求,有如下两个特点:


笔者在通过web界面展现由自定义脚本统计各http(按照http访问路径分类)服务在特定时间周期的访问量的项目中,通过zabbix trapper设置和自定义shell脚本相结合的方式实现了统计和展现需求,有如下两个特点:

性能高

平均统计上百万行日志耗时并发送到zabbix server后通过web 界面展现出来耗时在4秒内

可扩展性高

可以根据不同时间周期统计;可以根据策略筛选不同的服务进行统计;

最近遇到部分服务不稳定,需要判断是访问量过高,还是服务自身的问题导致的,对该类型服务的客户端访问量进行统计和分析就提上了日程,通过自定义脚本按照一定时间周期统计本周期内各个http访问(一级目录分类)nginx日志,不同目录对应不同功能,从而实现了应用各功能模块的访问量统计。

开发和运营人员查看方便

 通过web界面展现,再辅以权限控制可以完美解决该需求。

性能要好

统计功能不能占用过高的cpu和内存、磁盘等资源,因为都是线上机器。

历史记录追溯

统计记录需要有保存时限,通常为一年,一年内的历史数据方便查看和对比。

zabbix具有很强大功能及易用的图形界面完全满足界面展示、历史记录追溯查看、权限控制等需求自定义shell脚本完成日志的采集和统计完全满足关于性能方面的要求

环境说明

zabbix

  • zabbix server 3.2.4
  • zabbix agent 2.4.7
  • zabbix_sender 2.4.7

主机

  • centos7
  • bash

nginx

  • nginx version: nginx/1.12.0
  • 标准日志格式

自定义shell脚本采集和统计日志

日志格式

  • http
117.61.128.188 - - [06/Jun/2017:10:08:01 +0800] "some.domain.cn" "POST /tripWeb/track.htm HTTP/1.1" 200 53 "-" "Dalvik/2.1.0 (Linux; U; Android 5.1.1; CARBOX Build/LMY47V)" "-" rt=0.009 uct="0.000" uht="0.009" urt="0.009"117.61.129.158 - - [06/Jun/2017:10:08:01 +0800] "some.domain.cnn" "POST /tripWeb/track.htm HTTP/1.1" 200 53 "-" "Dalvik/2.1.0 (Linux; U; Android 5.1.1; CARBOX Build/LMY47V)" "-" rt=0.011 uct="0.000" uht="0.011" urt="0.011"117.61.134.167 - - [06/Jun/2017:10:08:01 +0800] "some.domain.cn" "POST /tripWeb/track.htm HTTP/1.1" 200 53 "-" "Dalvik/2.1.0 (Linux; U; Android 5.1.1; CARBOX Build/LMY47V)" "-" rt=0.008 uct="0.000" uht="0.008" urt="0.008"
  • tcp
117.61.132.69 [06/Jun/2017:13:20:00 +0800] TCP 200 55 30 0.023 "10.0.1.21:59001" "30" "55" "0.000" 117.61.132.69 13655 10.0.1.12 59001115.159.128.92 [06/Jun/2017:13:20:01 +0800] TCP 200 0 0 0.027 "10.0.1.21:59001" "0" "0" "0.000" 115.159.128.92 11792 10.0.1.12 59001115.159.128.92 [06/Jun/2017:13:20:01 +0800] TCP 200 0 0 0.027 "10.0.1.21:59002" "0" "0" "0.000" 115.159.128.92 41148 10.0.1.12 59002115.159.128.92 [06/Jun/2017:13:20:01 +0800] TCP 200 0 0 0.027 "10.0.1.21:59003" "0" "0" "0.000" 115.159.128.92 32925 10.0.1.12 59003

脚本

#!/bin/shaccess_log=/var/log/nginx/your_nginx.logtcp_log=/var/log/nginx/your_tcp_access.logsendkeys="trip tripWeb tripWeixin 59001 59002 59003"cur_time=`date +%d/%b/%Y:%H:%M:%S`if [  $1 ] ; then   time_dur=$1else   time_dur=5fiago_time=`date -d "$time_dur minutes ago" +%d/%b/%Y:%H:%M:%S`# for debugging#echo $cur_time   $ago_timetemp_file=/tmp/count_$time_dur_mins.tmpcount_by_name() {  # http  awk -F' |?' '{if((substr($4,2,20)>=start)&&(substr($4,2,20)<=end)){split($8,aa,"/");name[aa[2]]=aa[2];cnt[aa[2]]+=1}}END{for(i in name)print name[i],cnt[i]}' start=$ago_time end=$cur_time  $access_log >>$temp_file  # tcp  awk -F' |"' '{if((substr($2,2,20)>=start)&&(substr($2,2,20)<=end)){s[$10]=$10;cnt[$10]+=1}}END{for(i in s)print s[i],cnt[i]}' start=$ago_time end=$cur_time  $tcp_log |awk -F' |:' '{print $2,$3}' >>$temp_file}send_to_server() {  while read name count    do      #echo $name $count      #echo $sendkeys      if [[ "$sendkeys" =~ "$name" ]] ; then    echo $name $count          zabbix_sender -z 10.0.1.2 -s `hostname` -k $name -o $count      fi    done < $temp_file}count_by_namesend_to_server:>$temp_file

脚本运行输出及注意事项

  • 示例
./nginx_by_name.sh 10  #10分钟统计,假设如下统计结果system 676authorityManage 116cdcGraph 712favicon.ico 7cdcMessageQueue 76
  • 注意事项

    system为发送给zabbix server的Key,需要保持同创建item的Key一致;

    676为该Key的值;

    zabbix_sender中的hostname命令返回值必须同zabbix frontend中定义的主机中的Host name内的值保持一致

zabbix相关设置过程

创建模板

登录后,步骤:Configuration->Templates->Create template->输入模板免费精选名字大全”nginxbydir”保存 贴图略

创建项目

步骤:Configuration->Templates->点击 nginxbydir模板的Items->进入items设置->点击右上角的Create item ->输入Name、选择Type为Zabbix trapper、输入Key->依次创建所需的items

设置主机使用该模板

zabbix_sender测试

crontab设置

总结

至此,应该可以满足

存在问题

  • 考虑统计数据的时候某个目录访问次数为0的话,如果发送数据0给zabbix server
  • 考虑多个主机数据汇总的图形展示

www.dengb.comtruehttps://www.dengb.com/wzaq/1214211.htmlTechArticle按照http访问路径进行访问量的统计和展现的一次实践 按照http访问路径进行访问量的统计和展现的一次实践 摘要 笔者在通过web界面展现由…

—-想了解更多的网站安全相关处理怎么解决关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/webstt/websy/98930.html

(0)
上一篇 2020年4月26日
下一篇 2020年4月26日

精彩推荐