Python实现获取nginx服务器ip及流量统计信息功能示例


Posted in Python onMay 18, 2018

本文实例讲述了Python实现获取nginx服务器ip及流量统计信息功能。分享给大家供大家参考,具体如下:

#!/usr/bin/python
#coding=utf8
log_file = "/usr/local/nginx/logs/access.log"
with open(log_file) as f:
  contexts = f.readlines()
# define ip dict###
ip = {}   # key为ip信息,value为ip数量(若重复则只增加数量)
flow = {}  # key为ip信息,value为流量总和
sum = 0
for line in contexts:
  # count row size of flow
  size = line.split()[9]
  # print ip
  ip_attr = line.split()[0]
  # count total size of flow
  sum = int(size) + sum
  if ip_attr in ip.keys():  # if ip repeated,如果ip重复就将ip数量加一,而流量继续叠加
  # count of ip plus 1
    ip[ip_attr] = ip[ip_attr] + 1
  # size of flow plus size
    flow[ip_attr] = flow[ip_attr] + int(size)
  else:
  # if ip not repeated
  # define initial values of count of ip and size of flow
    ip[ip_attr] = 1
    flow[ip_attr] = int(size)
print(ip)
print(flow)
print(sum/1024/1024)

现在有nginx的访问日志:

[root@weblogic ~]# cat access.log 
192.168.223.1 - - [18/Jul/2017:10:21:25 +0800] "GET /favicon.ico HTTP/1.1" 192.168.223.136:8080 404 24 "http://192.168.223.136:8080/proxy_path/index.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "-"
192.168.223.136 "192.168.223.1" - - [17/Jul/2017:17:06:44 +0800] "GET /index.html HTTP/1.0" "192.168.223.136" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" "192.168.223.1"
192.168.223.1 - - [18/Jul/2017:10:30:12 +0800] "GET /proxy_path/index.html HTTP/1.1" 192.168.223.136:8080 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "-"
192.168.223.136 "192.168.223.1" - - [18/Jul/2017:10:30:12 +0800] "GET /index.html HTTP/1.0" "192.168.223.137" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "192.168.223.1"
192.168.223.1 - - [18/Jul/2017:10:38:38 +0800] "GET /proxy_path/index.html HTTP/1.1" 192.168.223.136:8080 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "-"
192.168.223.136 "192.168.223.1" - - [18/Jul/2017:10:38:38 +0800] "GET /index.html HTTP/1.0" "192.168.223.136:80" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "192.168.223.1"
192.168.223.1 - - [18/Jul/2017:10:45:07 +0800] "GET /proxy_path/index.html HTTP/1.1" 192.168.223.136:8080 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "-"
192.168.223.136 "192.168.223.1" - - [18/Jul/2017:10:45:07 +0800] "GET /index.html HTTP/1.0" "192.168.223.136:80" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "192.168.223.1"
192.168.223.1 - - [18/Jul/2017:10:51:25 +0800] "GET /proxy_path/index.html HTTP/1.1" 192.168.223.136:8080 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "-"
192.168.223.136 "192.168.223.1" - - [18/Jul/2017:10:51:25 +0800] "GET /index.html HTTP/1.0" "192.168.223.136:80" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" "192.168.223.1"

利用python将nginx的ip进行统计

思路:将文件内容一行一行都出来,然后进行字符串strip().split(),得到一个列表,列表的第一个元素就是ip的内容

初始化一个空字典,用key表示ip内容,value表示该ip的个数,如果ip重复了,则将value进行增加:

[root@weblogic ~]# cat nginx.py 
#!/usr/bin/python
#coding=utf8
log_file = "/root/access.log"
ip = {}
with open(log_file) as f:
  for i in f.readlines():
    print i.strip().split()[0]
    ip_attr = i.strip().split()[0] 
    if ip_attr in ip.keys():      # 如果ip存在于字典中,则将该ip的value也就是个数进行增加
      ip[ip_attr] = ip[ip_attr] + 1
    else:
      ip[ip_attr] = 1
print ip

获取执行结果:

[root@weblogic ~]# python nginx.py 
192.168.223.1
192.168.223.136
192.168.223.1
192.168.223.136
192.168.223.1
192.168.223.136
192.168.223.1
192.168.223.136
192.168.223.1
192.168.223.136
{'192.168.223.1': 5, '192.168.223.136': 5}

更多关于Python相关内容可查看本站专题:《Python日志操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现udp数据报传输的方法
Sep 26 Python
Python的Django框架中TEMPLATES项的设置教程
May 29 Python
Python实现将DOC文档转换为PDF的方法
Jul 25 Python
Python中实现最小二乘法思路及实现代码
Jan 04 Python
python 剪切移动文件的实现代码
Aug 02 Python
将python图片转为二进制文本的实例
Jan 24 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
python中的线程threading.Thread()使用详解
Dec 17 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
python多维数组分位数的求取方式
Mar 03 Python
Python获取excel内容及相关操作代码实例
Aug 10 Python
python3代码输出嵌套式对象实例详解
Dec 03 Python
解决Pycharm无法import自己安装的第三方module问题
May 18 #Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 #Python
PyCharm安装第三方库如Requests的图文教程
May 18 #Python
浅谈python中requests模块导入的问题
May 18 #Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 #Python
对python中使用requests模块参数编码的不同处理方法
May 18 #Python
Python3.6连接Oracle数据库的方法详解
May 18 #Python
You might like
mysql数据库差异比较的PHP代码
2012/02/05 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
php 实现进制相互转换
2016/04/07 PHP
php实现websocket实时消息推送
2018/03/30 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
原生js封装添加class,删除class的实例
2017/11/06 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
win7安装python生成随机数代码分享
2013/12/27 Python
python实现在pickling的时候压缩的方法
2014/09/25 Python
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
python3 简单实现组合设计模式
2020/07/02 Python
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
人事科岗位职责范本
2014/03/02 职场文书
市场营销方案范文
2014/03/11 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
本科生自荐信
2014/06/18 职场文书
物流专业求职信
2014/06/30 职场文书
大学活动总结模板
2014/07/10 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
公安个人四风问题对照检查及整改措施
2014/10/28 职场文书
工商局个人工作总结
2015/03/03 职场文书
Nginx HTTP跳转至HTTPS
2022/05/15 Servers