利用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)

  

时间: 2024-10-06 01:59:41

利用python获取nginx服务的ip以及流量统计信息的相关文章

python分析nginx日志的ip,url,status

Python 脚本如下: #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'lvnian' #!/usr/bin env python # coding: utf-8 import MySQLdb as mysql import sys, os db = mysql.connect(user="root",passwd="[email protected]",db="intest",

Python 监控nginx服务是否正常

Python 监控nginx服务是否正常 #!/usr/bin/env python import os, sys, time from time import strftime while True: try: ret = os.popen('ps -C nginx -o pid,cmd').readlines() if len(ret) <2: os.system("service nginx start") sys.exit(0) except Exception,ex:

[翻译]利用C#获取终端服务(Terminal Services)会话的闲置时间

[翻译]利用C#获取终端服务(Terminal Services)会话的闲置时间 作者:Tuuzed(土仔)   发表于:2008年2月29日版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明.http://www.cppblog.com/tuuzed/archive/2008/02/29/43424.html 原著:Guy Teverovsky 翻译:土仔Tuuzed原文出处:Querying TS session idle time with C#原文URL:

有关利用python获取网页, 以及KDD近几年论文标题与摘要链接

最近一直在看KDD的论文,不过,由于老师并没有什么合理的方向性,所以考虑把kdd中的大部分内容都利用python将所有标题.摘要获取下来. 还有一个原因在于,看acm上的摘要,都只显示了两行,再看多点儿,就需要点击expand,觉得非常不爽,所以就用python脚本把html标签删掉.. 想到的方法自然是通过python利用正则表达式对ACM的KDD网页进行字符串匹配,获得相应的网页字符串,然后将所有html的标签删除(例如<div></div>等), 将这些标签删除之后,就能够得

使用python控制nginx禁封ip

python控制nginx禁封ip nginx中的access.log最近有大量的用户访问,怎么样屏蔽掉在一定时间段内访问次数多的ip呢? 测试准备: 两个tomcat,一个nginx做均衡负载,服务器上装有python3 python脚本 #服务器每60s循环一次,抓取到超过200次以上的ip地址写入rainbol_ip.conf文件中,重启nginx禁封生效 import time import datetime import os point = 0 while True: with op

Nginx服务构建及访问状态统计

Nginx专为性能优化而开发,其最知名的有点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力(单台物理服务器可支持30000~50000个并发请求).正因如此,大量提供社交网络.新闻资讯.电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供Web服务. Nginx构建环境: RHEL6-5(IP地址为192.168.100.110) 一.构建步骤: 1. 安装依赖包及编译环境: # yum -y install pcre-devel zlib-devel gcc gcc-c++

Windows下利用Python动态检测外网IP并发邮件给邮箱

我们知道,运营商给分配的都是动态IP,IP地址过一段时间会自己变化,这就给需要静态地址的应用带来不便,例如搭建服务器或者远程控制电脑,这种情况必须知道自己电脑的IP,利用Python可以方便的自动检测并向邮箱发送邮箱. 但是,个人网络一般都是通过路由器来上网,直接检测电脑的IP并不可行,需要得到外网的IP.内网电脑可以通过端口映射来映射到外网.检测的原理如下: 1.通过自己的电脑信息不太好获取外网IP,幸好有一些雷锋网站可以帮助我们来检测,例如 http://city.ip138.com/ip2

利用Python3获取办公室的公网IP并修改阿里云安全组规则

阿里云Python SDK:SDK使用说明 API详情请参考:阿里云ECS API 安装依赖 #本文使用的Python版本为Python 3.7 pip install aliyun-python-sdk-core-v3 pip install aliyun-python-sdk-ecs 源代码 #!/usr/bin/python3 #coding=utf-8 ''' 当办公室的公网ip改变时,调用阿里云的API放行当前的公网IP和指定的端口 ''' import json import re

linux通过Python获取本机的ip,mac,网关,子网掩码,网卡名

1.通过模块netifaces获取,当系统为Windows时,可能会有报错现象 import os import sys try: import netifaces except ImportError: try: command_to_execute = "pip install netifaces || easy_install netifaces" os.system(command_to_execute) except OSError: print "Can NOT