文档章节

常用APP等日志分割与nginx日志分析脚本合集

运维技术
 运维技术
发布于 2014/06/17 17:46
字数 1147
阅读 1132
收藏 5
点赞 0
评论 0

针对app,resin,tomcat日志分割脚本

appname:填写app(包含resin/tomcat)的名字;

key:过滤日志关键字,避免删除其他不必要的文件;

cleanday:日志保存的周期,缺省保存30天;

cleanlog:删除日志的记录保存的目录

核心命令: find命令去查找日志目录下含关键字的日志文件,然后利用for循环去删除$cleanday之前的日志文件

#!/bin/bash 
today=$(date +%Y_%m%d_%H%M)
#appname=tomcat
#logdir=/data/log/tomcat
#key=log
#key=catalina.out

appname=storm
logdir=/data/log/$appname
key=$appname
cleanday=30
cleanlog=/data/log/clean
filelist=$(find $logdir -type f -mtime +$cleanday |grep "$key" )


[[ -d $cleanlog  ]] || mkdir -p $cleanlog

echo "[Date:`date`]"
if [[ -z $filelist  ]];then
echo "$appname logfile have't the $cleanday days ago file! ---exit!"
echo "[ Date:`date` ] $appname logfile have't the $cleanday days ago file! ---exit!"  >> $cleanlog/delete.log
exit
fi



echo "Starting clean up the $appname is logfile for $cleanday days ago..."
echo "Need to clean up the following directory:"
echo "$filelist"

echo "[ Date:`date` ]"  >> $cleanlog/delete.log
echo "Starting clean up the $appname is logfile..."   >> $cleanlog/delete.log
echo "Need to clean up the following directory:" >> $cleanlog/delete.log
echo "$filelist"        >> $cleanlog/delete.log           




for i in $filelist
do

rm -f $i
#echo $i > /dev/null 2>&1 

done


filelist2=$(find $logdir -type f -mtime +$cleanday |grep "$key")
if [[ -z $filelist2 ]];then 
echo "$appname logfile have cleanup ---successful!"
echo "$appname logfile have cleanup ---successful!" >> $cleanlog/delete.log
else 
echo "$appname logfile have cleanup ---faild!"
echo "$appname logfile faild file:"
echo "$filelist2"
echo "$appname logfile have cleanup ---faild!" >> $cleanlog/delete.log
echo "$appname logfile faild file:"    >> $cleanlog/delete.log
echo "$filelist2"		>> $cleanlog/delete.log


fi

针对nginx日志分割脚本:

#!/bin/bash 
 path=/data/log/nginx
 nginx=` cat /usr/local/nginx/logs/nginx.pid `
 mv  $path/access.log    $path/access_`date +%Y%m%d`.log
 kill -USR1 $nginx       #使用USR1参数通知Nginx进程切换日志文

针对nginx日志分析脚本:

#!/bin/bash
#Date create 2013-10-23
#Author GaoMingHuang

log_path=/data/log/nginx/access.log
log_dir=/data/log/Analysis
domain="crm.baoxian.in"
email="530035210@qq.com"
maketime=`date +%Y-%m-%d" "%H":"%M`
logdate=`date -d "yesterday" +%Y-%m-%d`
dayone=`date +%d/%b/%Y`
now=`date +%Y_%m%d_%H%M`

date_start=$(date +%s)
total_visit=`wc -l ${log_path} | awk '{print $1}'`
total_bandwidth=`awk -v total=0 '{total+=$10}END{print total/1024/1024}' ${log_path}`
total_unique=`awk '{ip[$1]++}END{print asort(ip)}' ${log_path}`
ip_pv=`awk '{ip[$1]++}END{for (k in ip){print ip[k],k}}' ${log_path} | sort -rn |head -20`
url_num=`awk '{url[$7]++}END{for (k in url){print url[k],k}}' ${log_path} | sort -rn | head -20`
#referer=`awk -v domain=$domain '$11 !~ /http:\/\/[^/]*'"$domain"'/{url[$11]++}END{for (k in url){print url[k],k}}' ${log_path} | sort -rn `
notfound=`awk '$9 == 404 {url[$7]++}END{for (k in url){print url[k],k}}' ${log_path} | sort -rn | head -20`

#spider=`awk -F'"' '$6 ~ /Baiduspider/ {spider["baiduspider"]++} $6 ~ /Googlebot/ {spider["googlebot"]++}END{for (k in spider){print k,spider[k]}}'  ${log_path}`
#search=`awk -F'"' '$4 ~ /http:\/\/www\.baidu\.com/ {search["baidu_search"]++} $4 ~ /http:\/\/www\.google\.com/ {search["google_search"]++}END{for (k in search){print k,search[k]}}' ${log_path}`
#echo -e "概况\n报告生成时间:${maketime}\n总访问量:${total_visit}\n总带宽:${total_bandwidth}M\n独立访客:${total_unique}\n\n访问IP统计\n${ip_pv}\n\n访问url(统计前20个页面)\n${url_num}\n\n来源页面统计\n${referer}\n\n404统计(统计前20个页面)\n${notfound}\n\n蜘蛛统计\n${spider}\n\n搜索引擎来源统计\n${search}"  

