捕获远程linux服务器的性能?

时间:2013-02-24 14:22:07

标签: python linux performance automation

我想捕获远程linux服务器的性能(CPU和内存使用情况),比如在终端中不时输出TOP命令,并将其导入到本地Windows机器上的excel文件中。 我正在考虑使用python连接到服务器并执行命令并记录其输出。 我是python的新手,请提出一些解决这个问题的方法,比如我应该从哪里开始。

2 个答案:

答案 0 :(得分:2)

使用Python模块“fabric”,然后使用fabric run函数捕获远程主机上命令的输出。

它看起来像这样:

import csv
from fabric.api import *

env.hosts = ['user@remotehost:22']
FILENAME = '/tmp/info.csv'


def get_info():
    output = run('top -bn 1')
    lines = output.splitlines()

    with open(FILENAME, 'wb') as csvfile:
        info = csv.writer(csvfile)
        for l in lines:
             info.writerow(l.split())

然后从脚本目录运行:fab get_info

它将从远程计算机的“top”输出中写入本地csv文件。然后可以从Excel打开csv文件。知道csv文件看起来有点难看。但这一切都是为了将​​最后一行改为更聪明的东西。

答案 1 :(得分:1)

查看os.times

>>> import os
>>> os.times()
(0.01, 0.0, 0.0, 0.0, 1361716040.0)
>>> help(os.times)
times() -> (utime, stime, cutime, cstime, elapsed_time)

Return a tuple of floating point numbers indicating process times.

..并以给定频率向mimi os.times重复拨打top一段时间。

将其管理到Excel文档不太简单,但Excel可以理解csv,逗号分隔的变量文件,所以可能类似

import time
from datetime import datetime
import os

with open('output.csv', 'w') as co:    
    for i in range(100):
        co.write('%s, %f,\n' % (datetime.now(), os.times()[0]))

    time.sleep(5)

这将打开一个文件“output.csv”,写下当前时间和CPU使用情况,等待5秒然后重复100次。然后可以在Excel中打开csv文件。

示例输出:

2013-02-24 14:40:12.254806, 0.01,
2013-02-24 14:40:12.304922, 0.05,
2013-02-24 14:40:12.357945, 0.06,
2013-02-24 14:40:12.404362, 0.04,

要连接到远程服务器,请查看Python ssh2模块paramiko

编辑为@ Christian Groleau,如果您要使用csv文件进行繁重的工作,请查看csv python模块。 Someone甚至编写了一些用于直接读/写excel文件的模块(不是python很棒吗?!)