Python获取NGINX连接数(ngx_stub_status)

道锋潜鳞
2021-01-03 / 0 评论 / 93 阅读 / 正在检测是否收录...

最近在写网站的自动化运营平台,其中有一个CC攻击报警的系统,需要获取到网络服务器实时的连接数来判断是否遭受到攻击。

因为服务器资源还是比较充裕,所以只需要获取当前的并发连接数即可。

但有一个问题,ngx_stub_status插件是以http页面的形式输出的。而且内容还是非json格式。

于是就用到urllib模块,对监控地址进行请求

import urllib.parse
import urllib.request
def data_re():
	url = "https://youdomain.com/your-url"
	headers = {
	# 存储任意的请求头信息
		'User-Agent': 'Automated_blog_server_monitoring_platform version1.0.0',
		'Referer':url
	}
	request = urllib.request.Request(url=url, headers=headers)
	response = urllib.request.urlopen(request)
	the_page = response.read().decode("unicode_escape").splitlines()
	#从http读取目标页面的数据分行存入List变量中
	connect = int(str(the_page[0]).split(':')[1].strip())
	#处理链接数为int类型的变量
	print(connect)

可以同理获取到队列等待数等。

代码原理:首先请求页面获取页面内容,然后对页面内容进行拆行解析。每一行为一个元素。使用split()对字符串进行二次拆解分割。最终去除多余的空格,解析出ngx_stub_status的Active connections

同理可以略微改动代码获取到总处理数,队列等待数等数据。

0

评论 (0)

取消