#统计该ip在干些什么
max_ip=`awk '{ip[$1]++}END{for (k in ip){print ip[k],k}}' ${log_path} | sort -rn |head -1 |awk '{print $2}'`
ip_havi=`cat $log_path | grep "$max_ip" | awk '{print $7}'| sort |uniq -c |sort -nr |head -20`
#统计当天哪个时间段访问量最多
time_stats=`awk '{print $4}' ${log_path}  | grep "$dayone" |cut -c 14-18 |sort|uniq -c|sort -nr |head -n 10`

echo -e "概况\n报告生成时间:${maketime}\n总访问量:${total_visit}\n总带宽:${total_bandwidth}M\n独立访客:${total_unique}\n\n访问IP统计(统计前20个IP):\n${ip_pv}\n\n访问url最多(统计前20个页面)\n:${url_num}\n\n404统计(统计前20个页面):\n${notfound}\n\n当天访问次数最多的时间段如下:\n${time_stats}\n\n访问量最高的IP[${max_ip}]前20个最多的页面如下:\n${ip_havi} "

[[ -d $log_dir  ]] || mkdir -p $log_dir

echo -e "概况\n报告生成时间:${maketime}\n总访问量:${total_visit}\n总带宽:${total_bandwidth}M\n独立访客:${total_unique}\n\n访问IP统计(统计前20个IP):\n${ip_pv}\n\n访问url最多(统计前20个页面)
\n:${url_num}\n\n404统计(统计前20个页面):\n${notfound}\n\n当天访问次数最多的时间段如下:\n${time_stats}\n\n访问量最高的IP[${max_ip}]前20个最多的页面如下:\n${ip_havi} " > $log_dir/analysis_access$now.log
date_end=$(date +%s)
time_take=$(($date_end-$date_start))
take_time=$(($time_take/60))

echo "access统计脚本分析日志花费了: [start:$date_start end:$date_end] $time_take"s"  $take_time"min""
echo "access统计脚本分析日志花费了: [start:$date_start end:$date_end] $time_take"s"  $take_time"min"" >> $log_dir/analysis_access$now.log

针对nginx日志分析脚本结果展现如下:

  




© 著作权归作者所有

共有 人打赏支持
运维技术
粉丝 95
博文 95
码字总数 101333
作品 1
广州
部门经理
公有云镜像模版的创建

系统层级模版约束 序号 分类 约束和规定 1 操作系统分区 分区比例保持现有生产分区比例不变 总分区默认初始大小 100G 【/: 5G】 【/data:60G】 【/home:8G】 【/var:8G】 【/usr: 16G】...

运维技术 ⋅ 2014/04/08 ⋅ 0

nginx切割日志脚本(python)

因为以前没有做nginx日志分割,有时候想看日志的时候总是发现有十几G的甚至上百G的日志文件,于是就想使用python写个nginx日志分割(当然你也可以使用shell来完成都是很简单) 需求: 1.按照...

ImPoorWretch ⋅ 04/29 ⋅ 0

Nginx日志分割Shell脚本,按天分类存储并删除超过7天的日志

如果使用LNMP网站环境的话,默认nginx只会生成一个访问日志,并且是在每天的积累,日志文件会变的非常大,如果需要做一下日志的分析,无论是使用脚本分析,还是把日志下载本地分析,都不太方...

江边望海 ⋅ 2016/11/19 ⋅ 2

nginx日志分割处理以及分析

在很多时候,我们会非常关注网站的访问量,比如网站的日PV是多少、网站某个功能上线之后点击量是多少,像这些东西都是需要从web容器中的访问日志统计出来的,下面我们看一下如何在nginx中统计...

独钓渔 ⋅ 2015/08/26 ⋅ 0

轻量级HTTP服务器Nginx(常用配置实例)

Nginx作为一个HTTP服务器,在功能实现方面和性能方面都表现得非常卓越,完全可以与Apache相媲美,几乎可以实现Apache的所有功能,下面就介绍一些Nginx常用的配置实例,具体包含虚拟主机配置、...

china008 ⋅ 2015/12/29 ⋅ 0

nginx在不重启进程的情况下,分割nginx日志,每天一个日志

摘要:由于nginx的日志本身只是支持按照server_name或者大小进行划分,所以对于有的站长,要对应的网站一天一个日志分析就不方便,固有了分割nginx日志的需求。 实现原理: 实现步骤: 一.从...

