1. 程式人生 > >3、python自動化運維——定制業務質量報表

3、python自動化運維——定制業務質量報表

python自動化運維 psutil

通過psutilrrdtool模塊相結合繪制網卡網絡流量

技術分享圖片



實例代碼:

./cretea.py

#!/usr/bin/python
import time
import rrdtool

cur_time=str(int(time.time()))
rrd=rrdtool.create(
'Flow.rrd','--step','300','--start',cur_time,
'DS:eth0_in:COUNTER:600:0:U'

,
'DS:eth0_out:COUNTER:600:0:U',
'RRA:AVERAGE:0.5:1:600',
'RRA:AVERAGE:0.5:6:700',
'RRA:AVERAGE:0.5:24:775',
'RRA:AVERAGE:0.5:288:797',
'RRA:MAX:0.5:1:600',
'RRA:MAX:0.5:6:700',
'RRA:MAX:0.5:24:775'
,
'RRA:MAX:0.5:444:797',
'RRA:MIN:0.5:1:600',
'RRA:MIN:0.5:6:700',
'RRA:MIN:0.5:24:775',
'RRA:MIN:0.5:444:797')
if rrd:
print(rrdtool.error())

./update.py

import time,psutil
import rrdtool
total_input_traffic=psutil.net_io_counters()[
1]
total_output_traffic=psutil.net_io_counters()[
0]
starttime=int(time.time())
update=rrdtool.updatev(
'/root/Scripts/rrdtools/Flow.rrd','%s:%s:%s' % (str(starttime),str(total_input_traffic),str(total_output_traffic)))
print(update)

./graph.py

import time,psutil
import rrdtool

title="Server network,traffic flow ("+time.strftime('%Y-%m-%d',time.localtime(time.time()))+")"
rrdtool.graph("Flow.png","--start","-1d","--vertical-label=Bytes/s",
"--x-grid","MINUTE:12:HOUR:1:HOUR:1:0:%H","--width","650","--height","230",
"--title",title,
"DEF:inoctets=Flow.rrd:eth0_in:AVERAGE",
"DEF:outoctets=Flow.rrd:eth0_out:AVERAGE","CDEF:total=inoctets,outoctets,+",
"LINE1:total#FF8833:Total traffic","AREA:inoctets#00FF00:IN traffic",
"LINE1:outoctets#0000FF:Out traffic","HRULE:6144#FF0000:Alarm value\\r",
"CDEF:inbits=inoctets,8,*","CDEF:outbits=outoctets,8,*",
"COMMENT:\\r",
"COMMENT:\\r",
"GPRINT:inbits:AVERAGE:Avg In traffic\: %6.2lf %Sbps",
"COMMENT: ","GPRINT:inbits:MAX:Max In traffic\: %6.2lf %Sbps",
"COMMENT: ","GPRINT:inbits:MIN:Min In traffic\: %6.2lf %Sbps\\r","COMMENT: ","GPRINT:outbits:AVERAGE:Avg OuT traffic\: %6.2lf %Sbps","COMMENT: ","GPRINT:outbits:MAX:Max OuT traffic\: %6.2lf %Sbps",
"COMMENT: ","GPRINT:outbits:MIN:Min OuT traffic\: %6.2lf %Sbps\\r")


實現TCP探測目標路由軌跡

所需安裝包:ImageMagick(轉換圖片格式工具),graphviz(繪制圖形工具)

通過scapytraceroute方法查詢到路由軌跡,然後調用graph()方法進行路由軌跡的繪制,中間調用ASN映射查詢IP地理信息並生成svg流程文檔,最後使用ImageMagic工具轉換svg格式為png格式。

import logging,warnings
import sys,os,subprocess
import time

warnings.filterwarnings(
"ignore",category=DeprecationWarning)

#屏蔽scapy 無用信息
logging.getLogger(
"scapy.runtime").setLevel(logging.ERROR)
#
屏蔽模塊IPV6多余告警
from scapy.all import traceroute
domains=raw_input(
"please input you domain name:\n")

#接受輸入的域名或IP
target=domains.split(
" ")
dport = [
80]

if len(target) >=1 and target[0]!='':
res,unans =traceroute(target,dport=dport,retry=-
2)#啟動路由跟蹤
res.graph(target=
"> test.svg") #生成svg圖片
time.sleep(
1)
subprocess.Popen(
"/usr/bin/convert test.svg test.png",shell=True)
else:
print("IP/domain name Error")


3、python自動化運維——定制業務質量報表