最近在写网站的自动化运营平台,其中有一个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)