梨子swl ⋅ 2016/12/21 ⋅ 0

每天自动分割Nginx日志文件

资料来源:https://www.centos.bz/2011/03/split-nginx-logfile-eveyday/ Nginx产生的日志都是存在一个文件,随着网站运行时间越长,日志文件的大小也在不断增长,这对我们想分析当天日志非常...

hiqj ⋅ 2015/08/05 ⋅ 0

微服务架构—链路追踪(Nginx篇)

阅读提示:本文不提供链路追踪的完整解决方案,只提供Nginx层对链路追踪的支持方案! 1 背景介绍 微服务的诞生,解决了传统单体应用的很多问题,如可维护性差、扩展性差和灵活性差等问题(粗...

李景枫 ⋅ 04/06 ⋅ 0

大数据认识篇

大数据认识篇 什么是大数据,为什么大数据,咱不说。 处理大数据。 从一个简单的需求说起: 1、 假设公司有100个域名,各个域名下有更多的子域名,下文子域名也叫做域名。 每个域名对应的ngi...

vasks ⋅ 2016/01/27 ⋅ 0

运维管理平台功能模块设计

我一直在ansible和saltstack之间犹豫不绝,我甚至只想用paramiko模块,其实在我犹豫的那些时间也够了,这真是一大败笔。每一次离职都是对自己的一次检讨。。。。。 demo功能首页展示; 流程图...

落叶刀 ⋅ 2016/06/21 ⋅ 4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Android JNI 读写Bitmap的方法

Java层创建Bitmap,通过JNI将Bitmap传到C/C++进行处理 Java部分 public static native boolean greenBitmap(Bitmap bitmap); C/C++部分 JNIEXPORT jboolean JNICALL Java_com_test_Test_gree......

国仔饼 ⋅ 20分钟前 ⋅ 0

一次性让你懂async/await,解决回调地狱

什么是async? 欢迎留言讨论 async 函数是 Generator 函数的语法糖。使用 关键字 async 来表示,在函数内部使用 await 来表示异步。相较于 Generator,async 函数的改进在于下面四点: 内置执...

阿K1225 ⋅ 20分钟前 ⋅ 0

angular常用命令

.下载更新操作 1.利用npm下载angular的命令行工具AngularCLI: npm install -g @angular/cli 2.下载jquery: npm install --save jquery 3.更新npm: npm i -g npm 4.更新angular: ng update ......

消散了的诗意 ⋅ 23分钟前 ⋅ 0

window.print 页面打印

定义和用法 print() 方法用于打印当前窗口的内容。 语法 window.print(); window.print() 实际上,是浏览器打印功能菜单的一种程序调用。与点击打印功能菜单一样,不能精确分页,不能设置纸型...

初学者的优化 ⋅ 23分钟前 ⋅ 0

魔兽世界 7.0版本上 PVE装备全攻略

  T套 因为大家应该都会打穿副本的所以具体是哪个boss我就不说了。   T1: 所有套装都在【熔火之心】出   T2: 头原来是在【奥妮克希亚的巢穴】改到黑翼之巢的奈法利安了,腿是在【熔火之...

wangchen1999 ⋅ 24分钟前 ⋅ 0

java.math.BigDecimal使用小结

原文地址 java.math.BigDecimal使用小结 divide方法 使用BigDecimal.divide方法时一定要考虑: 除数是否为0 商是否是无限小数 正确的使用方式 判断除数是否为0,是0做另外的处理逻辑 调用除法...

666B ⋅ 27分钟前 ⋅ 0

关于qstring转char乱码问题。

if (OpenClipboard(NULL)) { HGLOBAL hgClip; EmptyClipboard(); QByteArray byay = FValue.toLocal8Bit(); //转latin编码 char *bochsrc_line = byay.data(); hgClip = GlobalAlloc(GMEM_DD......

backtrackx ⋅ 27分钟前 ⋅ 0

了解SSH加密和连接过程

介绍 SSH或安全shell是安全协议,也是安全管理远程服务器的最常用方式。通过使用多种加密技术,SSH提供了一种机制,用于在双方之间建立加密安全连接,对彼此进行身份验证,以及来回传递命令和...

吴伟祥 ⋅ 33分钟前 ⋅ 0

微信小程序

小程序的全局配置app.json 微信小程序的全局配置保存在app.json文件中。开发者通过使用app.json来配置页面文件(pages)的路径、窗口(window)表现、设定网络超时时间值(networkTimeout)以...

上官清偌 ⋅ 36分钟前 ⋅ 0

【转】百度坐标坐标系之间的转换(JS版代码)

/** * Created by Wandergis on 2015/7/8. * 提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换 *///定义一些常量var x_PI = 3.1415926535897932...

HAVENT ⋅ 38分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部