同社は、レコード、PythonのSAプロセスのパフォーマンスデータ収集sysstatのを必要とします

CPU月に必要ZABBIXプラットフォームを介して取得するには、手動にするために使用、金利、CPU負荷、メモリ使用量、ネットワークトラフィックやその他のデータを使用しての会社のサービス何千ものビューでは、すべての時間は1〜2時間かかりますあまりにも時間がかかり、この要件を完了し、各データをフェッチした後、そのためのデータ収集には、一つだけラインSQL SYSTAT最適化ソフトウェアであり、その後、Pythonスクリプトは/ var / log / saのデータを収集することによって、およびMySQLへのデータベースストレージコードデータは、便利な、ここでは、テーマデータ収集スクリプトは、以下のように、取得することができます
同社は、レコード、PythonのSAプロセスのパフォーマンスデータ収集sysstatのを必要とします
同社は、レコード、PythonのSAプロセスのパフォーマンスデータ収集sysstatのを必要とします
同社は、レコード、PythonのSAプロセスのパフォーマンスデータ収集sysstatのを必要とします
同社は、レコード、PythonのSAプロセスのパフォーマンスデータ収集sysstatのを必要とします
同社は、レコード、PythonのSAプロセスのパフォーマンスデータ収集sysstatのを必要とします
:最後に、完全なコード添付
#/ binに/ python2.7!
#coding :. 8 UTF-
########を#########スクリプトの使用:20190901である必要があり、このような9月1日を入力として、時間に一日のデータを入力するために一日かかり
インポートのOS
インポートSYS
インポート日時
のインポートコマンド
のインポート時

def get_cpu(sdate,edate):
cpunum = int(commands.getoutput("cat /proc/cpuinfo |grep processor|wc -l"))
path = os.popen("find /var/log/sa/ -type f -newermt "+sdate+" ! -newermt "+edate+" |grep -v sar").readlines()
path = [m.rstrip("\n") for m in path]
for n in path:
idle = os.popen("sar -f "+n+" -u|awk '{print $NF}'|sed '1,3d'|sed '$d'|sed '/^$/d'").readlines()
data = list(idle)
data = [i.rstrip("\n") for i in idle]
data = [j for j in data if j != '']

    while '%idle' in data:
        data.remove("%idle")
    while 'RESTART' in data:
        data.remove("RESTART")

    data_tmp = list(map(float,data))
    data_num = [100-x for x in data_tmp]
    max_num = max(data_num)
    min_num = min(data_num)
    average_num=sum(data_num)/len(data_num)

    print("%s CPU useed max:%.4f,min:%.4f,average:%.4f"  % (n,max_num,min_num,average_num))

def get_dev(sdate,edate):
net = commands.getoutput("route -n|sed '1,2d'|awk -F' ' '{print $1,$8}'|grep 0.0.0.0|awk -F' ' '{print $2}'|sed -n '1p'")
rxkB=list()
txkB=list()
path = os.popen("find /var/log/sa/ -type f -newermt "+sdate+" ! -newermt "+edate+" |grep -v sar").readlines()
path = [m.rstrip("\n") for m in path]

for n in path:
    rxkB = commands.getoutput("sar -f "+n+" -n DEV|grep "+net+" |grep -v Average|awk -F' ' '{print $6}'|sed '$d'").split("\n")
    txkB = commands.getoutput("sar -f "+n+" -n DEV|grep "+net+" |grep -v Average|awk -F' ' '{print $7}'").split("\n")

    data_txkB = list(map(float,txkB))
    max_txkB=max(data_txkB)
    min_txkB=min(data_txkB)
    average_txkB=sum(data_txkB)/len(data_txkB)

    data_rxkB = list(map(float,rxkB))
    max_rxkB=max(data_rxkB)
    min_rxkB=min(data_rxkB)
    average_rxkB=sum(data_rxkB)/len(data_rxkB)
    print "%s rxval max:%.4f,min:%.4f,average:%.4f,dev:%s" %(n,max_rxkB,min_rxkB,average_rxkB,net)
    print "%s txval max:%.4f,min:%.4f,average:%.4f,dev:%s" %(n,max_txkB,min_txkB,average_txkB,net)

