因为近期思考自定义绘制服务器状态监控界面,不能在被监控服务器搭建服务,所以考虑通过python远程连接服务器执行相关命令获取服务器状态
第一步是思考怎么采用python连接远程服务器,这里采用的是paramiko模块:
ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography)。
paramiko包含两个核心组件:SSHClient和SFTPClient。
SSHClient的作用类似于Linux的ssh命令,是对SSH会话的封装,该类封装了传输(Transport),通道(Channel)及SFTPClient建立的方法(open_sftp),通常用于执行远程命令。
SFTPClient的作用类似与Linux的sftp命令,是对SFTP客户端的封装,用以实现远程文件操作,如文件上传、下载、修改文件权限等操作。
有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。
pip install paramiko
connect():实现远程服务器的连接与认证,对于该方法只有hostname是必传参数。
常用参数
hostname 连接的目标主机
port=SSH_PORT 指定端口
username=None 验证的用户名
password=None 验证的用户密码
pkey=None 私钥方式用于身份验证
key_filename=None 一个文件名或文件列表,指定私钥文件
timeout=None 可选的tcp连接超时时间
allow_agent=True, 是否允许连接到ssh代理,默认为True 允许
look_for_keys=True 是否在~/.ssh中搜索私钥文件,默认为True 允许
compress=False, 是否打开压缩
set_missing_host_key_policy():设置远程服务器没有在know_hosts文件中记录时的应对策略。目前支持三种策略:
设置连接的远程主机没有本地主机密钥或HostKeys对象时的策略,目前支持三种:
AutoAddPolicy 自动添加主机名及主机密钥到本地HostKeys对象,不依赖load_system_host_key的配置。即新建立ssh连接时不需要再输入yes或no进行确认
WarningPolicy 用于记录一个未知的主机密钥的python警告。并接受,功能上和AutoAddPolicy类似,但是会提示是新连接
RejectPolicy 自动拒绝未知的主机名和密钥,依赖load_system_host_key的配置。此为默认选项
exec_command():在远程服务器执行Linux命令的方法。
open_sftp():在当前ssh会话的基础上创建一个sftp会话。该方法会返回一个SFTPClient对象。
利用SSHClient对象的open_sftp()方法,可以直接返回一个基于当前连接的sftp对象,可以进行文件的上传等操作.
sftp = client.open_sftp()
sftp.put(‘test.txt’,‘text.txt’)
import paramiko
#实例化SSHClient
client = paramiko.SSHClient()
# 自动添加策略,保存服务器的主机名和密钥信息,如果不添加,那么不再本地know_hosts文件中记录的主机将无法连接
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接SSH服务端,以用户名和密码进行认证
client.connect(hostname='10.8.250.71', port=22, username='tboss', password='123456')
# 打开一个Channel并执行命令
stdin, stdout, stderr = client.exec_command('df -h ') # stdout 为正确输出,stderr为错误输出,同时是有1个变量有值
# 打印执行结果
print(stdout.read().decode('utf-8'))
# 使用stdout.readlines()则直接返回list
print(stdout.readlines())
密钥连接方式参考:
# 配置私人密钥文件位置
private = paramiko.RSAKey.from_private_key_file('/Users/ch/.ssh/id_rsa')
#实例化SSHClient
client = paramiko.SSHClient()
#自动添加策略,保存服务器的主机名和密钥信息,如果不添加,那么不再本地know_hosts文件中记录的主机将无法连接
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接SSH服务端,以用户名和密码进行认证
client.connect(hostname='10.0.0.1',port=22,username='root',pkey=private)
代码如下(示例):
import paramiko
import re,time
class moniter():
def init(self, ip=‘10.8.250.01’, port=22, name=‘user’, pwd=‘123456’):
self.ip = ip
self.port = port
self.name = name
self.pwd = pwd
# 建立ssh连接
self.client = paramiko.SSHClient()
self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.client.connect(self.ip, self.port, self.name, self.pwd)
"""
内存监控
"""
def mem_info(self):
stdout = self.client.exec_command("cat /proc/meminfo", )[1]
content = stdout.readlines()
mems={}
for line in content:
fields = line.split()
mems[fields[0]] = int(fields[1]) * 1024
MemTotal = mems['MemTotal:']
MemFree = mems['MemFree:']
Buffers = mems['Buffers:']
Cached = mems['Cached:']
SwapCached = mems['SwapCached:']
SwapTotal = mems['SwapTotal:']
SwapFree = mems['SwapFree:']
print('******************************内存监控*********************************')
print("*******************时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "******************")
print("总内存:", MemTotal)
print("空闲内存:", MemFree)
print("给文件的缓冲大小:", Buffers)
print("高速缓冲存储器使用的大小:", Cached)
print("被高速缓冲存储用的交换空间大小:", SwapCached)
print("给文件的缓冲大小:", Buffers)
if int(SwapTotal) == 0:
print(u"交换内存总共为:0")
else:
Rate_Swap = 100 - 100 * int(SwapFree) / float(SwapTotal)
print(u"交换内存利用率:", Rate_Swap)
Free_Mem = int(MemFree) + int(Buffers) + int(Cached)
Used_Mem = int(MemTotal) - Free_Mem
Rate_Mem = 100 * Used_Mem / float(MemTotal)
print(u"内存利用率:", str("%.2f" % Rate_Mem), "%")
"""
内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息
"""
def vm_stat_info(self):
'''
vmstat 1 1 | tail -n 1 的返回值按照顺序排序
r:等待执行的任务数.展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。
b: 等待IO的进程数量
swpd: 正在使用虚拟的内存大小,单位k
free: 空闲内存大小,单位k
buff: 已用的buff大小,对块设备的读写进行缓冲
cache: 已用的cache大小,文件系统的cache
si: 每秒从交换区写入内存的大小(单位:kb/s)
so: 每秒从内存写到交换区的大小
bi: 每秒读取的块数(读磁盘)
bo: 每秒写入的块数(写磁盘)
in: 每秒中断数,包括时钟中断
cs: 每秒上下文切换数
us: 用户进程执行消耗cpu时间(user time)
sy: 系统进程消耗cpu时间(system time)
id: 空闲时间(包括IO等待时间)
wa: 等待IO时间
st: 虚拟机占用的时间百分比,一般不关注
'''
stdout = self.client.exec_command("vmstat 1 1 | tail -n 1", )[1]
content = stdout.readlines()
fields = content[0].split()
processes_waiting = fields[0]
processes_sleep = fields[1]
swpd = fields[2]
free = fields[3]
buff = fields[4]
cache = fields[5]
si = fields[6]
so = fields[7]
io_bi = fields[8]
io_bo = fields[9]
system_interrupt = fields[10]
system_context_switch = fields[11]
cpu_user = fields[12]
cpu_sys = fields[13]
cpu_idle = fields[14]
cpu_wait = fields[15]
st = fields[16]
print('****************************内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息监控****************************')
print("*******************时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "******************")
print("等待运行进程的数量:", processes_waiting)
print("处于不间断状态的进程:", processes_sleep)
print("使用虚拟内存(swap)的总量:", swpd)
print("空闲的内存总量:", free)
print("用作缓冲的内存总量:", buff)
print("用作缓存的内存总量:", cache)
print("交换出内存总量 :", si)
print("交换入内存总量 :", so)
print("从一个块设备接收:", io_bi)
print("发送到块设备:", io_bo)
print("每秒的中断数:", system_interrupt)
print("每秒的上下文切换数:", system_context_switch)
print("用户空间上进程运行的时间百分比:", cpu_user)
print("内核空间上进程运行的时间百分比:", cpu_sys)
print("闲置时间百分比:", cpu_idle)
print("等待IO的时间百分比:", cpu_wait)
print("从虚拟机偷取的时间百分比:", st)
'''
cpu监控
'''
def cpu_info(self):
'''
cat /proc/cpuinfo 详解
processor: 处理器
vendor_id :CPU制造商
cpu family :CPU产品系列代号
model :CPU属于其系列中的哪一代的代号
model name:CPU属于的名字及其编号、标称主频
stepping :CPU属于制作更新版本
cpu MHz :CPU的实际使用主频
cache size :CPU二级缓存大小
physical id :单个CPU的标号
siblings :单个CPU逻辑物理核数
core id :当前物理核在其所处CPU中的编号,这个编号不一定连续.
cpu cores :该逻辑核所处CPU的物理核数
apicid :用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续.
fpu :是否具有浮点运算单元(Floating Point Unit)
fpu_exception :是否支持浮点计算异常
cpuid level :执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容.
wp :表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
flags :当前CPU支持的功能
bogomips :在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
clflush size :每次刷新缓存的大小单位
cache_alignment :缓存地址对齐单位
address sizes :可访问地址空间位数
power management :对能源管理的支持
'''
stdout = self.client.exec_command("cat /proc/cpuinfo", )[1]
content = stdout.readlines()
print('***************************************cpu监控***************************************')
print("*******************时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "******************")
temporary = {}
cpuinfoiList = []
for it in content :
if it=='\n':
cpuinfoiList.append(temporary)
temporary={}
else:
it = it.replace('\t','').replace('\n','')
temporary[it.split(':')[0]] = it.split(':')[1]
for CPUinfo in cpuinfoiList:
print("CPU属于的编号:", CPUinfo['processor'])
print("CPU制造商:", CPUinfo['vendor_id'])
print("CPU产品系列代号:", CPUinfo['cpu family'])
print("CPU属于其系列中的哪一代的代号:", CPUinfo['model'])
print("CPU属于的名字及其编号、标称主频:", CPUinfo['model name'])
print("CPU属于制作更新版本:", CPUinfo['stepping'])
print("CPU的实际使用主频:", CPUinfo['cpu MHz'])
print("CPU二级缓存大小:", CPUinfo['cache size'])
print("单个CPU的标号:", CPUinfo['physical id'])
print("单个CPU逻辑物理核数:", CPUinfo['siblings'])
print("当前物理核在其所处CPU中的编号,这个编号不一定连续.:", CPUinfo['core id'])
print("该逻辑核所处CPU的物理核数:", CPUinfo['cpu cores'])
print("用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续:", CPUinfo['apicid'])
print("是否具有浮点运算单元(Floating Point Unit):", CPUinfo['fpu'])
print("是否支持浮点计算异常:", CPUinfo['fpu_exception'])
print("执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容.:", CPUinfo['cpuid level'])
print("表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection):", CPUinfo['wp'])
print("当前CPU支持的功能:", CPUinfo['flags'])
print("在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second):", CPUinfo['bogomips'])
print("每次刷新缓存的大小单位:", CPUinfo['clflush size'])
print("缓存地址对齐单位:", CPUinfo['cache_alignment'])
print("可访问地址空间位数:", CPUinfo['address sizes'])
print("对能源管理的支持:", CPUinfo['power management'])
"""
负载均衡
"""
def load_stat(self):
stdout = self.client.exec_command("cat /proc/loadavg", )[1]
content = stdout.readlines()
loadavgs = content[0].strip().split()
print('************************负载均衡监控****************************')
print('"*******************时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "******************"')
print("系统5分钟前的平均负载:", loadavgs[0])
print("系统10分钟前的平均负载:", loadavgs[1])
print("系统15分钟前的平均负载:", loadavgs[2])
print("分子是正在运行的进程数,分母为总进程数:", loadavgs[3])
print("最近运行的进程id:", loadavgs[4])
"""
获取网络接口的输入和输出
"""
def ionetwork(self):
stdout = self.client.exec_command("cat /proc/net/dev", )[1]
content = stdout.readlines()
print('************************获取网络接口的输入和输出监控****************************')
print("*******************时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "******************")
net = {}
for line in content[2:]:
line = line.strip().split(":")
eth_name = line[0].strip()
net_io = {}
net_io['Receive(收包的字节数)'] = round(float(line[1].split()[0]) / (1024.0 * 1024.0), 2)
net_io['packets(收包正确的包量)'] = round(float(line[1].split()[1]) / (1024.0 * 1024.0), 2)
net_io['errs(收包错误的包量)'] = round(float(line[1].split()[2]) / (1024.0 * 1024.0), 2)
net_io['drop(收包丢弃的包量)'] = round(float(line[1].split()[3]) / (1024.0 * 1024.0), 2)
net_io['Transmit(发包的字节数)'] = round(float(line[1].split()[8]) / (1024.0 * 1024.0), 2)
net_io['packets(发包正确的包量)'] = round(float(line[1].split()[9]) / (1024.0 * 1024.0), 2)
net_io['errs(发包错误的包量)'] = round(float(line[1].split()[10]) / (1024.0 * 1024.0), 2)
net_io['drop(发包丢弃的包量)'] = round(float(line[1].split()[11]) / (1024.0 * 1024.0), 2)
net[eth_name] = net_io
for it in net.items():
print(it)
"""
磁盘空间监控
"""
def disk_stat(self):
stdout = self.client.exec_command("df -h", )[1]
content = stdout.readlines()
print('************************磁盘空间监控****************************')
print("*******************时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "******************")
for i in content[1:]:
i = i.replace('\n','').split()
print("\t文件系统:", i[0],)
print("\t容量:", i[1],)
print("\t已用:", i[2],)
print("\t可用:", i[3],)
print("\t已用%挂载点:", i[4])
"""
端口监控
一般是远程服务器用户名用户
"""
def getComStr(self):
stdout = self.client.exec_command("netstat -tpln", )[1]
content = stdout.readlines()
print('content', content)
print('******************************端口监控*********************************')
print("*******************时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "******************")
for i in content[1:]:
i = i.replace('\n', '').split()
print('Proto:',i[0])
print('Recv-Q:',i[1])
print('Send-Q:',i[2])
print('Local Address:',i[3])
print('Foreign Address:',i[4])
print('State:',i[5])
print(' PID/Program name:',i[6])
moniter().mem_info()
moniter().vm_stat_info()
moniter().cpu_info()
moniter().load_stat()
moniter().ionetwork()
moniter().disk_stat()
moniter().getComStr()
运行结果
内存监控***
*******************时间: 2021-06-09 16:07:32 ******************
总内存: 33730478080
空闲内存: 30524903424
给文件的缓冲大小: 327045120
高速缓冲存储器使用的大小: 1392988160
被高速缓冲存储用的交换空间大小: 0
给文件的缓冲大小: 327045120
交换内存利用率: 0.0
内存利用率: 4.40 %
内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息监控
*******************时间: 2021-06-09 16:07:33 ******************
等待运行进程的数量: 0
处于不间断状态的进程: 0
使用虚拟内存(swap)的总量: 0
空闲的内存总量: 29808196
用作缓冲的内存总量: 319380
用作缓存的内存总量: 1579588
交换出内存总量 : 0
交换入内存总量 : 0
从一个块设备接收: 0
发送到块设备: 1
每秒的中断数: 2
每秒的上下文切换数: 2
用户空间上进程运行的时间百分比: 0
内核空间上进程运行的时间百分比: 0
闲置时间百分比: 100
等待IO的时间百分比: 0
从虚拟机偷取的时间百分比: 0
cpu监控
************时间: 2021-06-09 16:07:34 ******************
CPU属于的编号: 0
CPU制造商: GenuineIntel
CPU产品系列代号: 6
CPU属于其系列中的哪一代的代号: 63
CPU属于的名字及其编号、标称主频: Intel® Xeon® CPU E5-2680 v3 @ 2.50GHz
CPU属于制作更新版本: 2
CPU的实际使用主频: 2499.998
CPU二级缓存大小: 30720 KB
单个CPU的标号: 0
单个CPU逻辑物理核数: 1
当前物理核在其所处CPU中的编号,这个编号不一定连续.: 0
该逻辑核所处CPU的物理核数: 1
用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续: 0
是否具有浮点运算单元(Floating Point Unit): yes
是否支持浮点计算异常: yes
执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容.: 15
表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection): yes
当前CPU支持的功能: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat arch_capabilities
在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second): 4999.99
每次刷新缓存的大小单位: 64
缓存地址对齐单位: 64
可访问地址空间位数: 43 bits physical, 48 bits virtual
对能源管理的支持:
CPU属于的编号: 1
CPU制造商: GenuineIntel
CPU产品系列代号: 6
CPU属于其系列中的哪一代的代号: 63
CPU属于的名字及其编号、标称主频: Intel® Xeon® CPU E5-2680 v3 @ 2.50GHz
CPU属于制作更新版本: 2
CPU的实际使用主频: 2499.998
CPU二级缓存大小: 30720 KB
单个CPU的标号: 2
单个CPU逻辑物理核数: 1
当前物理核在其所处CPU中的编号,这个编号不一定连续.: 0
该逻辑核所处CPU的物理核数: 1
用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续: 2
是否具有浮点运算单元(Floating Point Unit): yes
是否支持浮点计算异常: yes
执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容.: 15
表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection): yes
当前CPU支持的功能: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat arch_capabilities
在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second): 4999.99
每次刷新缓存的大小单位: 64
缓存地址对齐单位: 64
可访问地址空间位数: 43 bits physical, 48 bits virtual
对能源管理的支持:
CPU属于的编号: 2
CPU制造商: GenuineIntel
CPU产品系列代号: 6
CPU属于其系列中的哪一代的代号: 63
CPU属于的名字及其编号、标称主频: Intel® Xeon® CPU E5-2680 v3 @ 2.50GHz
CPU属于制作更新版本: 2
CPU的实际使用主频: 2499.998
CPU二级缓存大小: 30720 KB
单个CPU的标号: 4
单个CPU逻辑物理核数: 1
当前物理核在其所处CPU中的编号,这个编号不一定连续.: 0
该逻辑核所处CPU的物理核数: 1
用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续: 4
是否具有浮点运算单元(Floating Point Unit): yes
是否支持浮点计算异常: yes
执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容.: 15
表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection): yes
当前CPU支持的功能: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat arch_capabilities
在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second): 4999.99
每次刷新缓存的大小单位: 64
缓存地址对齐单位: 64
可访问地址空间位数: 43 bits physical, 48 bits virtual
对能源管理的支持:
CPU属于的编号: 3
CPU制造商: GenuineIntel
CPU产品系列代号: 6
CPU属于其系列中的哪一代的代号: 63
CPU属于的名字及其编号、标称主频: Intel® Xeon® CPU E5-2680 v3 @ 2.50GHz
CPU属于制作更新版本: 2
CPU的实际使用主频: 2499.998
CPU二级缓存大小: 30720 KB
单个CPU的标号: 6
单个CPU逻辑物理核数: 1
当前物理核在其所处CPU中的编号,这个编号不一定连续.: 0
该逻辑核所处CPU的物理核数: 1
用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续: 6
是否具有浮点运算单元(Floating Point Unit): yes
是否支持浮点计算异常: yes
执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容.: 15
表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection): yes
当前CPU支持的功能: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat arch_capabilities
在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second): 4999.99
每次刷新缓存的大小单位: 64
缓存地址对齐单位: 64
可访问地址空间位数: 43 bits physical, 48 bits virtual
对能源管理的支持:
CPU属于的编号: 4
CPU制造商: GenuineIntel
CPU产品系列代号: 6
CPU属于其系列中的哪一代的代号: 63
CPU属于的名字及其编号、标称主频: Intel® Xeon® CPU E5-2680 v3 @ 2.50GHz
CPU属于制作更新版本: 2
CPU的实际使用主频: 2499.998
CPU二级缓存大小: 30720 KB
单个CPU的标号: 8
单个CPU逻辑物理核数: 1
当前物理核在其所处CPU中的编号,这个编号不一定连续.: 0
该逻辑核所处CPU的物理核数: 1
用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续: 8
是否具有浮点运算单元(Floating Point Unit): yes
是否支持浮点计算异常: yes
执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容.: 15
表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection): yes
当前CPU支持的功能: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat arch_capabilities
在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second): 4999.99
每次刷新缓存的大小单位: 64
缓存地址对齐单位: 64
可访问地址空间位数: 43 bits physical, 48 bits virtual
对能源管理的支持:
CPU属于的编号: 5
CPU制造商: GenuineIntel
CPU产品系列代号: 6
CPU属于其系列中的哪一代的代号: 63
CPU属于的名字及其编号、标称主频: Intel® Xeon® CPU E5-2680 v3 @ 2.50GHz
CPU属于制作更新版本: 2
CPU的实际使用主频: 2499.998
CPU二级缓存大小: 30720 KB
单个CPU的标号: 10
单个CPU逻辑物理核数: 1
当前物理核在其所处CPU中的编号,这个编号不一定连续.: 0
该逻辑核所处CPU的物理核数: 1
用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续: 10
是否具有浮点运算单元(Floating Point Unit): yes
是否支持浮点计算异常: yes
执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容.: 15
表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection): yes
当前CPU支持的功能: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat arch_capabilities
在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second): 4999.99
每次刷新缓存的大小单位: 64
缓存地址对齐单位: 64
可访问地址空间位数: 43 bits physical, 48 bits virtual
对能源管理的支持:
CPU属于的编号: 6
CPU制造商: GenuineIntel
CPU产品系列代号: 6
CPU属于其系列中的哪一代的代号: 63
CPU属于的名字及其编号、标称主频: Intel® Xeon® CPU E5-2680 v3 @ 2.50GHz
CPU属于制作更新版本: 2
CPU的实际使用主频: 2499.998
CPU二级缓存大小: 30720 KB
单个CPU的标号: 12
单个CPU逻辑物理核数: 1
当前物理核在其所处CPU中的编号,这个编号不一定连续.: 0
该逻辑核所处CPU的物理核数: 1
用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续: 12
是否具有浮点运算单元(Floating Point Unit): yes
是否支持浮点计算异常: yes
执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容.: 15
表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection): yes
当前CPU支持的功能: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat arch_capabilities
在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second): 4999.99
每次刷新缓存的大小单位: 64
缓存地址对齐单位: 64
可访问地址空间位数: 43 bits physical, 48 bits virtual
对能源管理的支持:
CPU属于的编号: 7
CPU制造商: GenuineIntel
CPU产品系列代号: 6
CPU属于其系列中的哪一代的代号: 63
CPU属于的名字及其编号、标称主频: Intel® Xeon® CPU E5-2680 v3 @ 2.50GHz
CPU属于制作更新版本: 2
CPU的实际使用主频: 2499.998
CPU二级缓存大小: 30720 KB
单个CPU的标号: 14
单个CPU逻辑物理核数: 1
当前物理核在其所处CPU中的编号,这个编号不一定连续.: 0
该逻辑核所处CPU的物理核数: 1
用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续: 14
是否具有浮点运算单元(Floating Point Unit): yes
是否支持浮点计算异常: yes
执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容.: 15
表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection): yes
当前CPU支持的功能: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat arch_capabilities
在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second): 4999.99
每次刷新缓存的大小单位: 64
缓存地址对齐单位: 64
可访问地址空间位数: 43 bits physical, 48 bits virtual
对能源管理的支持:
负载均衡监控
"时间:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), ""
系统5分钟前的平均负载: 0.01
系统10分钟前的平均负载: 0.02
系统15分钟前的平均负载: 0.00
分子是正在运行的进程数,分母为总进程数: 1/421
最近运行的进程id: 20825
获取网络接口的输入和输出监控
***************时间: 2021-06-09 16:07:35 ******************
(‘ens160’, {‘Receive(收包的字节数)’: 546.54, ‘packets(收包正确的包量)’: 3.4, ‘errs(收包错误的包量)’: 0.0, ‘drop(收包丢弃的包量)’: 0.0, ‘Transmit(发包的字节数)’: 487.53, ‘packets(发包正确的包量)’: 0.72, ‘errs(发包错误的包量)’: 0.0, ‘drop(发包丢弃的包量)’: 0.0})
(‘vethaea249b’, {‘Receive(收包的字节数)’: 620.43, ‘packets(收包正确的包量)’: 3.15, ‘errs(收包错误的包量)’: 0.0, ‘drop(收包丢弃的包量)’: 0.0, ‘Transmit(发包的字节数)’: 654.3, ‘packets(发包正确的包量)’: 2.74, ‘errs(发包错误的包量)’: 0.0, ‘drop(发包丢弃的包量)’: 0.0})
(‘docker0’, {‘Receive(收包的字节数)’: 576.35, ‘packets(收包正确的包量)’: 3.15, ‘errs(收包错误的包量)’: 0.0, ‘drop(收包丢弃的包量)’: 0.0, ‘Transmit(发包的字节数)’: 654.28, ‘packets(发包正确的包量)’: 2.74, ‘errs(发包错误的包量)’: 0.0, ‘drop(发包丢弃的包量)’: 0.0})
(‘lo’, {‘Receive(收包的字节数)’: 1313.09, ‘packets(收包正确的包量)’: 7.38, ‘errs(收包错误的包量)’: 0.0, ‘drop(收包丢弃的包量)’: 0.0, ‘Transmit(发包的字节数)’: 1313.09, ‘packets(发包正确的包量)’: 7.38, ‘errs(发包错误的包量)’: 0.0, ‘drop(发包丢弃的包量)’: 0.0})
磁盘空间监控
**时间: 2021-06-09 16:07:36 ******************
文件系统: udev
容量: 16G
已用: 0
可用: 16G
已用%挂载点: 0%
文件系统: tmpfs
容量: 3.2G
已用: 1.1M
可用: 3.2G
已用%挂载点: 1%
文件系统: /dev/mapper/ubuntu–vg-ubuntu–lv
容量: 31G
已用: 13G
可用: 17G
已用%挂载点: 43%
文件系统: tmpfs
容量: 16G
已用: 4.0K
可用: 16G
已用%挂载点: 1%
文件系统: tmpfs
容量: 5.0M
已用: 0
可用: 5.0M
已用%挂载点: 0%
文件系统: tmpfs
容量: 16G
已用: 0
可用: 16G
已用%挂载点: 0%
文件系统: /dev/sda2
容量: 976M
已用: 148M
可用: 762M
已用%挂载点: 17%
文件系统: tmpfs
容量: 3.2G
已用: 0
可用: 3.2G
已用%挂载点: 0%
content [‘Active Internet connections (only servers)\n’, ‘Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name \n’, 'tcp 0 0 0.0.0.0:5557 0.0.0.0: LISTEN 17186/python3 \n’, 'tcp 0 0 127.0.0.53:53 0.0.0.0: LISTEN - \n’, 'tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN - \n’, 'tcp 0 0 10.8.250.71:8089 0.0.0.0: LISTEN 17186/python3 \n’, 'tcp 0 0 127.0.0.1:6010 0.0.0.0: LISTEN - \n’, 'tcp 0 0 127.0.0.1:36539 0.0.0.0: LISTEN - \n’, 'tcp 0 0 10.8.250.71:8000 0.0.0.0: LISTEN - \n’, 'tcp 0 0 127.0.0.1:3306 0.0.0.0: LISTEN - \n’, 'tcp 0 0 0.0.0.0:6379 0.0.0.0: LISTEN - \n’, 'tcp 0 0 0.0.0.0:80 0.0.0.0: LISTEN - \n’, 'tcp6 0 0 :::22 ::: LISTEN - \n’, 'tcp6 0 0 ::1:6010 ::: LISTEN - \n’, 'tcp6 0 0 :::4444 ::: LISTEN - \n’, 'tcp6 0 0 :::80 ::: LISTEN - \n’]
端口监控
*****时间: 2021-06-09 16:07:37 ******************
Proto: Proto
Recv-Q: Recv-Q
Send-Q: Send-Q
Local Address: Local
Foreign Address: Address
State: Foreign
PID/Program name: Address
Proto: tcp
Recv-Q: 0
Send-Q: 0
Local Address: 0.0.0.0:5557
Foreign Address: 0.0.0.0:
State: LISTEN
PID/Program name: 17186/python3
Proto: tcp
Recv-Q: 0
Send-Q: 0
Local Address: 127.0.0.53:53
Foreign Address: 0.0.0.0:
State: LISTEN
PID/Program name: -
Proto: tcp
Recv-Q: 0
Send-Q: 0
Local Address: 0.0.0.0:22
Foreign Address: 0.0.0.0:
State: LISTEN
PID/Program name: -
Proto: tcp
Recv-Q: 0
Send-Q: 0
Local Address: 10.8.250.71:8089
Foreign Address: 0.0.0.0:
State: LISTEN
PID/Program name: 17186/python3
Proto: tcp
Recv-Q: 0
Send-Q: 0
Local Address: 127.0.0.1:6010
Foreign Address: 0.0.0.0:
State: LISTEN
PID/Program name: -
Proto: tcp
Recv-Q: 0
Send-Q: 0
Local Address: 127.0.0.1:36539
Foreign Address: 0.0.0.0:
State: LISTEN
PID/Program name: -
Proto: tcp
Recv-Q: 0
Send-Q: 0
Local Address: 10.8.250.71:8000
Foreign Address: 0.0.0.0:
State: LISTEN
PID/Program name: -
Proto: tcp
Recv-Q: 0
Send-Q: 0
Local Address: 127.0.0.1:3306
Foreign Address: 0.0.0.0:
State: LISTEN
PID/Program name: -
Proto: tcp
Recv-Q: 0
Send-Q: 0
Local Address: 0.0.0.0:6379
Foreign Address: 0.0.0.0:
State: LISTEN
PID/Program name: -
Proto: tcp
Recv-Q: 0
Send-Q: 0
Local Address: 0.0.0.0:80
Foreign Address: 0.0.0.0:
State: LISTEN
PID/Program name: -
Proto: tcp6
Recv-Q: 0
Send-Q: 0
Local Address: :::22
Foreign Address: :::
State: LISTEN
PID/Program name: -
Proto: tcp6
Recv-Q: 0
Send-Q: 0
Local Address: ::1:6010
Foreign Address: :::
State: LISTEN
PID/Program name: -
Proto: tcp6
Recv-Q: 0
Send-Q: 0
Local Address: :::4444
Foreign Address: :::
State: LISTEN
PID/Program name: -
Proto: tcp6
Recv-Q: 0
Send-Q: 0
Local Address: :::80
Foreign Address: :::
State: LISTEN
PID/Program name: -