一次用bash+python分析NGINX日志的记录

目标:

按文章类型分别统计文章PV,并按PV倒序显示

分析:

从NGINX日志按URL特征可以取出所有文章页URL,并从URL中得到ID

拿ID到数据库中可查询出文章所属类型type

具体操作:

从日志中取出所有详情页URL特征片段,并排重统计每个文章的访问量,将结果另存为m1214.cnt

cat access.log | grep -o "GET http://www.***.com/content.* HTTP" | grep -Po "\d(/.*\.html)" | sort | uniq -c > m1214.cnt

对m1214.cnt每行前面的空格删除,并将每列之前用tab分隔

第一列:访问量

第二列:URL特征片段

cat m1214.cnt | awk ‘{print $1"\t"$2}‘ > m1214_1.cnt

按第一列倒序排列

cat m1214_1.cnt | sort -rn -k 1 > m1214.sort

使用python读取m1214.sort,将第二列特征片段转为文章ID,将到数据库查询type

#coding=utf-8
import os,sys
import MySQLdb
import re
import math

def c_decode(str):
	#URL片段解码为数据库ID,省略。
	return int(id)

if __name__ == "__main__":
	try:
		conn=MySQLdb.connect(‘***‘, ‘***‘, ‘***‘, ‘***‘)
		cur=conn.cursor()
		cur.execute("set names utf8")
	except MySQLdb.Error,e:
		print("Mysql Error")
		sys.exit()
	else:
		for line in open("./m1214.sort"):
			list = line.split("\t")
			pattern = re.compile(r‘\d\/(\d*\w*[0-9])\.html‘)
			match = pattern.match(list[1])
			if match:
				id = str(c_decode(match.group(1)))
				sql="SELECT id, title FROM content WHERE id = ‘"+id+"‘ AND type = 11";
				cur.execute(sql)
				result = cur.fetchone()
				if result:
					fpd = open(‘./type_11.sort‘, ‘a‘)
					fpd.write(list[0]+"\t"+"http://www.***.com/content/id/"+id+"\t"+result[1]+"\r\n")
					fpd.close()

结束:

方法比较笨拙,但用到了很多linux常用的命令和python编程,特此记录

时间: 2024-10-07 06:30:35

一次用bash+python分析NGINX日志的记录的相关文章

python分析nginx日志的ip,url,status

Python 脚本如下: #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'lvnian' #!/usr/bin env python # coding: utf-8 import MySQLdb as mysql import sys, os db = mysql.connect(user="root",passwd="[email protected]",db="intest",

python分析nginx日志

问题:分析nginx日志并找出访问最多10个IP地址的来源以及次数 使用python模块IP 使用方法以及下载地址:https://pypi.python.org/pypi/17MonIP 相关python脚本: #!/usr/bin/env python #coding:utf8 #Auth: lad #date:2016-12-05 #desc:parser the nginx's log,the head of 10  import sys reload(sys) sys.setdefau

python分析nginx日志的ip(来源)

Python 脚本如下: #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'gaogd' import MySQLdb as mysql import datetime import sys, os, urllib2, json db = mysql.connect(user="root",passwd="[email protected]",db="intest",host=&qu

python 正则分析nginx日志

有个需求要分析nginx日志,也懒得去研究logstach之类的开源工具,干脆直接写一个脚本,自己根据需求来实现: 先看日志格式:我们跟别人的不太一样,所以没办法了: 12.195.166.35 [10/May/2015:14:38:09 +0800] "list.xxxx.com" "GET /new/10:00/9.html?cat=0,0&sort=price_asc HTTP/1.0" 200 42164 "http://list.zhon

awk分析nginx日志中响应时间的方法

针对响应时间慢的问题,我们在nginx日志格式中增加响应时间,现在需要针对响应时间进行分析,查找出相对较慢的响应时间. 1.确认下日志文件格式 日志格式: log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_for

shell脚本分析nginx日志

第一版,比较粗糙,仅限于能用 正在写入的文件不能用tar进行压缩 --------压缩日志---------------------- 94 access.log 95 tar: access.log: file changed as we read it 96 #### 压缩日志失败 #### #!/bin/sh #分析nginx日志 DATE=`date '+%Y%m%d-%H%M'` ARCHIVE=/usr/log_bak/nginx_$DATE.tar.gz MESSAGE=/usr/

awstats分析nginx日志文件

awstats分析nginx日志文件,将生成的结果(为txt文件)保存在/var/www/awstats目录下,通过apche来 显示生成的结果. nginx的域名为:www.a.com:80 LogFile="/usr/local/mybin/nginx/logs/access.log"  #nginx的日志文件路径 DirData="/var/www/awstats/" #awstats生成结果的保存路径 SiteDomain="www.a.com&q

烂泥:利用awstats分析nginx日志

昨天把nginx的日志进行了切割,关于如何切割nginx日志,可以查看<烂泥:切割nginx日志>这篇文章. 今天打算分析下nginx日志,要分析nginx日志,我们可以通过shell脚本和第三方软件awstats进行分析,在此我们选择的是通过第三方软件awstats进行分析. 要使用awstats分析nginx日志,我们要安装awstats,而在安装awstats之前,我们需要先来介绍下awstats是什么? 一.awstats是什么 awstats是一个免费非常简洁而且强大有个性的基于Pe

ELK分析nginx日志

开源实时日志分析 ELK 平台能够完美的解决我们上述的问题, ELK 由 ElasticSearch . Logstash 和 Kiabana 三个开源工具组成.官方网站: https://www.elastic.co/products l   Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制, restful 风格接口,多数据源,自动搜索负载等. l   Logstash 是一个完全开源的工具,他可以对你的日志进行收集.分析,