代码如下:
#!/usr/bin/python
# --*-- coding:utf-8 --*--
import time
import datetime
import sys
import os
import os.path
import re
import json
import socket
import requests
import subprocessclass NginxLog(object):def __init__(self, log_file, seek_file):self.log_file = log_fileself.seek_file = seek_filedef hostname(self):"""host_name: 主机名"""host_name = socket.gethostname()return host_namedef writeSeek(self, seek):"""读过的游标写入临时文件"""with open(self.seek_file,'w') as f:f.write(time.strftime("%Y-%m-%d %H:%M:%s", time.localtime(time.time())) + '\n')f.write(str(seek) + "\n")def LogRead(self):"""读出新生成的日志# 如果第一次运行,或是删除临时文件,从头运行,否则,从上次读取之后运行# 0代表从头开始,1代表当前位置,2代表文件最末尾位置chunk: 返回一行日志"""if os.path.exists(self.seek_file):with open(self.seek_file) as f:seek_tmp = f.readlines()seek_old = int(seek_tmp[1].strip())else:seek_old = 0with open(self.log_file) as f:#记录当前最新文件游标f.seek(0,2) #最新游标位置seek_now = f.tell()# 读取上次读完之后的日志if seek_now >= seek_old:f.seek(seek_old,0) #从文件开头位置偏移chunk = f.read(seek_now - seek_old)#如果seek_now-seek_old小于0说明日志轮训else:f.seek(0,0)chunk = f.read(seek_now)# 将这次的游标写入临时文件self.writeSeek(seek_now)return chunkdef Log_percent(self):"""获取分钟超过10ms请求数的百分比low_request_time: 低于10ms的请求数high_request_time: 高于10ms的请求数"""low_request_time = []high_request_time = []for line in self.LogRead().split('\n'):tmp_time = line.split(' ')[-1]if tmp_time:tmp_data = float('%.3f' % float(tmp_time))request_time = int(tmp_data * 1000)if request_time > 10:high_request_time.append(request_time)else:low_request_time.append(request_time)# 一分钟请求总数count = float(len(low_request_time) + len(high_request_time))# 超过10ms的百分比if count:result = float(len(high_request_time))/count#只取分子percent = int(result * 100)return percentelse:return 0   #当一分钟请求数为0时,返回0def push_falcon(self, data, url):"""数据推送到openfalcon"""host = self.hostname()current_time = int(time.time())payload = [{"endpoint": host,"metric": "nginx_request_percent","timestamp": current_time,"step": 60,"value": data,"counterType": "GAUGE","tags": "nginx_request_percent=10ms",}]json_data=json.dumps(payload)print json_datares = requests.post("http://127.0.0.1:1988/v1/push", data=json_data)            def main():# 日志文件位置log_file = "/root/access.log"seek_file = "/root/seek_temp.log"url = "http://127.0.0.1:1988/v1/push"nginx_log = NginxLog(log_file,seek_file)percent = nginx_log.Log_percent()nginx_log.push_falcon(percent,url)if __name__ == '__main__':main()

转载于:https://blog.51cto.com/haoyonghui/2121694

python分析nginx日志,每分钟nginx请求超过10ms的比例相关推荐

  1. nginx日志中添加请求的response日志

    换个新公司,做一些新鲜的事情,经过一天的琢磨,终于成功添加response日志 在nginx的日志中添加接口response的日志 由于此功能在nginx内置的功能中没有,需要安装第三方模块ngx_l ...

  2. php 监控nginx日志文件,Nginx 日志分析及实时监控

    本文档以 Nginx 日志为例,介绍如何使用日志分析服务来分析 Nginx 日志中的各种指标. 许多个人站长选取了 Nginx 作为服务器搭建网站,在对网站访问情况进行分析时,需要对 Nginx 访问 ...

  3. python分析服务器日志_python实现web服务器日志分析脚本

    python日志分析脚本 用python可以实现大日志文件的分析,比如查到sql注入语句,然后看到IP,就可以改下脚本,用IP为特征取出日志,分析入侵过程. python比较shell脚本的优点是速度 ...

  4. python web access_利用python分析access日志的方法

    前言 WAF上线之后,处理最多的是误报消除. 产生误报有多种原因,比如web应用源码编写时允许客户端提交过多的cookie:比如单个参数提交的数值太大. 把误报降低到了可接受的范围后,还要关注漏报.W ...

  5. python nginx日志分析_Nginx日志分析及脚本编写

    在我们日常的运维中,当Nginx服务器正常运行后,我们会经常密切关注Nginx访问日志的相关情况,发现有异常的日志信息需要进行及时处理. 那今天我将跟大家一起来研究和分析Nginx日志,nginx默认 ...

  6. nginx日志格式、参数及切分

    2019独角兽企业重金招聘Python工程师标准>>> 日志格式 nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log ...

  7. Nginx日志配置、错误界面配置、流量控制 第九天

    目录 nginx日志配置 nginx日志介绍 access.log error.log open_log_file_cache rewrite.log nginx的日志轮转 nginx错误界面配置 n ...

  8. Nginx 日志配置

    1.Nginx 日志介绍 Nginx 有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志, 所需日志模块 ngx_http_log_module 的支持,日志格式通过 log_for ...

  9. 【Nginx 日志配置】【访问日志log_format】【错误日志error_log 指令】【Nginx的日志轮转】

    文章目录 Nginx 日志配置 `log_format` 指令中常用的一些变量: 访问日志 案例 可以配置段:`http`, `stream`, `server`, `location`作用域. er ...

最新文章

  1. Linux那些事儿 之 戏说USB(11)繁华落尽
  2. Mac卸载mysql并安装mysql升级到8.0.13版本
  3. 1 张图,拆解阿里 P8高级架构师必会技术栈!
  4. 开发笔记:掉落系统模块设计思路
  5. SpringBoot 无法显示html文件 找不到html文件 如果显示html文件
  6. AD学习笔记2021-5-29
  7. mysql 时间_MySQL 日期时间
  8. 11 个非常受欢迎的 JavaScript 动画库
  9. 变量“componentresourcemanager”未声明或从未赋值_频繁出现在面试题中,却容易被人遗忘:变量、基本数据类型...
  10. iOS - 数组字典模型根据模型属性key排序
  11. 解决git clone时报错fatal: HTTP request failed
  12. 在DOS环境下运行汇编程序
  13. 六十八个经典管理小故事
  14. 数据处理 、大数据、数据抽取 ETL 工具 DataX 、Kettle、Sqoop
  15. 国美易卡线上操作流程,国美易卡利用科技力量
  16. java 报‘java.net.UnknownHostException:错误
  17. 05 无人机动态模型
  18. html中怎么写艺术字,用CSS设计艺术字
  19. GAN实战——书法字体生成练习赛开始报名啦!
  20. android动态壁纸是什么格式的,为什么动态壁纸为APK格式? -

热门文章

  1. 机器学习与统计学的争论,有意义吗?
  2. 快手刘霁:AI基础能力决定每个公司AI的迭代和落地效率丨MEET2020
  3. 与两位主席复盘IJCAI,今年得失几何?
  4. AI寒冬论作者再发文:「深」度学习对数据的理解太「浅」了
  5. 人工智能不仅仅是智能生活,还有失业问题!
  6. 成为顶尖算法专家需要知道哪些算法?
  7. python如何去掉一个字符串两边的引号
  8. 无生命的AI算不上「智能」
  9. Hinton的胶囊网络不太行?CVPR Oral论文:不比卷积网络更「强」
  10. 大脑与数学——利用代数拓扑研究模拟大脑 第一部分