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

作者:wadeson 时间:2023-08-03 02:03:26 

本文实例讲述了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程序设计有所帮助。

来源:http://www.cnblogs.com/jsonhc/p/7280293.html

标签:Python,nginx,ip
0
投稿

猜你喜欢

  • oracle数据库tns配置方法详解

    2023-07-20 16:14:10
  • 关于Python中*args和**kwargs的深入理解

    2021-04-07 17:45:06
  • python动态性强类型用法实例

    2022-08-04 23:32:51
  • TensorFlow实现从txt文件读取数据

    2021-03-02 21:04:59
  • ORACLE常见错误代码的分析与解决三

    2010-07-26 13:28:00
  • Git可视化教程之Git Gui的使用

    2022-12-10 03:12:06
  • python画折线图的程序

    2021-07-04 18:08:20
  • 用Dreamweaver MX轻松操作表格

    2009-05-29 18:41:00
  • 告别网页搜索!教你用python实现一款属于自己的翻译词典软件

    2023-08-08 17:46:58
  • webpack结合express实现自动刷新的方法

    2024-04-23 09:12:27
  • SQL Server误区30日谈 第24天 26个有关还原(Restore)的误区

    2024-01-27 19:39:51
  • Django REST framework视图的用法

    2021-02-10 02:51:49
  • 结束运行python的方法

    2022-12-07 02:56:02
  • centos 7安装mysql5.5的方法

    2024-01-22 01:29:32
  • Django Auth用户认证组件实现代码

    2022-05-02 18:06:01
  • 三大Python翻译神器再也不用担心学不好英语

    2022-02-13 07:27:19
  • Matlab实现新冠病毒传播模拟效果

    2022-01-23 00:01:28
  • python实践项目之监控当前联网状态详情

    2022-06-05 02:02:57
  • 阿里云ECS centos6.8下安装配置MySql5.7的教程

    2024-01-14 23:47:13
  • python黑魔法之编码转换

    2022-08-11 10:03:41
  • asp之家 网络编程 m.aspxhome.com