获取到数据后创建html的脚本
#/usr/bin/python
#-*- coding:utf-8 -*-
import time
class CreateHtml(object):
def __init__(self, data):
self.data = data
def htmltitle(self):
data = '''
<html>
<head>
<title>document</title>
<style type="text/css">
table{
margin: 50px auto;
}
</style>
</head>
<body>'''
return data
def tablehead(self):
return '<table border="1" cellspacing="0" cellpadding="10%" style="text-align:center;">'
def tabletitle(self, title_s):
return '<caption style="color: darkgreen;font-size: 22px;"> %s </caption>' % title_s
def tableend(self):
return '</table>'
def htmlend(self):
return '''</body></html>'''
def webtitle(self):
data = '''
<tr>
<th>id</th>
<th>主机名</th>
<th>ip</th>
<th>时间</th>
<th>CPU负载</th>
<th>CPU使用率</th>
<th>内存使用率</th>
<th>磁盘空间使用率</th>
<th>网卡流量 rx/kB</th>
<th>网卡流量 tx/kB</th>
</tr>'''
'''
<th>响应时间</th>
<th>访问量</th>
<th>成功请求数</th>
<th>失败请求数</th>'''
return data
def webtablebody(self):
t_body = []
if len(self.data) == 0:
return ''
for i in range(1,len(self.data) + 1):
data_t = '''
<tr>
<td rowspan="%s">%s</td>
<td rowspan="%s">%s</td>
<td rowspan="%s">%s</td>
''' % (len(self.data[i]['data']),i,
len(self.data[i]['data']),
self.data[i]['hostname'],
len(self.data[i]['data']),
self.data[i]['ip'])
t_body.append(data_t)
num = 0
for k in sorted(self.data[i]['data'].keys()):
v = self.data[i]['data'][k]
num += 1
data_b = '''
<td>%s:00:00</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
</tr><tr>''' % (k[:2], v['cpu_load'], v['cpu'], v['mem'], v['disk'],
v['net']['rx'],v['net']['tx'])
if num == len(self.data[i]['data']):
data_b = data_b[:-4]
t_body.append(data_b)
return '\n'.join(t_body)
def dubbotitle(self):
data = '''
<tr>
<th>id</th>
<th>主机名</th>
<th>ip</th>
<th>时间</th>
<th>CPU负载</th>
<th>CPU使用率</th>
<th>内存使用率</th>
<th>磁盘空间使用率</th>
<th>网卡流量 rx/kB</th>
<th>网卡流量 tx/kB</th>
<th>已建立连接数</th>
<th>Time Wait数</th>
<th>应用运行端口</th>
<th>应用运行时间</th>
<th>应用运行用户</th>
<th>集群状态</th>
</tr>'''
return data
def dubbotablebody(self):
t_body = []
if len(self.data) == 0:
return ''
for i in range(1,len(self.data) + 1):
data_t = '''
<tr>
<td rowspan="%s">%s</td>
<td rowspan="%s">%s</td>
<td rowspan="%s">%s</td>
''' % (len(self.data[i]['data']),i,
len(self.data[i]['data']),
self.data[i]['hostname'],
len(self.data[i]['data']),
self.data[i]['ip'])
t_body.append(data_t)
num = 0
for k in sorted(self.data[i]['data'].keys()):
v = self.data[i]['data'][k]
num += 1
data_b = '''
<td>%s:00:00</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
</tr><tr>''' % (k[:2], v['cpu_load'], v['cpu'], v['mem'], v['disk'],
v['net']['rx'],v['net']['tx'], v['conn'],v['timewait'],v['process']['port'], v['process']['rtime'],
v['process']['user'],v['process']['status'])
if num == len(self.data[i]['data']):
data_b = data_b[:-4]
t_body.append(data_b)
return '\n'.join(t_body)
def T_now(self):
return time.strftime('%Y-%m-%d', time.localtime(time.time()))
def webtable(self):
if len(self.data) == 0:
return ''
table_title = self.tabletitle('web服务系统信息汇总 %s' % self.T_now())
html = '''
%s
%s
%s
%s
%s
''' % ( self.tablehead(),
table_title, self.webtitle(),
self.webtablebody(),self.tableend())
return html
def dubbotable(self):
if len(self.data) == 0:
return ''
table_title = self.tabletitle('dubbo服务系统信息 %s' % self.T_now())
html = '''
%s
%s
%s
%s
%s
''' % (self.tablehead(),
table_title, self.dubbotitle(),
self.dubbotablebody(), self.tableend())
return html