python刷新cdn_使用Python解析阿里云CDN日志
某些原因,一开始没有设计网站的统计模块
如今需要加上,只能借助于百度统计或者阿里云的cdn日志文件,阿里云cdn的日志文件是web的访问信息
log
[9/Mar/2016:00:00:16 +0800] 222.171.7.89 - 62113 "http://cloud.insta360.com/post/5e7b029d8ed7e3c4b23006a71bab73c8?e=true&m=true" "GET http://cloud.insta360.com/public/media/mp4/5e7b029d8ed7e3c4b23006a71bab73c8_960x480.mp4" 206 509 20516390 HIT "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H321 NewsApp/5.3.2" "video/mp4"
fileds
时间
访问IP
回源IP
responsetime
referer
method
访问URL
httpcode
requestsize
responsesize
cache命中状态
UA头
文件类型
re
# 将单条记录转换为Dict对象
def line2dict(line):
# Snippet, thanks to http://www.seehuhn.de/blog/52
parts = [
r'\[(?P.+)\]', # 时间 %t
r'(?P\S+)', # 访问IP %h
r'(?P\S+)', # 回源IP %h
r'(?P[0-9]+)', # 响应时间 %>s
r'"(?P.*)"', # Referer "%{Referer}i"
r'"(?P.+)"', # 请求地址 "%r"
r'(?P[0-9]+)', # Httpcode %>s
r'(?P\S+)', # 请求大小 %b (careful, can be '-')
r'(?P[0-9]+)', # 响应大小 size %>s
r'(?P\S+)', # 缓存状态 %s
r'"(?P.*)"', # user agent "%{User-agent}i"
r'"(?P.*)"', # content type "%{Content-type}i"
]
pattern = re.compile(r'\s+'.join(parts) + r'\s*\Z')
m = pattern.match(line)
res = m.groupdict()
return res
script
AliyunLog.py
# coding=utf-8
import fileinput
import re
import os
try:
import simplejson as json
except ImportError:
import json
# 读取输入文件并返回Dict对象
def readfile(file):
filecontent = {}
index = 0
statinfo = os.stat(file)
# just a guestimate. I believe a single entry contains atleast 150 chars
if statinfo.st_size < 150:
print "Not a valid log file. It does not have enough data"
else:
for line in fileinput.input(file):
index = index + 1
if line != "\n": # don't read newlines
filecontent[index] = line2dict(line)
fileinput.close()
return filecontent
# 将单条记录转换为Dict对象
def line2dict(line):
# Snippet, thanks to http://www.seehuhn.de/blog/52
parts = [
r'\[(?P.+)\]', # 时间 %t
r'(?P\S+)', # 访问IP %h
r'(?P\S+)', # 回源IP %h
r'(?P[0-9]+)', # 响应时间 %>s
r'"(?P.*)"', # Referer "%{Referer}i"
r'"(?P.+)"', # 请求地址 "%r"
r'(?P[0-9]+)', # Httpcode %>s
r'(?P\S+)', # 请求大小 %b (careful, can be '-')
r'(?P[0-9]+)', # 响应大小 size %>s
r'(?P\S+)', # 缓存状态 %s
r'"(?P.*)"', # user agent "%{User-agent}i"
r'"(?P.*)"', # content type "%{Content-type}i"
]
pattern = re.compile(r'\s+'.join(parts) + r'\s*\Z')
m = pattern.match(line)
res = m.groupdict()
return res
# 转换整个记录为Json对象
def toJson(file):
entries = readfile(file)
return json.JSONEncoder(indent=4).encode(entries)
main.py
#!/usr/bin/env python
# coding=utf-8
import sys
from AliyunLog import *
def main():
if len(sys.argv) < 3:
print "Incorrect Syntax. Usage: python main.py -f "
sys.exit(2)
elif sys.argv[1] != "-f":
print "Invalid switch '" + sys.argv[1] + "'"
sys.exit(2)
elif os.path.isfile(sys.argv[2]) == False:
print "File does not exist"
sys.exit(2)
print toJson(sys.argv[2])
if __name__ == "__main__":
main()
result
run script
python main.py -f data
terminal
{
"6432": {
"res_time": "1728",
"res_ip": "118.114.213.118",
"req_size": "768",
"req_url": "GET http://cloud.insta360.com/public/media/mp4/f9e4bf15d452440c2884b234854d089c_audio.mp3",
"origin_ip": "-",
"referer": "http://cloud.insta360.com/post/f9e4bf15d452440c2884b234854d089c?m=true&from=timeline&isappinstalled=0",
"content_type": "audio/mpeg",
"time": "9/Mar/2016:00:59:58 +0800",
"ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13C75 MicroMessenger/6.3.13 NetType/WIFI Language/zh_CN",
"http_code": "206",
"res_size": "5290084",
"cache_status": "HIT"
},
...
}
more
python刷新cdn_使用Python解析阿里云CDN日志相关推荐
- 通过Python脚本下载【来此加密的免费HTTPS SSL证书】并自动更新到服务器和阿里云CDN
异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章仅在CSDN.掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是 ...
- 【阿里云原生应用】使用阿里云FC函数计算完成阿里云CDN目录刷新
目录 需求背景 关于OSS静态网站托管 OSS静态网站托管之CDN缓存刷新问题 开始着手解决 CDN-刷新预热 预热刷新API SDK技术选型 基础流程 FC函数计算 创建函数 Python HTTP ...
- 通过AccessKey调用阿里云CDN接口刷新CDN资源案例
通过AccessKey远程调用阿里云CDN接口,快速实现自动化集成部署. CdnService.java package com.nfky.cdn; import com.aliyuncs.Defau ...
- 群辉默认DDNS功能解析阿里云-自定义服务商
前言 前不久买了个群辉NAS发现群辉DDNS不能解析阿里云,后来找了很多教程都是部署Docker或使用其他平台转发一下,然而这些平台还要注册,我就在想我自己可不可以实现不需要注册就可以使用的DDNS, ...
- 《机器学习在线 解析阿里云机器学习平台》读书笔记
原文 最近读了阿里的<大数据之路-阿里巴巴大数据实践>,对于其机器学习平台也蛮感兴趣,正好阿里出了本新书<解析阿里云机器学习平台>,顺便读了下,感触也不少,结合最近团队机器学习 ...
- 小麦盒子cdn_阿里云CDN入门使用配置
01. 概述 介绍: 阿里云CDN分发网络,它是替代传统以Web Server为中心的数据传输模式,将源站资源缓存到全国各地的边缘服务器.供用户就近获取,提高用户体验,降低源站压力. 阿里云CDN它分 ...
- 阿里云 CDN 问题排查
CDN 几种使用常见的架构 CDN诊断工具: 1.client 出口 IP,DNS 访问到的 CDN 节点 IP https://cdn.dns-detect.alicdn.com/https/doc ...
- 百度地图李东旻:中国地图行业最终只会剩下一两个玩家/阿里云CDN再降价25%
每一个企业级的人 都置顶了 中国软件网 中国软件网 为你带来最新鲜的行业干货 小编点评 应届生年薪30万 干几年年薪80万 还猎头主动找上门 AI行业这是得多缺人啊 想想自己几千块的工资 小编好想哭 ...
- 阿里云CDN(内容分发网络)学习笔记day01
阿里云CDN(内容分发网络)学习笔记day01 标签(空格分隔): linux Content Delivery Network 基于阿里云 文章目录 阿里云CDN(内容分发网络)学习笔记day01 ...
最新文章
- ant 获取当前url的参数
- Yoshua:深度学习AI迈向人类水平的挑战(附PPT下载)
- 网久环境服务启动命令
- SVN代码冲突解决方案小集合
- 题目1102:最小面积子矩阵
- Ubuntu下安装node canvas
- 随便聊一些编程开发工具
- SQL基础三(例子)
- 第一个python爬虫_Python爬虫01——第一个小爬虫
- 一层循环时间复杂度_数据结构与算法系列——时间、空间复杂度
- c 语言min max 归一化,归一化方法 Normalization Method
- 如何关闭Steam的弹出广告
- 计算机科学与技术U盘,速度竟差9倍!6款32GB USB3.0优盘横评
- Qt之简易版网络调试助手
- Sping AOP 源码解析(一、动态 AOP 自定义标签 aop:aspectj-autoproxy)
- android 消息提示机制
- linux里面的注释命令是啥,LINUX基础命令注释大全
- 下一代 Web 应用模型 — Progressive Web App
- C++:分数处理(约分、加减乘除、假分数输出)
- DSP28335 CAN模块使用