北京SEO

linux中shell脚本统计apache日志中页面访问量

2019/10/10/17:46:14  阅读:3185  来源:谷歌SEO算法  标签: 自媒体

apache日志是可以记录到网站的各种访问与状态了,那么我们生成的日志一个个查看是非常的困难的,下面一起来看一个中shell脚本统计apache日志中页面访问量的例子,希望文章可以帮助到大家.

需求:在程序中有两个页面,用于某种用途,现需要统计这两个页面在每分钟内的访问量,包括总访问次数,成功次数(状态码200),失败次数,然后写入到mysql中.

mysql字段:id(自增长)、time(实际统计时间)、year、month、day、hour、visit(总访问量)、success、fail、target(目标).

  1. #!/bin/bash
  2. #Desc:analysisapachelogforwitchpageswithoneminutes
  3. #installbcpackageswithyuminstall-ybcifnotfoundbccommand
  4. logdir=/var/log/httpd/80/access
  5. logfile=$logdir/$(date+%Y%m%d)_access_log
  6. month=$(date|awk'{print$2}')
  7. day=$(date|awk'{print$3}')
  8. year=$(date|awk'{print$6}')
  9. hour=$(date|awk'{print$4}'|cut-d:-f1)
  10. min=$(date|awk'{print$4}'|cut-d:-f2)
  11. #getcurrentsystemtimesto/tmp
  12. echo$month>/tmp/month.txt
  13. echo$day>/tmp/day.txt
  14. echo$year>/tmp/year.txt
  15. echo$hour>/tmp/hour.txt
  16. echo$min>/tmp/min.txt
  17. #computerunminute
  18. if["$min"=="00"];then
  19. RUN_MINUTE=59
  20. else
  21. if["$(awk-F'''{print$(NF-1)}'/tmp/min.txt)"=="0"];then
  22. echo$(awk-F'''{print$NF}'/tmp/min.txt)>/tmp/min2.txt
  23. echo$(cat/tmp/min2.txt)-1|bc>/tmp/run_minute.txt
  24. if["cat/tmp/run_minute.txt"=="0"];then
  25. RUN_MINUTE=00
  26. else
  27. RUN_MINUTE=0$(cat/tmp/run_minute.txt)
  28. fi
  29. else
  30. echo$(cat/tmp/min.txt)-1|bc>/tmp/run_minute.txt
  31. if["$(cat/tmp/run_minute.txt)"=="9"];then
  32. RUN_MINUTE=09
  33. else
  34. RUN_MINUTE=$(cat/tmp/run_minute.txt)
  35. fi
  36. fi
  37. fi
  38. #computerunhour
  39. if["$hour"=="00"];then
  40. if["$min"=="00"];then
  41. RUN_HOUR=23
  42. else
  43. RUN_HOUR=$hour
  44. fi
  45. else
  46. if["$min"=="00"];then
  47. if["$(awk-F'''{print$(NF-1)}'/tmp/hour.txt)"=="0"];then
  48. echo$(awk-F'''{print$NF}'/tmp/hour.txt)>/tmp/hour2.txt
  49. echo$(cat/tmp/hour2.txt)-1|bc>/tmp/run_hour.txt
  50. if["$(cat/tmp/run_hour.txt)"=="0"];then
  51. RUN_HOUR=00
  52. else
  53. RUN_HOUR=0$(cat/tmp/run_hour.txt)
  54. fi
  55. else
  56. echo$(cat/tmp/hour.txt)-1|bc>/tmp/run_hour.txt
  57. RUN_HOUR=$(cat/tmp/run_hour.txt)
  58. fi
  59. else
  60. RUN_HOUR=$hour
  61. fi
  62. fi
  63. #getrunlogfile
  64. if["$hour"=="00"];then
  65. if["$min"=="00"];then
  66. RUN_LOG=$logdir/$(date-dlast-day+%Y%m%d_access_log)
  67. else
  68. RUN_LOG=$logfile
  69. fi
  70. else
  71. RUN_LOG=$logfile
  72. fi
  73. #beginloganalysis
  74. p1=cnbpush.php
  75. p2=jlpush.php
  76. if["$hour"=="00"];then
  77. if["$min"=="00"];then
  78. INSERT_TIME=$(date-d'-1hours'+%Y%m%d|cut-c3-8)$RUN_HOUR$RUN_MINUTE
  79. else
  80. INSERT_TIME=$(date+%Y%m%d|cut-c3-8)$RUN_HOUR$RUN_MINUTE
  81. fi
  82. else
  83. INSERT_TIME=$(date+%Y%m%d|cut-c3-8)$RUN_HOUR$RUN_MINUTE
  84. fi
  85. echo$INSERT_TIME|cut-c1-2>/tmp/IY
  86. echo$INSERT_TIME|cut-c3-4>/tmp/IM
  87. echo$INSERT_TIME|cut-c5-6>/tmp/ID
  88. echo$INSERT_TIME|cut-c7-8>/tmp/IH
  89. INSERT_YEAR=20$(cat/tmp/IY)
  90. INSERT_MONTH=$(cat/tmp/IM)
  91. INSERT_DAY=$(cat/tmp/ID)
  92. INSERT_HOUR=$(cat/tmp/IH)
  93. CN_TOTAL_ACCESS=$(cat$RUN_LOG|grep"$p1"|awk-F':''{print$2$3}'|grep"$RUN_HOUR$RUN_MINUTE"|wc-l)
  94. CN_SUCC_ACCESS=$(cat$RUN_LOG|grep"$p1"|grep"200"|awk-F':''{print$2$3}'|grep"$RUN_HOUR$RUN_MINUTE"|wc-l)
  95. CN_FAIL_ACCESS=$(cat$RUN_LOG|grep"$p1"|grep-v"200"|awk-F':''{print$2$3}'|grep"$RUN_HOUR$RUN_MINUTE"|wc-l)
  96. JL_TOTAL_ACCESS=$(cat$RUN_LOG|grep"$p2"|awk-F':''{print$2$3}'|grep"$RUN_HOUR$RUN_MINUTE"|wc-l)
  97. JL_SUCC_ACCESS=$(cat$RUN_LOG|grep"$p2"|grep"200"|awk-F':''{print$2$3}'|grep"$RUN_HOUR$RUN_MINUTE"|wc-l)
  98. JL_FAIL_ACCESS=$(cat$RUN_LOG|grep"$p2"|grep-v"200"|awk-F':''{print$2$3}'|grep"$RUN_HOUR$RUN_MINUTE"|wc-l)
  99. DB_NAME=shell_log
  100. DB_USER=root
  101. DB_PASS=root
  102. DB_TAB=log
  103. mysql-u$DB_USER-p$DB_PASS$DB_NAME-e"INSERTINTO$DB_TAB(time,year,month,day,hour,visit,success,fail,target)VALUES('$INSERT_TIME','$INSERT_YEAR','$INSERT_MONTH','$INSERT_DAY','$INSERT_HOUR','$CN_TOTAL_ACCESS','$CN_SUCC_ACCESS','$CN_FAIL_ACCESS','cnbpush');"
  104. mysql-u$DB_USER-p$DB_PASS$DB_NAME-e"INSERTINTO$DB_TAB(time,year,month,day,hour,visit,success,fail,target)VALUES('$INSERT_TIME','$INSERT_YEAR','$INSERT_MONTH','$INSERT_DAY','$INSERT_HOUR','$JL_TOTAL_ACCESS','$JL_SUCC_ACCESS','$JL_FAIL_ACCESS','jlpush');"--phpfensi.com
  105. exit

放到任务计划,一分钟一执行.

广告内容

linux中shell脚本统计apache日志中页面访问量 linux中shell脚本统计apache日志中页面访问量 linux中shell脚本统计apache日志中页面访问量

相关阅读

热门评论

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法