首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

三分钟使用 Python 处理 Nginx 日志

有什么

有 14 台机器(意味着我们有14份日志)

一台可以连到这 14 太机器的机器(有 Python 2.6)

要做什么

获取 14 台机器上某时间段内的包含某特征的日志,再取出其中的特定内容

怎么做

1.使用 pssh 工具在 14 台机器执行 grep 命令获取包含某特征的日志

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

3.Python 解析 stdin(标准输入)将日期转化为 Python 中的日期格式,判断之后将符合条件的特定内容取出并输出到 stdout (标准输出)

开始

一. 使用 pssh 工具在 14 台机器执行 grep 命令获取包含某特征的日志

-l 的意思是使用哪个用户执行

-h 是指定主机列表文件(换行隔开)

-o 是指定执行结果保存的文件夹

最后是需要执行的命令

结果:

红色执行失败的的那两台机器未包含符合我们筛选条件的日志

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

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

Python 脚本

先交代一下我们分析的日志格式:

Nginx 日志格式(log_format)

为了方便查看,日志格式和日志中的空格都用换行代替

(实际的一条日志)

Python 脚本做了这么几件事:

接受 4 个参数,分别是起始的小时和分钟,备用

读取标准输入,去掉头尾无用的字符,循环处理每行日志

拆分每行日志

将时间字符串转为时间对象,根据 4 个参数判断小时和分钟(这里处理的比较粗糙,跨小时就没办法处理了,有兴趣的读者可以做的更精细一点)

时间条件符合,打出需要的部分(这里我需要的是, ,所以我们注:Python 的 print 其实就是标准输出

最后我们使用将 Python 脚本的标准输出重定向到文件

彩蛋,结果有了,发给领导?

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180126G0INZC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券