通过 Python 调用 Shell 脚本去执行 Nginx Log 的相关命令,然后进行处理再请求 Requests 库来向后端定义好的接口来推送数据并展示。
import os
import requests
import json
import time
url="http://10.8.31.61:5555/GetNginxResource"
nginx_data={}
def exec_cmd(logname):
nginx_cmd = "awk -F' ' '{print $21}' " + logname + " |sort |uniq -c"
response = os.popen(nginx_cmd)
nginx_data['data']=str(response.read()).replace("
","")
#print(nginx_data)
response.close()
return nginx_data
def httpPost(datas):
header = {"Content-Type":"application/json"}
resp_content = requests.post(url=url,data=json.dumps(datas),headers=header)
#resp_content = json.loads(resp_content.content)
print(resp_content.text)
if __name__ == '__main__':
hostname=str(os.popen("hostname |awk -F'.' '{print $1}' |awk -F'-' '{print $2}'").read()).replace("
","")
while(1):
data=exec_cmd("/home/q/nginx/logs/access_ars2.beta.shangri-la.com.log")
data1=data['data'].split(",")
dict1={}
for i in data1:
data2=i.strip().split(" ")
if(len(data2)>=2):
key,value=data2[1],data2[0]
dict1[key]=value
else:
pass
listkey=['200','204','206','301','302','304','400','401','403','404','415','499','500','503']
dict2={}
for i in listkey:
if(i in dict1.keys()):
dict2[i]=int(dict1[i])
print(dict2)
httpPost(dict(hostname=hostname,nginx_data=dict2))
time.sleep(3600)
@resource.route('/GetNginxResource',methods=['POST'])
def GetNginxResource():
'''接收来自linux上传的数据'''
query = request.get_json()
hostname = query["hostname"]
nginx_data = query["nginx_data"]
createtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
sql = 'insert into nginx_log_info (hostname,nginx_data,create_time) VALUES '
data = '("' + hostname + '","' + str(nginx_data) + '","' + str(createtime) + '"'
end = data + ")"
sql = sql + end
print(sql)
db = conndb()
db.execute_sql(sql)
data = {'code': 200, 'message': 'success', 'status': '10000'}
return json.dumps(data)
这部分主要分为以下两块内容:
Nginx Log信息
搜索
@resource.route('/getNginxList',methods=['POST'])
def getNginxList():
'''fe的页面列表数据获取'''
query = request.get_json()
print(query)
if (query["hostname"] == ""):
sql1 = "select id,hostname,nginx_data,create_time from nginx_log_info order by id DESC limit " + str(
(query['pageIndex'] - 1) * query["pageSize"]) + "," + str(query["pageSize"])
count_sql = "select count(*) from nginx_log_info"
colume_sql = "select id from nginx_log_info"
else:
sql1 = "select id,hostname,nginx_data,create_time from nginx_log_info where hostname like '%" + str(query["hostname"]) + "%' order by id DESC" + " limit " + str(
(query['pageIndex'] - 1) * query["pageSize"]) + "," + str(query["pageSize"])
count_sql = "select count(*) from nginx_log_info where hostname like '%" + str(query["hostname"]) + "%' order by id DESC"
colume_sql = "select id from nginx_log_info"
sql2 = "select id,hostname,nginx_data,create_time from nginx_log_info"
db = conndb()
listdata = db.get_data(sql1, sql2)
db = conndb()
result = db.get_data(count_sql, colume_sql)
print(result)
pageTotal = result[0]['id']
print(listdata)
print(pageTotal)
data = {'listdata': listdata, "pageTotal": pageTotal, "code": 200}
return json.dumps(data)
页面更新:2024-03-20
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号