shell脚本对apache日志分割并统计保存到数据库
来源:互联网 发布:均不是c语言关键字 编辑:程序博客网 时间:2024/06/07 10:04
版权属于: Postbird - There I am , in the world more exciting!
原文地址: http://www.ptbird.cn/apache-log-cut-count-to-mysql.html
转载时必须以链接形式注明原始出处及本声明。
apache的日志主要是access_log和error_log,定时有效的将日志进行分割和统计能够减少access_log的大小以及拿到对自己的有用的信息。
一、目的
对access_log进行分割,把每天的数据单独另存为,同时统计每个ip的访问次数(根据实际的需求进行更改)
二、实现
日志拆分的依据有两种:
1、分割主要是每一天的数据进行分割,比如在凌晨0.00,通过date yesterday生成昨天的时间,把分割出来的都作为昨天
2、在access_log中匹配时间,那就得一行一行的处理,比较麻烦,效率低下。
主要如下:
1、找到apache的日志文件路径
centos下一般有两种:/var/log/httpd/access_log 或者 /usr/local/apache2/logs/access_log (源代码安装的)
2、移动另存当前日志文件(原来目录下此时被删除)
3、恢复原来目录的日志文件
挂起一次apache即可。
pkill -1 httpd
4、对日志进行分割处理并保存临时文件
本例中保存的样式为 192.168.229.1:40
冒号链接是为了后面再次分割使用
5、循环处理临时文件的每一行
根据冒号分割每一行得到ip和访问次数。
6、保存到数据库中。
三、脚本
#!/bin/bash#logcut.shyesterday=`date -d yesterday +%Y%m%d`srclog="/var/log/httpd/access_log"# httpd 日志文件dstlog="/mnt/log/httpd/logsbak/access_${yesterday}.log"# 目标地址mv $srclog $dstlogpkill -1 httpd#需要挂起一次 否则access_log不会自动生成tmpfile=$$.txt#对日志进行处理`cat /mnt/log/httpd/logsbak/access_${yesterday}.log |awk '{print $1}' |sort |uniq -c |awk '{print $2":"$1}'>>${tmpfile}`#数据库mysql='mysql -uroot -p123456 -Dtest'#对临时文件处理for item in `cat $tmpfile`doip=`echo ${item}|awk -F: '{print $1}'`num=`echo ${item}|awk -F: '{print $2}'`sql="insert into log_count(date,ip,num) values('${yesterday}','${ip}','${num}')"$mysql -e "$sql"done#删除文件rm -f $tmpfile#验证一下#sql="select * from log_count"#$mysql -e "$sql"
三、效果
0 0
- shell脚本对apache日志分割并统计保存到数据库
- vb 图片分割并保存到数据库
- Shell脚本分割Nginx日志,并定期清理
- Shell脚本分割Nginx日志,并定期清理[不重启nginx]
- shell 脚本nginx日志分割
- shell脚本如何获取当前路径并保存到变量
- shell脚本日志统计笔记
- Linux--apache日志分割脚本
- shell脚本控制nginx日志文件分割
- shell 记录apache status并自动更新到数据库
- 简单的 Apache 日志统计脚本
- 常用的shell日志统计脚本
- log4j 日志保存到数据库
- linux shell脚本 取得外网IP并保存到文件
- Shell脚本自动备份与删除多台服务器apache日志到磁盘柜
- 使用Shell对apache日志进行分析
- 通过awk对日志文件每天统计并入库到MySQL的过程讲解
- [Linux] apache 日志分割脚本 [ 信息分享,知识分享 ]
- Windows 64位 tensorflow、keras、tensorlayer搭建
- 面试常见问题
- Codeforces 176B【计数DP】
- [CF570D]Tree Requests
- Touch---各参数含义
- shell脚本对apache日志分割并统计保存到数据库
- 2016广东工业大学新生杯决赛网络同步赛暨全国新生邀请赛
- WebStorm 2016.3.1 版本激活方法
- Hrbust 2185 Coin【分类讨论】水题
- 【玩转SQLite系列】(一)初识SQLite,重拾sql语句
- java面试题总结(1)
- dubbo框架搭建
- Fragment与Fragment、Activity通信的四种方式(三)
- 第14周项目1-(2)验证分块查找算法