#!/usr/bin/python
#coding=utf-8
import hashlib
import os,sys,re,time,socket,commands
import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
log_file="/data/logs/backup/www.log.slow"
host=str(socket.gethostname().strip())
fuhao=os.linesep
#分析一周的php慢日志
def LogPool():
dd=time.strftime('%Y%m%d')
www_log_slow_pool=open('/tmp/www_log_slow00.txt','w')
for num in range(1,8):
zz=int(dd)-int(num)
print '%s-%d' %(log_file,zz)
log_files=open('%s-%d' %(log_file,zz))
for a in log_files:
www_log_slow_pool.write(a)
log_files.close()
www_log_slow_pool.close()
def LogClear():
os.system("cat /tmp/www_log_slow00.txt |grep -v runtime|grep -v 'pool www'|grep -v unknown|grep -v dump |awk '{print $3}' >/tmp/www_log_slow01.txt")
os.system("sed -i '1'd /tmp/www_log_slow01.txt")
f=open('/tmp/www_log_slow01.txt')
file=open('/tmp/www_log_slow02.txt','w')
for line in f:
aa=line.strip()
len_char=len(aa)
if len_char != 0:
file.write(aa)
else:
file.write(fuhao)
continue
f.close()
file.close()
commands.getstatusoutput("cat /tmp/www_log_slow02.txt |sort |uniq -c|sort -rn|head -n 20 >/tmp/www_log_slow03.txt")
file01=open('/tmp/www_log_slow03.txt')
phpslow_name='/tmp/php_slow.txt'
file02=open(phpslow_name,'w')
for xx in file01:
url=re.split(r"/data/",xx)
row=re.findall(r"/data/",xx)
sum=int(len(row))
for i in xrange(sum):
mm=str(row[i])+url[i]
if i == 0:
mm="以下慢日志重复次数:"+url[i]
file02.write(mm)
file02.write(fuhao)
file01.close()
file02.close()
def LogRemove():
for logsum in range(4):
rmfile='/tmp/www_log_slow0%d.txt'%logsum
os.remove(rmfile)
def SendMail():
mail_host='smtp.ftxjoy.com'
mail_user='mayi@163.com'
mail_pass='*******'
sender='mayi@163.com'
rece=['ceshi@163.com','yanfa@163.com']
file=open('/tmp/php_slow.txt')
msg=''
for line in file:
msg = msg+line
file.close()
message=MIMEText(msg)
message['subject']=Header("php_slow(182.5)",'utf-8')
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25)
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, rece, message.as_string())
print "邮件发送成功"
except smtplib.SMTPException:
print "Error: 无法发送邮件"
LogPool()
LogClear()
LogRemove()
SendMail()
文章来源:智云一二三科技
文章标题:PHP慢日志分析生成报告「python脚本」
文章地址:https://www.zhihuclub.com/150964.shtml