天天看點

python腳本采集伺服器資料通過API送出到django web伺服器,然後展示在頁面上

采集伺服器的資訊的python程式

#coding:utf-8

import psutil

import urllib

import urllib.request

import urllib.parse

#import urllib2

import requests

#擷取資料

cpuData = psutil.cpu_times()

#處理資料

cpuMax = cpuData.user+cpuData.system+cpuData.idle

cpuUsed = cpuData.user+cpuData.system

cpuUse = cpuUsed/cpuMax

#将資料進行打包

data = {"cpuUsed":cpuUse}

#sendData = urllib.parse.urlencode(data)

#sendData = sendData.encode('utf-8')

url = "http://192.168.52.129:8000/api/savecpu/"

#定義請求頭部

header = {

        "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",

    }

#定義請求

res =requests.post(url,data = data)

#req = urllib.request.Request(url,data = sendData,headers = header,method = 'POST')

#添加Header

#req.add_header(headers = header)

#發送請求

#ope = urllib.request.urlopen(req)

#列印結果

print(res.content.decode())

#print(ope.read())

django建立項目,建立app,我這裡建立了一個api的應用

api的urls.py檔案配置資訊

from django.conf.urls import url

from . import views

urlpatterns = [

     url(r'^index/$', views.index,name='index'),

     # url(r'^getinfo/$',views.getinfo,name='getinfo'),

     url(r"^savecpu/$", views.saveCpu,name='saveCpu'),

     url(r"^showcpu/$", views.show,name='showcpu'),

]

視圖檔案

定義了2個函數

def saveCpu(request):

    """

        這個方法就是我們的接口方法,

        當被請求時會将請求上來的資料存入資料庫

    statue = {}

    if request.method == "POST" and request.POST: #檢測請求的方式是post,并且post請求有資料

        #request.POST 這個方法以字典的形式存放着目前post請求的所有資料

        cpuUsed = request.POST["cpuUsed"] #使用類字典的取值方式取出傳遞上來的cpu使用率

        times = datetime.datetime.now() #擷取目前時間

        cpuDatabase = SaveCpu() #執行個體化一個SaveCpu的模型執行個體

        cpuDatabase.used = cpuUsed #将資料指派給模型

        cpuDatabase.time = times #同上

        cpuDatabase.save() #将模型映射到資料庫

        statue["statue"] = "success" #定義目前接口狀态為儲存成功

    else:

        statue["statue"] = "request method must be post" #定義目前接口狀态為失敗

    return JsonResponse(statue) #将接口狀态傳回給請求者

def show(request):

    cpu = SaveCpu.objects.all()

    return render(request,"api/showData.html",locals())

# Create your views here.

agent 端(python程式)不斷的采集到本機伺服器的資訊,通過api把資料傳遞給WEB伺服器端(django),web server端接收到接口傳過來的資料,把傳遞過來的資料按照格式存入資料庫儲存資料,從資料庫中提取資料,前端頁面展示資料

大概一個簡單的server -》agent端就是這樣的

本文轉自 xxl714 51CTO部落格,原文連結:http://blog.51cto.com/dreamgirl1314/2044918,如需轉載請自行聯系原作者