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

本文实例讲述了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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java实验1机动车实验目的_《Java程序设计》实验指导书.doc

《Java程序设计》实验指导书实验一、熟悉JDK环境及主要命令一、实验目的1) 熟悉JDK的环境配置2) 掌握JDK的命令3) 掌握Java Application程序的开发过程,并编写一个Java Application程序二、实验内容1.按照上课所学知识,为自己的机器配置环境变…

python selenium 下载文件_Python Selenium —— 文件上传、下载,其实很简单

很多selenium学习者被浏览器弹出的文件上传、下载框折磨的痛不欲生,今天博主就带你们轻松搞定上传和下载问题。上传上传弹框文件上传是所有UI自动化测试都要面对的一个头疼问题,要处理这个问题,我们需要:首先,要区分出…

mysql vim 命令_Vim基本命令必知必会

光标移动定位方式hjkl (强例推荐使用其移动光标,但不必需) →你也可以使用光标键 (←↓↑→). 注: j 就像下箭头0 → 数字零,到行首^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)$ →…

python执行语句转换成str_python3.x,_python3.4.3如何转换str字符串?,python3.x - phpStudy...

python3.4.3如何转换str字符串?#codingutf8import pymssqlclass MSSQL:def __init__(self,host,user,pwd,db):self.host hostself.user userself.pwd pwdself.db dbdef __getConnect(self):"""得到连接信息返回: conn.cursor()"…

java中strictfp么意思_什么时候应该在java中使用“strictfp”关键字?

Strictfp确保您从每个平台上的浮点计算获得完全相同的结果。如果不使用strictfp,JVM实现可以在可用的地方使用额外的精度。Within an FP-strict expression, allintermediate values must be elementsof the float value set or the doublevalue set, implying that…

python导入包的输入法_python 模块和包的导入

http://www.cnblogs.com/linhaifeng/articles/6379069.html1,模块开源模块https://pypi.python.org/pypipip/ easy_install安装python setup.py buildpython setup.py installpip install xxxx添加环境变量import os,sysprint (os.path.dirname(os.path.dirname(os.path.dirnam…

java 包权限 子包_Java 包和访问权限

一开始学Java,就用的eclipse。对包的印象就是右键新建而已。至于导入包,等报错了再导。被IDE奴役的傻孩子。现在就清晰地梳理一遍吧~本文基于Mars老师的Java4Android视频。包的作用软件包为Java类提供了命名空间。根据包名,会生成相应的文件夹…

python动态表情包下载_Python从eif中导出qq表情的gif图片

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#!/usr/bin/pythonTestfrom sys import stdoutfrom time import sleepffile(t.eif,rb)resultDirresultreadBytesreadingBytetempArr3[,,]tempArr8[,,,,,,,]#End Of Gif In EifstartFlag[\x47,\x49,\x46]endFlag1list(49454E44AE426…

java中dll在cas中不生效_java中你所不知道的CAS操作

1.CAS是什么Compare and Swap(比较并操作),由处理器架构支持,语义是如果当前值V和旧值A相同,则将当前值修改为B,如果不相同则不修改。CAS操作采用的是乐观锁技术,当多线程同时修改某个变量时只有一个成功,其…

内存条上面参数详解_为什么买内存条要看时序?别以为内存频率高性能就好

2016年开网吧买了400多根DDR4 8G内存条,一根180。2017年网吧赔了钱,我把电脑卖了,内存600一根,结果开网吧的钱赚回来了。囤内存挣回了开网吧的钱转眼间到2019年,内存就跌回了原来的价钱,200多块就又能买到D…

java了解异常_ID检测_Java入门第三季7-1简易扑克牌游戏(自定义玩家个数,玩家个数和ID异常检测)...

玩家类:package playingCardsGame;import java.util.ArrayList;import java.util.List;/** 玩家类*/public class Players {int ID;String name;List handCards;Players(int ID, String name){this.ID ID;this.name name;this.handCards new ArrayList();}}手牌类…

android 获取monkey日志_Android压力测试:monkey压力测试实战

主要分享的主题是 Android App 专项测试,通过 monkey 进行压力测试。一.测试步骤1.安装ADB2.连接被测手机和电脑3.打开CMD命令行4.输入monkey命令adb shell monkey -p your.package.name?--pct-touch 30?--ignore-crashes ?--ignore-timeouts--throttle 250?-s …

java工程怎么构造成moven_将普通java工程结构改为由maven管理的工程结构域

第一次尝试些博客记录一下自己的学习心得!1. http://maven.apache.org/download.cgi 这是maven 的下载链接进入链接下载一个maven 包这是我的windows10 系统下载的版本2 . 将下载好的文件解压后放入任意位置(一般建议放到自己常用的文件夹下边)并记住该路径G:\xiangmuwar …

php mysql 聊天室_聊天室phpmysql(一)

//第一个页面 name"index1.php"include "../signup/mysql.php";$time1time();//$userid983530409;echo $n;if($n1){$useridtime();$nick"g".$userid;$last_time$userid;$sql"insert into chat_user (userid,id,last_time) values ($us…

在python中求小于100的所有合数_python输出100以内的质数与合数

__author__ Yue Qingxuan# -*- coding: utf-8 -*-#求质数p[2]for i in range(2,101):for temp in range(2,i):if i%temp0:breakprint(i,i,temp,temp)elif tempi-1:p.append(i)print(\n以下打印质数:)print(p)#求合数list[]for i in range (4,100):for j in range(2…

python 函数进度条怎么_刷新你对进度条的认识,用python写出不一样的进度条

1 简介在日常工作中,我们运行程序经常会用到「循环迭代」,假如这个执行时间很短,那倒也无所谓。但是有一些过程耗时蛮长的,给其加上「进度条」(progress bar),可以帮我们监控代码执行进度,以及过程出现异常…

acer软件保护卡清除工具clear_使用Windows 10内置工具释放硬盘空间的最佳方法

如果您的磁盘空间不足,可以使用 Windows 10 中内置的工具来清理垃圾文件、应用程序和游戏等,以优化硬盘空间。使用这些清理工具不仅能够释放空间,而且还有助于提高系统性能。下面小编就为大家汇总介绍 几种种最佳快捷方法,来释放 …

python中astr是啥_python的基本操作

该来的还是来了,早先某个大胖子建议我写关于python基本操作的博客,当时没上心,现在来补点账,也姑且算是对往昔一点回忆吧。对了,那胖子,姓王,所幸不住我隔壁。闲言少叙,python和pych…

python字典popitem和pop_python字典popitem_python 字典之pop() and popitem()

字典删除方法:pop()和popitem(),这两种种方法的作用不同,操作方法及返回值都不相同。pop (key[,default])其中,key是必选参数,必须给出,default是可选参数,可以不给出。如果键值key在字典中存在…

python20个常用语法_这20个常规Python语法你都搞明白了吗?

原标题:这20个常规Python语法你都搞明白了吗?还没关注?Python简单易学,但又博大精深。许多人号称精通Python,却不会写Pythonic的代码,对很多常用包的使用也并不熟悉。学海无涯,我们先来了解一些…