本文实例讲述了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实现获取nginx服务器ip及流量统计信息功能示例

本文地址: http://www.cppcns.com/jiaoben/python/228442.html

python流量实时统计_Python实现获取nginx服务器ip及流量统计信息功能示例相关推荐

  1. 学python电脑硬件_Python实现的读取电脑硬件信息功能示例

    本文实例讲述了Python实现的读取电脑硬件信息功能.分享给大家供大家参考,具体如下: 上学那会,老师让我用java获取电脑硬件信息,CPU, 硬盘,MAC等,那个时候感觉搞了好久...... 今天, ...

  2. 微信微网站的服务器ip地址查询,微信开发之(三)获取微信服务器IP地址

    官方文档解析:获取微信服务器IP地址html 在上面的官方文档中咱们能够直接在最浏览器里面进行测试例如:json 是否必须 说明 access_token 是 公众号的access_token C#代 ...

  3. 微信公众平台—— 获取微信服务器IP地址

    微信公众平台-- 获取微信服务器IP地址 const ServerIpUrl = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?&acces ...

  4. python获取电脑硬件信息_Python实现的读取电脑硬件信息功能示例

    本文实例讲述了Python实现的读取电脑硬件信息功能.分享给大家供大家参考,具体如下: 上学那会,老师让我用java获取电脑硬件信息,CPU, 硬盘,MAC等,那个时候感觉搞了好久...... 今天, ...

  5. python获取手机号码归属地_Python批量获取并保存手机号归属地和运营商的示例

    从Excel读取一组手机号码,批量查询该手机号码的运营商和归属地,并将其追加到该记录的末尾. import requests import json import xlrd from xlutils. ...

  6. python自动获取号码归属地_Python批量获取并保存手机号归属地和运营商的示例

    从Excel读取一组手机号码,批量查询该手机号码的运营商和归属地,并将其追加到该记录的末尾.SAb免费资源网 import requests import json import xlrd from ...

  7. 通过python获取自己的手机话费_Python批量获取并保存手机号归属地和运营商的示例...

    从Excel读取一组手机号码,批量查询该手机号码的运营商和归属地,并将其追加到该记录的末尾. import requests import json import xlrd from xlutils. ...

  8. python netifaces模块 获取本机IP,网关等信息

    简介 在Linux系统中,我们可以通过ifconfig,route等shell命令来查看系统接口配置,网关和路由等信息.通过shell的正则表达式功能,通过系列复杂操作,我们可以从字符串中提取出相关的 ...

  9. 淘宝私域流量有哪些?怎么获取淘宝私域流量?

    现在淘宝越来越注重内容营销和私域流量,那么你知道淘宝的私域能有什么吗?以及如何获得淘宝站内私域流量如何打通?如果破局,如果还不知道的商家,下面咱们重点来了解一下有关内容,希望对你有所帮助.   一.淘 ...

最新文章

  1. vim设置窗体大小的环境变量
  2. [蓝桥杯][算法训练VIP]单词接龙(DFS+String)
  3. OC开发_Storyboard——MapKit
  4. ADO.NET高级应用
  5. Jsoup的简易使用示例
  6. redis数据结构类型
  7. ES6/07/Array的扩展方法,...扩展运算符,Array.from(),(arr.find(),arr.findIndex()和arr.includes())模板字符串,Set数据结构
  8. matlab求最大公倍数_小学数学最大公因数最小公倍数练习
  9. 《Java程序员全攻略:从小工到专家》连载二:IT行情分布
  10. ansys toolkit教程_「实用」ANSYS电磁仿真工具推荐,做仿真的你可以试试
  11. 7-ZIP SFX Maker Display Resource Hacker was not found
  12. android x86 ib,IB驱动安装
  13. 通过使用中国移动随e行客户端软件在电脑上发短信
  14. 苹果电脑自带截图工具怎么用?mac自带截屏工具使用技巧分享
  15. Lightly IDE 使用评测
  16. 校园网认证系统-802.1x协议介绍
  17. AliOS Things物联网操作系统学习第一步:Windows下AliOS Things开发环境搭建
  18. Tensorflow中的masking和padding
  19. 蓝桥杯之平面切分(几何问题)
  20. 基于java的网上鲜花销售系统,基于JAVA的鲜花销售管理系统MVC开发,免费分享

热门文章

  1. 黑科技揭秘:阿里云如何做到从业务宕机到恢复业务运行只用一分半钟时间
  2. 只因“薪水过高”!被欠薪三个月后遭解雇,程序员删库反击
  3. 山石网科发布重磅容器安全产品“山石云铠”,云安全版图再下一城
  4. 使用 SQL 语句实现一个年会抽奖程序
  5. 大湾区网络安全大会开幕在即,五个看点揭秘
  6. 这 10 行比较字符串相等的代码给我整懵了,不信你也来看看
  7. 第一次更名为OpenInfra的“她”,给我们带来了哪些惊喜?| 技术头条
  8. 动态后台获取_后台管理系统的权限以及vue处理权限的思路
  9. android 浏览器 pc一样大小,手机端不同浏览器[主流的,包括Android自带]对cookie的不同限制,如个数和大小,如何查看?...
  10. linux可平通网关但不能上网,redhat问题:能ping通网关和本网段的IP,但是不能ping通DNS,也不能上网...