def get_mem(sdate,edate):
path = os.popen("find /var/log/sa/ -type f -newermt "+sdate+" ! -newermt "+edate+" |grep -v sar").readlines()
path = [m.rstrip("\n") for m in path]
for n in path:

    a=int(commands.getoutput("sar -f "+n+" -r|awk 'END{print NF}'"))
    if(a >= 11):
         memused = os.popen("sar -f "+n+" -r|grep -v ^$|grep -iv Linux|grep -iv memused|grep -iv Average|awk '{print(($(NF-8)-$(NF-5))/($(NF-9)+$(NF-8)))}'").readlines()
    else:
         memused = os.popen("sar -f "+n+" -r|grep -v ^$|grep -iv Linux|grep -iv memused|grep -iv Average|awk '{print(($(NF-5)-$(NF-2))/($(NF-6)+$(NF-5)))}'").readlines()
    data = list(memused)
    data = [i.rstrip("\n") for i in memused]
    data_num = list(map(float,data))
    max_num=max(data_num)
    min_num=min(data_num)
    average_num=sum(data_num)/len(data_num)
    print "%s memused max:%.4f,min:%.4f,average:%.4f" %(n,max_num,min_num,average_num)

デフget_ldavg(SDATE、EDATE):
cpunum = INT(commands.getoutput( "猫の/ proc / cpuinfoの|はgrepプロセッサ|トイレ-l"))
パス= os.popen( "発見は/ var / log / SA / -type F !-newermt "+ SDATE +" -newermt "+ EDATE +" | grepの-v SAR ")readlines()
パス= [m.rstrip(" \ n "は)パス内のmについて]
パス内のnの:

    a=int(commands.getoutput("sar -f "+n+" -q|sed -n '10p'|awk 'END{print NF}'"))
    if a == 7:
        ldavg_1 = os.popen("sar -f "+n+" -q|awk -F' ' '{print $5}'|sed '1,3d'|sed '$d'|sed '/^$/d'|grep -v ldavg-1").readlines()
        ldavg_15 = os.popen("sar -f "+n+" -q|awk -F' ' '{print $7}'|sed '1,3d'|sed '$d'|sed '/^$/d'|grep -v ldavg-15").readlines()
    elif a == 8:
        ldavg_1 = os.popen("sar -f "+n+" -q|awk -F' ' '{print $5}'|sed '1,3d'|sed '$d'|sed '/^$/d'|grep -v ldavg-1").readlines()
        ldavg_15 = os.popen("sar -f "+n+" -q|awk -F' ' '{print $7}'|sed '1,3d'|sed '$d'|sed '/^$/d'|grep -v ldavg-15").readlines()
    elif a == 6:
        ldavg_1 = os.popen("sar -f "+n+" -q|awk -F' ' '{print $4}'|sed '1,3d'|sed '$d'|sed '/^$/d'|grep -v ldavg-1").readlines()
        ldavg_15 = os.popen("sar -f "+n+" -q|awk -F' ' '{print $6}'|sed '1,3d'|sed '$d'|sed '/^$/d'|grep -v ldavg-15").readlines()

    data1 = [i.rstrip("\n") for i in ldavg_1]
    data15 =[j.rstrip("\n") for j in ldavg_15]
    data1 = list(map(float,data1))
    data15 = list(map(float,data15))
    max_data1=max(data1)
    min_data1=min(data1)
    average_data1=sum(data1)/len(data1)
    max_data15=max(data15)
    min_data15=min(data15)
    average_data15=sum(data15)/len(data15)
    print "%s cpu 1minute load max:%.4f,min:%.4f,average:%.4f" %(n,max_data1/cpunum,min_data1/cpunum,average_data1/cpunum)
    print "%s cpu 15minute load max:%.4f,min:%.4f,average:%.4f" %(n,max_data15/cpunum,min_data15/cpunum,average_data15/cpunum)

もし名前 == " ":
SDATE = sys.argvの[1]
SDATE = datetime.datetime.strptime(SDATE、 '%Y%m個の%のD')
EDATE = SDATE + datetime.timedelta(日= 1)
SDATE = SDATE .strftime( '%Y%m個の%のD')
EDATE = edate.strftime( '%Y%m個の%のD')
get_cpu(SDATE、EDATE)
get_ldavg(SDATE、EDATE)
get_mem(SDATE、EDATE)
get_dev(SDATE、EDATE )

おすすめ

転載: blog.51cto.com/10223750/2451794