作家
登录

五分钟系列:Python 处理Nginx日志

作者: 来源: 2017-12-20 11:05:59 阅读 我要评论

【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?

  1. #!/usr/bin/python 
  2. import sys 
  3. import time 
  4.  
  5. format = '%Y-%m-%dT%H:%M:%S+08:00' 
  6.  
  7. h_start = int(sys.argv[1]) 
  8. h_end = int(sys.argv[2]) 
  9. m_start = int(sys.argv[3]) 
  10. m_end = int(sys.argv[4]) 
  11.  
  12. stdin = sys.stdin.read().strip() 
  13. line_list = stdin.split('\n'
  14. for item in line_list: 
  15.     infos = item.split() 
  16.     time_object = time.strptime(infos[0], format) 
  17.     if h_start <= time_object.tm_hour <= h_end \ 
  18. and m_start <= time_object.tm_min <= m_end: 
  19.         print infos[8], infos[3], infos[4] 

有什么

  • 有 14 台机械(意味着我们有 14 份日记)
  • 一台可以连到这 14 太机械的机械(有Python 2.6)

要做什么

  • 获取 14 台机械上某时光段内的包含某特点的日记,再掏出个中的特定内容

怎么做

  1. 应用 pssh 对象在 14 台机械履行 grep 敕令获取包含某特点的日记
  2. 将 14 份日记作为标准输入传给 Python 脚本
  3. Python 解析 stdin(标准输入),将日期转化为 Python 中的日期格局,断定之后将相符前提的特定内容掏出场输出到 stdout(标准输出)

开端

  1. # 安装 pssh 对象 
  2. pip install pssh 
  3. # 应用 pssh 对象 
  4. pssh -l root -h RS_bj_14.txt -o result "grep some_tag /data/logs/api.log" 
  • -l 的意思是应用哪个用户履行
  • -h 是指定主机列表文件(换行隔开)
  • -o 是指定履行结不雅保存的文件夹
  • 最后是须要履行的敕令

结不雅:

红色履行掉败的的那两台机械未包含相符我们筛选前提的日记

二. 将 14 份日记作为标准输入传给 Python 脚本


14 份日记作为标准输入传给 Python 脚本:

  1. cat result/* | ./ab-result-format.py 15 15 00 10 > result_we_want.log 

Python 脚本

先交卸一下我们分析的日记格局:

Nginx 日记格局(log_format)

为了便利查看,日记格局和日记中的空格都用换行代替

  1. $time_iso8601 
  2. $remote_addr 
  3. $host 
  4. $request_time  
  5. $upstream_response_time  
  6. $request  
  7. $status  
  8. $upstream_addr 
  9. $session_id; 

(实际的一条日记)

一. 应用 pssh 对象在 14 台机械履行 grep 敕令获取包含某特点的日记


  推荐阅读

  Python爬虫实战:抓取并保存百度云资源

【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?寻找并分析百度云的转存api可以看到上图中抓到了一个带有 “transfer” 单词典 post 请求,这就是我们要找的转>>>详细阅读


本文标题:五分钟系列:Python 处理Nginx日志

地址:http://www.17bianji.com/lsqh/39976.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)