问题描述
我正在寻找系统监视工具,它们是GUI和Cli或基于Web的工具,其中包括基本功能,例如
-
CPU使用率
-
公羊使用
-
交换使用
-
磁盘使用情况(空间/I /O)
-
热监测
我知道有很多工具可以使用,但我正在寻找一种具有这些基本功能的工具。
最佳解决方案
浏览 – 关注你的系统
Glances是一款免费软件(根据LGPL授权),可通过文本界面监控您的GNU /Linux或BSD操作系统。 Glances使用库libstatgrab从您的系统中检索信息,并使用Python开发。
Installation
打开终端(Ctrl
+ Alt
+ T
)并运行以下命令:
从Ubuntu 16.04及以上版本,您只需键入sudo apt install glances
,但版本2.3 have this bug。其他:
轻松安装脚本Glances
curl -L https://raw.githubusercontent.com/nicolargo/glancesautoinstall/master/install.sh | sudo /bin/bash
要么
wget -O- https://raw.githubusercontent.com/nicolargo/glancesautoinstall/master/install.sh | sudo /bin/bash
手动安装
sudo apt-get install python-pip build-essential python-dev lm-sensors
sudo pip install psutil logutils bottle batinfo https://bitbucket.org/gleb_zhulik/py3sensors/get/tip.tar.gz zeroconf netifaces pymdstat influxdb elasticsearch potsdb statsd pystache docker-py pysnmp pika py-cpuinfo bernhard
sudo pip install glances
基本用法
要启动glances
,只需在终端中键入glances
。
通过浏览,您可以看到关于系统资源的大量信息:默认情况下,CPU,负载,内存,交换网络,磁盘I /O和进程全部在一个页面中,颜色代码表示:
GREEN : the statistic is “OK”
BLUE : the statistic is “CAREFUL” (to watch)
VIOLET : the statistic is “WARNING” (alert)
RED : the statistic is “CRITICAL” (critical)
当Glances正在运行时,您可以按下一些特殊的键给它发送命令:
c: Sort processes by CPU%
m: Sort processes by MEM%
p: Sort processes by name
i: Sort processes by IO Rate
d: Show/hide disk I/O stats
f: Show/hide file system stats
n: Show/hide network stats
s: Show/hide sensors stats
b: Bit/s or Byte/s for network IO
w: Delete warning logs
x: Delete warning and critical logs
1: Global CPU or Per Core stats
h: Show/hide this help message
q: Quit (Esc and Ctrl-C also work)
l: Show/hide log messages
Cpu,Ram,交换监控
磁盘监视
系统热量监测
如果键入glances --help
,则会发现(-e
启用传感器模块(Linux-only))
glances -e
配置文件
您可以在Glances配置文件中设置阈值,在GNU /Linux上,默认配置文件位于/etc/glances/glances.conf
中。
客户端/服务器模式
此监视工具的另一个有趣功能是,只需键入glances -s
即可在服务器模式下启动它,这将为Glances服务器运行在0.0.0.0:61209上提供输出,现在可以使用glance从另一台计算机连接到它–c @server其中@server是服务器的IP地址或主机名。
Glances使用XML /RPC服务器,可以被其他客户端软件使用。在服务器模式下,您可以设置绑定地址(-B ADDRESS)和侦听TCP端口(-p PORT),默认绑定地址为0.0.0.0(Glances将监听所有网络接口),并且TCP端口为61209.在客户端模式下,可以设置服务器的TCP端口(-p端口)。在客户端/服务器模式下,服务器端设置限制。版本1.6引入了一个可选的密码来访问服务器(-P密码),如果在服务器上设置的话,也必须在客户端上使用。
Update
举例来说,监控juju容器是如何看起来像Large Image
在终端号1中,Glances在服务器模式下运行,在终端号2中,juju容器正在运行apt-get update
&在终端3中glances -c 192.168.1.103
Glances已连接到容器IP
次佳解决方案
indicator-SysMonitor
Indicator-SysMonitor做了一些,但做得很好。一旦安装并运行,它将显示顶部面板上CPU和RAM的使用情况。简单。
从here下载
Conky的
我个人的最爱之一
Screenlet可以在Ubuntu软件中心的screenlets-all软件包中找到一堆不同风格的CPU和RAM监视器。
眼神
安装:
sudo apt-get install python-pip build-essential python-dev
sudo pip install Glances
sudo pip install PySensors
VMSTAT
显示有关CPU,内存,进程等的信息
IOSTAT
该命令行工具将显示有关CPU的统计信息,硬盘分区的I /O信息,网络文件系统(NFS)等。要安装iostat,请运行以下命令:
sudo apt-get install sysstat
要启动报告,请运行以下命令:
iostat
要仅检查CPU统计信息,请使用以下命令:
iostat -c
有关更多参数,请使用以下命令:
iostat --help
MPSTAT
mpstat命令行实用程序将显示每个处理器的平均CPU使用情况。要运行它,只需使用以下命令:
mpstat
对于每个处理器的CPU使用率,请使用此命令:
mpstat -P ALL
Saidar
Saidar还允许通过命令行来监视系统设备活动。
你可以用这个命令来安装:
sudo apt-get install saidar
要开始监控,请运行以下命令:
saidar -c -d 1
统计信息将每秒刷新一次。
的gkrellm
GKrellM是一个可定制的小部件,具有各种主题,可在桌面系统设备信息(CPU,温度,内存,网络等)上显示。
要安装GKrellM,请运行以下命令:
sudo apt-get install gkrellm
Monitorix
Monitorix是另一个具有用于监视系统设备的web-based用户界面的应用程序。
使用以下命令安装它:
sudo add-apt-repository ppa:upubuntu-com/ppa
sudo apt-get update
sudo apt-get install monitorix
通过此URL启动Monitorix:
http://localhost/monitorix/
第三种解决方案
以下是用于监视Linux系统的工具
-
系统命令如
top
,free -m
,vmstat
,iostat
,iotop
,iotop
,sar
,netstat
等等。当您调试问题时,没有任何东西在这些linux实用程序附近出现。这些命令为您提供了一个清晰的画面,它将进入您的服务器 -
SeaLion:代理执行#1(也是用户定义的)中提到的所有命令,这些命令的输出可以在漂亮的Web界面中访问。当您在数百台服务器上进行调试时,此工具非常方便,因为安装非常简单。它的免费
-
Nagios:它是所有监视/警报工具的母亲。这是非常多的定制,但非常难以为初学者设置。有几套叫做nagios插件的工具涵盖了几乎所有重要的Linux指标
-
穆宁
-
服务器密度:一种基于云计算的付费服务,可收集重要的Linux指标并为用户编写自己的插件提供支持。
-
New Relic:另一个众所周知的托管监控服务。
-
ZABBIX
第四种方案
在过去的几年中,我使用了:
System Load Indicator
可从软件中心获得
第五种方案
最佳
top是监控软件,列出所有CPU /RAM使用情况,整体CPU /RAM使用情况等等。大多数情况下默认安装
HTOP
htop就像顶级的扩展版本。它具有上述所有功能,但您可以看到子进程并自定义显示的所有内容。它也有颜色。
iotop
iotop专门用于监控硬核I /O它列出所有进程并显示其硬盘驱动器的使用情况以供读取和写入。
第六种方案
您可能想尝试sysmon。尽管不像Glances那么华丽,但它非常简单易用。
如果你想变得肮脏,并在python中做一些脚本,下面是一些使用Python进行系统监控的基础知识,以帮助你开始。
您需要一个名为psutil
的外部模块来监视大多数事情。使用外部模块安装程序最容易,而不是从源代码构建。
注意:这些例子是用Python 2.7编写的
sudo apt-get install pip
sudo pip install psutil
现在我们已经安装了模块,我们可以开始编码。
首先,创建一个名为usage.py
的文件。
gedit ~/usage.py
从导入psutil
开始
import psutil
然后,创建一个函数来监视CPU核心运行的百分比。
def cpu_perc():
cpu_perc = psutil.cpu_percent(interval=1, percpu=True)
for i in range(len(cpu_perc)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
让我们来分解一下,我们会吗?
第一行cpu_num = psutil.cpu_percent(interval=1, percpu=True)
查找CPU内核运行的百分比,并将其分配到名为cpu_perc
的列表。
这个循环就在这里
for i in range(len(cpu_num)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
是一个for循环,打印出每个CPU内核的当前百分比。
我们来添加内存使用情况。
创建一个名为ram_perc
的函数。
def ram_perc():
mem = psutil.virtual_memory()
mem_perc = mem.percent
print "RAM: ", mem_perc, "%"
psutil.virtual_memory
给出一个数据集,其中包含关于计算机中RAM的不同事实。
接下来,您可以添加一些有关您的网络的事实。
def net():
net = psutil.net_io_counters()
mbytes_sent = float(net.bytes_sent) / 1048576
mbytes_recv = float(net.bytes_recv) / 1048576
print "MB sent: ", mbytes_sent
print "MB received: ", mbytes_recv
由于psutil.net_io_counters()
仅向我们提供有关以字节为单位发送和接收的数据包的信息,因此需要进行一些转换。
要获得有关交换空间的一些信息,请添加此功能。
def swap_perc():
swap = psutil.swap_memory()
swap_perc = swap.percent
这个很简单。
温度很难做,所以你可能需要做一些自己的研究来弄清楚你的硬件可以使用什么。您将不得不显示某个文件的内容。
磁盘使用比温度要容易得多。您需要做的就是通过某个功能传递要监控的磁盘(即:/
)。
def disks():
if len(sys.argv) > 1:
for disk in range(1, len(sys.argv)):
tmp = psutil.disk_usage(sys.argv[disk])
print sys.argv[disk], "\n"
print "Megabytes total: ",
print str(float(tmp.total) / 1048576)
print "Megabytes used: ",
print str(float(tmp.used) / 1048576)
print "Megabytes free: ",
print str(float(tmp.free) / 1048576)
print "Percentage used: ",
print tmp.percent, "\n"
psutil.disk_usage
的原始输出是这样的,
>>>psutil.disk_usage('/')
sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
但您也可以只收到total
,used
,free
或percent
。
已完成的课程:(上述功能合并)
import psutil, os, sys
mem_perc = 0 #init var
swap_perc = 0 #init var
mbytes_sent = 0 #init var
mbytes_recv = 0 #init var
cpu_perc = 0 #init var
swap = 0 #init var
mem = 0 #init var
net = 0 #init var
def disp(degree):
global cpu_perc
global swap
global swap_perc
global mem
global mem_perc
global net
global mbytes_sent
global mbytes_recv
cpu_perc = psutil.cpu_percent(interval=1, percpu=True)
swap = psutil.swap_memory()
swap_perc = swap.percent
mem = psutil.virtual_memory()
mem_perc = mem.percent
net = psutil.net_io_counters()
mbytes_sent = float(net.bytes_sent) / 1048576
mbytes_recv = float(net.bytes_recv) / 1048576
os.system('clear') #clear the screen
print "-"*30
print "CPU"
print "-"*30
print "CPU Temperature: " , degree, "'C"
for i in range(len(cpu_perc)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
print "-"*30
print "MEMORY"
print "-"*30
print "RAM: ", mem_perc, "%"
print "Swap: ", swap_perc, "%"
print "-"*30
print "NETWORK"
print "-"*30
print "MB sent: ", mbytes_sent
print "MB received: ", mbytes_recv
print "-"*30
print "DISKS"
print "-"*30
if len(sys.argv) > 1:
for disk in range(1, len(sys.argv)):
tmp = psutil.disk_usage(sys.argv[disk])
print sys.argv[disk], "\n"
print "Megabytes total: ",
print str(float(tmp.total) / 1048576)
print "Megabytes used: ",
print str(float(tmp.used) / 1048576)
print "Megabytes free: ",
print str(float(tmp.free) / 1048576)
print "Percentage used: ",
print tmp.percent, "\n"
def main():
print("Press Ctrl+C to exit")
while True:
temp = open("/sys/class/thermal/thermal_zone0/temp").read().strip().lstrip('temperature :').rstrip(' C')
temp = float(temp) / 1000
disp(temp)
main()
temp = open("/sys/class/thermal/thermal_zone0/temp").read().strip().lstrip('temperature :').rstrip(' C')
行可能不适用于您的硬件配置。
从命令行运行该程序。将要监视的磁盘作为参数从命令行传递。
$ python usage.py /
Press Ctrl+C to exit
------------------------------
CPU
------------------------------
CPU Temperature: 39.0 'C
CPU Core 1 : 4.8 %
CPU Core 2 : 1.0 %
CPU Core 3 : 0.0 %
CPU Core 4 : 4.9 %
------------------------------
MEMORY
------------------------------
RAM: 33.6 %
Swap: 6.4 %
------------------------------
NETWORK
------------------------------
MB sent: 2.93382358551
MB received: 17.2131490707
------------------------------
DISKS
------------------------------
/
Megabytes total: 13952.484375
Megabytes used: 8542.6640625
Megabytes free: 4678.5703125
Percentage used: 61.2
/media/calvin/Data
Megabytes total: 326810.996094
Megabytes used: 57536.953125
Megabytes free: 269274.042969
Percentage used: 17.6
希望这可以帮助!评论你是否有任何问题。
https://github.com/calthecoder/sysmon-1.0.1
第七种方案
包systat有一个名为sar
的工具,可以满足您的所有需求。它还可以收集历史数据,以便您可以查看前一段时间发生的情况。
第八种方案
SeaLion可以很方便使用,因为它具有内置命令来监视您的服务器性能以及您可以添加自己的自定义命令,scirpts和日志输出。这是非常容易设置,并找出在特定时间出了什么问题。