如何监控系统的健康?
每个计算机系统都受益于适当的管理和监控。 密切关注系统运行情况将有助于您发现问题并快速解决问题。
有很多为此目的创建的命令行实用程序。 本指南将向您介绍一些在您的工具箱中最有用的应用程序。
目录
如何监控过程利用率?
最佳
之一的用于检查的进程的资源利用的最常用的工具是“ 顶部 ”。
Top提供了一个简单,实时的流程表,其中最大的消费者:
top
top - 14:45:52 up 29 min, 1 user, load average: 0.10, 0.09, 0.06 Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1019600k total, 393756k used, 625844k free, 11136k buffers Swap: 0k total, 0k used, 0k free, 316748k cached PID %MEM VIRT SWAP RES CODE DATA SHR nFLT nDRT S PR NI %CPU COMMAND 832 1.3 32364 18m 12m 896 11m 1688 1 0 S 20 0 0.0 bash 820 0.4 89456 83m 4008 488 948 3040 12 0 S 20 0 0.0 sshd 812 0.3 49948 46m 2828 488 616 2216 0 0 S 20 0 0.0 sshd 1 0.2 24192 21m 2108 152 868 1300 23 0 S 20 0 0.0 init 400 0.1 243m 242m 1420 344 216m 1084 0 0 S 20 0 0.0 rsyslogd
顶部有一些系统统计信息,包括过去一分钟,5分钟和15分钟的负载平均值。 它还显示内存和交换使用情况,以及各种进程状态的计数。
底部部分具有系统上的每个进程,由资源的最高用户组织。 此列表实时更新。
htop
虽然“顶部”在被包括默认几乎每个分布,改进的版本,称为“HTOP”是可从多数库下载。
要在Ubuntu上安装htop,请键入以下内容:
sudo apt-get install htop
运行htop,我们可以看到它有一个类似的输出,但是是彩色的,并且更具交互性:
htop
CPU[| 0.7%] Tasks: 21, 3 thr; 1 running Mem[||||||||||||| 64/995MB] Load average: 0.00 0.02 0.05 Swp[ 0/0MB] Uptime: 00:37:37 PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 2752 root 20 0 25660 1876 1364 R 0.0 0.2 0:00.06 htop 1 root 20 0 24192 2108 1300 S 0.0 0.2 0:00.55 /sbin/init 312 root 20 0 17224 640 444 S 0.0 0.1 0:00.04 upstart-udev-brid 314 root 20 0 21592 1360 760 S 0.0 0.1 0:00.04 /sbin/udevd --dae 394 messagebu 20 0 23808 688 436 S 0.0 0.1 0:00.01 dbus-daemon --sys 401 syslog 20 0 243M 1420 1084 S 0.0 0.1 0:00.07 rsyslogd -c5 402 syslog 20 0 243M 1420 1084 S 0.0 0.1 0:00.00 rsyslogd -c5
顶部部分更容易阅读,底部部分以更清晰的方式组织。
这里有一些键,将帮助您更有效地使用htop:
- L:通过内存使用量排序的进程
- 病人 :由处理器使用率排序进程
- ?访问帮助
- K:杀电流/标签的过程
- F2:设置HTOP。 您可以在这里选择显示选项。
- /搜索过程
有很多更多的选项,你可以通过帮助或设置访问。 这些应该是你探索htop的功能的第一站。
如何确定哪个程序正在使用我的带宽?
nethogs
如果您的网络连接似乎饱和,无法确定哪个应用程序是罪魁祸首,一个叫“nethogs”计划是找出一个不错的选择。
在Ubuntu上,可以使用以下命令安装nethogs:
sudo apt-get install nethogs
我们可以通过简单的输入:
nethogs
NetHogs version 0.8.0 PID USER PROGRAM DEV SENT RECEIVED 3379 root /usr/sbin/sshd eth0 0.485 0.182 KB/sec 820 root sshd: root@pts/0 eth0 0.427 0.052 KB/sec ? root unknown TCP 0.000 0.000 KB/sec TOTAL 0.912 0.233 KB/sec
正如你可以看到的,首先,nethogs输出很简单。 它将每个应用程序与其关联的网络流量相关联。
只有几个命令可以用来控制网猪:
- 玛 :“KB /秒”,“KB”,“B”之间切换显示,和“MB”。
- R:排序交通好评。
- 小号 :排序交通发送。
- 问 :退出
虽然这是一个简单的工具,nethogs是一个伟大的方式来关联流量与特定的应用程序。
IPTraf
IPTraf是另一个去监测网络流量的好方法。 它提供了许多不同的交互式监视接口。
在Ubuntu上,您可以使用以下命令安装IPTraf:
sudo apt-get install iptraf
要运行程序,只需使用root权限从命令行调用它:
sudo iptraf
??????????????????????????????????? ? IP traffic monitor ? ? General interface statistics ? ? Detailed interface statistics ? ? Statistical breakdowns... ? ? LAN station monitor ? ??????????????????????????????????? ? Filters... ? ??????????????????????????????????? ? Configure... ? ??????????????????????????????????? ? Exit ? ???????????????????????????????????
使用此菜单,您可以选择要访问的接口。
例如,要了解所有网络流量的概况,我们可以选择第一个菜单,然后选择“所有接口”。 它会给你一个看起来像这样的屏幕:
IPTraf ? TCP Connections (Source Host:Port) ?????????? Packets ??? Bytes Flags Iface ? ??192.241.xxx.xxx:22 > 369 82420 -PA- eth0 ? ??72.43.xxx.xxx:49488 > 381 19860 --A- eth0 ? ? ? ? ?
在这里,您可以看到您在所有网络接口上正在通信的IP地址。
如果你想有解析为域名的IP地址,可以通过退出屏幕的交通,选择“配置”,然后选择“ 反向DNS查找 ”启用反向DNS查找。
您还可以启用“TCP / UDP服务名称 ”使用服务,而不是端口的名称显示。
启用这两个选项后,显示可能如下所示:
TCP Connections (Source Host:Port) ?????????? Packets ??? Bytes Flags Iface ? ??192.241.xxx.xxx:ssh > 151 34924 -PA- eth0 ? ??rrcs-72-43-xxx-xxx.nyc.biz.rr.co:49488 > 155 8108 --A- eth0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TCP: 1 entries ???????????????????????????????????????????????? Active ?? ???????????????????????????????????????????????????????????????????????????????? ? UDP (72 bytes) from 192.241.xxx.xxx:43463 to 8.8.8.8:domain on eth0 ? ? UDP (66 bytes) from 192.241.xxx.xxx:53140 to 8.8.8.8:domain on eth0 ? ? UDP (135 bytes) from 8.8.8.8:domain to 192.241.xxx.xxx:41429 on eth0 ? ? UDP (119 bytes) from 8.8.8.8:domain to 192.241.xxx.xxx:43463 on eth0 ? ? UDP (110 bytes) from google-public-dns-a.googl:domain to 192.241.xxx.xxx:531 ?
还有几个其他界面可供您自行调查。
netstat
该“netstat的 ”命令用于收集网络信息的多功能工具。 它非常灵活和强大。
默认情况下,netstat打印一个打开的套接字列表:
netstat
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.241.187.204:ssh ip223.hichina.com:50324 ESTABLISHED tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 5 [ ] DGRAM 6559 /dev/log unix 3 [ ] STREAM CONNECTED 9386 unix 3 [ ] STREAM CONNECTED 9385 . . .
如果我们添加一个“-a”选项,它将列出所有端口,监听和不监听:
netstat -a
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED tcp6 0 0 [::]:ssh [::]:* LISTEN Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 6195 @/com/ubuntu/upstart unix 2 [ ACC ] STREAM LISTENING 7762 /var/run/acpid.socket unix 2 [ ACC ] STREAM LISTENING 6503 /var/run/dbus/system_bus_socket . . .
如果你想过滤只看到TCP或UDP连接,分别使用“-t”或“-u”标志:
netstat -at
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED tcp6 0 0 [::]:ssh [::]:* LISTEN
通过传递“-s”标志来查看统计信息:
netstat -s
Ip: 13500 total packets received 0 forwarded 0 incoming packets discarded 13500 incoming packets delivered 3078 requests sent out 16 dropped because of missing route Icmp: 41 ICMP messages received 0 input ICMP message failed. ICMP input histogram: echo requests: 1 echo replies: 40 . . .
如果要不断更新输出,可以使用“-c”标志。
还有许多其他选项可以更改输出。 浏览手册页以获得更多想法。
如何知道我有多少磁盘空间?
df
为了你离开你的驱动器的磁盘空间快速浏览,可以使用“ 东风 ”计划。
没有任何选项,其输出如下所示:
df
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda 31383196 1228936 28581396 5% / udev 505152 4 505148 1% /dev tmpfs 203920 204 203716 1% /run none 5120 0 5120 0% /run/lock none 509800 0 509800 0% /run/shm
这会以字节为单位输出磁盘使用情况,这可能有点难以阅读。
要解决这个问题,我们可以指定以人类可读的格式输出:
Filesystem Size Used Avail Use% Mounted on /dev/vda 30G 1.2G 28G 5% / udev 494M 4.0K 494M 1% /dev tmpfs 200M 204K 199M 1% /run none 5.0M 0 5.0M 0% /run/lock none 498M 0 498M 0% /run/shm
如果我们想要查看所有文件系统上可用的总磁盘空间,我们可以传递“--total”选项。 这将在底部添加一行,其中包含摘要信息:
df -h --total
Filesystem Size Used Avail Use% Mounted on /dev/vda 30G 1.2G 28G 5% / udev 494M 4.0K 494M 1% /dev tmpfs 200M 204K 199M 1% /run none 5.0M 0 5.0M 0% /run/lock none 498M 0 498M 0% /run/shm total 32G 1.2G 29G 4%
杜
虽然DF是歌厅的概述一种简单的方法,“ 嘟 ”给出了什么占用的空间在系统上更好的画面。
该命令将分析当前目录和任何子目录的使用情况。 du的默认输出如下所示:
du
4 ./.cache 8 ./.ssh 28 .
再次,我们可以通过传递“-h”来指定人类可读的输出:
du -h
4.0K ./.cache 8.0K ./.ssh 28K .
要查看文件大小以及目录,请键入以下内容:
du -a
0 ./.cache/motd.legal-displayed 4 ./.cache 4 ./.ssh/authorized_keys 8 ./.ssh 4 ./.profile 4 ./.bashrc 4 ./.bash_history 28 .
对于底部的总计,您可以添加“-c”选项:
du -c
4 ./.cache 8 ./.ssh 28 . 28 total
如果你只对整体感兴趣,而不是具体细节,你可以发布:
du -s
28 .
改进
这两个工具有改进的版本,可以在Ubuntu上安装。
DF的改进版本是“pydf”。 它可以用这个命令安装:
sudo apt-get install pydf
pydf命令使用彩色输出组织整洁的图表中的所有内容。 它以图形方式显示磁盘使用情况:
pydf -a
dev/vda 30G 1200M 27G 3.9 [........] / udev 493M 4096B 493M 0.0 [........] /dev devpts 0 0 0 - [........] /dev/pts proc 0 0 0 - [........] /proc tmpfs 199M 204k 199M 0.1 [........] /run none 5120k 0 5120k 0.0 [........] /run/lock none 498M 0 498M 0.0 [........] /run/shm . . .
杜上的改进是“ncdu”。 可以通过键入以下命令安装此命令:
sudo apt-get install ncdu此命令使用交互式ncurses显示以图形方式表示磁盘使用情况:
ncdu
--- /root ---------------------------------------------------------------------- 8.0KiB [##########] /.ssh 4.0KiB [##### ] /.cache 4.0KiB [##### ] .bashrc 4.0KiB [##### ] .profile 4.0KiB [##### ] .bash_history
您可以使用向上和向下箭头并在任何目录条目上按“enter”逐步浏览文件系统。
如何知道我的内存是如何使用的?
自由
找出你的系统上的当前内存使用的最简单方法是使用“ 免费 ”的命令。
当不使用选项时,输出如下所示:
free
total used free shared buffers cached Mem: 507620 408172 99448 0 123672 248224 -/+ buffers/cache: 36276 471344 Swap: 0 0 0
要以更可读的格式显示,我们可以传递“-m”选项来显示输出(以兆字节为单位):
free -m
total used free shared buffers cached Mem: 495 398 97 0 120 242 -/+ buffers/cache: 35 460 Swap: 0 0 0
标记为“ - / + buffers / cache”的中间行将显示应用程序使用的实际内存。
“Mem”行包括用于缓冲和高速缓存的存储器,一旦需要用于其它目的就释放它。
Vmstat
该“ 的vmstat”命令可以了解你的系统,包括内存,交换,磁盘IO和CPU信息输出的各种信息。
我们将使用该命令获得另一个视图到内存使用:
vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 99340 123712 248296 0 0 0 1 9 3 0 0 100 0
我们可以通过选择带有“-S”标志的单位来看到这个兆字节:
vmstat -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 96 120 242 0 0 0 1 9 3 0 0 100 0
如您所见,此工具可帮助我们分解“free”命令的“ - / + buffers / cache”类别。
我们可以看到该块用于缓冲的多少,以及缓存的大小。
要获取有关内存使用情况的一般统计信息,请键入:
vmstat -s -S M
495 M total memory 398 M used memory 252 M active memory 119 M inactive memory 96 M free memory 120 M buffer memory 242 M swap cache 0 M total swap 0 M used swap 0 M free swap . . .
要获取有关各个系统进程的缓存使用情况的信息,请键入:
vmstat -m -S M
Cache Num Total Size Pages ext4_groupinfo_4k 195 195 104 39 UDPLITEv6 0 0 768 10 UDPv6 10 10 768 10 tw_sock_TCPv6 0 0 256 16 TCPv6 11 11 1408 11 kcopyd_job 0 0 2344 13 dm_uevent 0 0 2464 13 bsg_cmd 0 0 288 14 . . .
这将向您提供有关缓存中存储哪种类型的信息的详细信息。
结论
使用这些工具,您应该开始能够从命令行监视您的服务器。 还有许多其他实用程序可以执行简单的监视操作,但这是一个很好的起点。