学校有无用linux服务器,常用的linux服务器有哪些,老师有没有什么秘诀?怎么快速有效收集服务器状态?...

常用的linux服务器有centos、redhat、ubuntu等,收集服务器的状态可采用saltstack python api,具体代码如下:import salt.client

client = salt.client.LocalClient()

status = client.cmd("*", "test.ping")

python的psutil模块,可对服务器磁盘、内存、CPU、进程、系统用户、网络使用状态进行检测,以下是老师写的案例:class Sinfo:

# 1.系统登录用户

@classmethod

def users(cls):

data = psutil.users()

data = map(

lambda v:

dict(

name=v.name,

terminal=v.terminal,

host=v.host,

started=datetime.datetime.fromtimestamp(v.started).strftime("%Y-%m-%d %H:%M:%S")

), data)

return data

# 2.最近开机时间

@classmethod

def boot_time(cls):

data = psutil.boot_time()

data = dict(

boot_time=datetime.datetime.fromtimestamp(data).strftime("%Y-%m-%d %H:%M:%S")

)

return data

# 3.内存信息

@classmethod

def virtual_memory(cls):

data = psutil.virtual_memory()

data = dict(

total=round(data.total / (1024 ** 3.0), 4),

available=round(data.available / (1024 ** 3.0), 4),

percent=data.percent,

used=round(data.used / (1024 ** 3.0), 4),

free=round(data.free / (1024 ** 3.0), 4),

active=round(data.active / (1024 ** 3.0), 4),

inactive=round(data.inactive / (1024 ** 3.0), 4),

buffers=round(data.buffers / (1024 ** 3.0), 4),

cached=round(data.cached / (1024 ** 3.0), 4),

shared=round(data.shared / (1024 ** 3.0), 4),

)

return data

# 4.交换分区信息

@classmethod

def swap_memory(cls):

data = psutil.swap_memory()

data = dict(

total=round(data.total / (1024 ** 3.0), 4),

used=round(data.used / (1024 ** 3.0), 4),

free=round(data.free / (1024 ** 3.0), 4),

percent=data.percent,

sin=data.sin,

sout=data.sout

)

return data

# 5.网络信息

@classmethod

def net(cls):

net_io_counters = psutil.net_io_counters(pernic=True)

net_if_addrs = psutil.net_if_addrs()

data = [

dict(

name=k,

bytes_sent=v.bytes_sent,

bytes_recv=v.bytes_recv,

packets_sent=v.packets_sent,

packets_recv=v.packets_recv,

errin=v.errin,

errout=v.errout,

dropin=v.dropin,

dropout=v.dropout,

net_if_addr=map(

lambda v:

dict(

address=v.address,

netmask=v.netmask,

broadcast=v.broadcast,

family=v.family

),

net_if_addrs[k]

)

)

for k, v in net_io_counters.items()

]

return data

# 6.磁盘信息

@classmethod

def disk(cls):

disk_partitions = psutil.disk_partitions()

disk_io_counters = psutil.disk_io_counters(perdisk=False)

data = dict(

disk_partitions=map(

lambda v: dict(

device=v.device,

mountpoint=v.mountpoint,

fstype=v.fstype,

opts=v.opts,

disk_usage=dict(

total=psutil.disk_usage(v.mountpoint).total,

used=psutil.disk_usage(v.mountpoint).used,

free=psutil.disk_usage(v.mountpoint).free,

percent=psutil.disk_usage(v.mountpoint).percent

)

),

disk_partitions

),

disk_io_counters=dict(

read_count=disk_io_counters.read_count,

write_count=disk_io_counters.write_count,

read_bytes=disk_io_counters.read_bytes,

write_bytes=disk_io_counters.write_bytes,

read_time=datetime.datetime.fromtimestamp(disk_io_counters.read_time).strftime("%Y-%m-%d %H:%M:%S"),

write_time=datetime.datetime.fromtimestamp(disk_io_counters.write_time).strftime("%Y-%m-%d %H:%M:%S"),

read_merged_count=disk_io_counters.read_merged_count,

write_merged_count=disk_io_counters.write_merged_count,

busy_time=datetime.datetime.fromtimestamp(disk_io_counters.busy_time).strftime("%Y-%m-%d %H:%M:%S")

)

)

return data

# 7.进程信息

@classmethod

def pids(cls):

data = []

try:

pids_list = psutil.pids()

data = map(

lambda v:

dict(

name=v.name(),

pid=v.pid,

exe=v.exe(),

cwd=v.cwd(),

status=v.status(),

create_time=datetime.datetime.fromtimestamp(v.create_time()).strftime("%Y-%m-%d %H:%M:%S"),

memory_percent=v.memory_percent(),

num_threads=v.num_threads(),

username=v.username(),

terminal=v.terminal(),

cpu_num=v.cpu_num(),

io_counters=dict(

read_count=v.io_counters().read_count,

write_count=v.io_counters().write_count,

read_bytes=v.io_counters().read_bytes,

write_bytes=v.io_counters().write_bytes,

),

is_running=v.is_running()

),

map(

lambda v:

psutil.Process(v),

filter(

lambda val:

psutil.pid_exists(val),

pids_list

)

)

)

except Exception, e:

pass

return data

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值