怎么监控 Linux 服务器状态?

admin6个月前笔记59

本文介绍的几个命令,不仅仅适用于服务器监控,也适用于我们日常情况下的开发。

image.png

1. watch

watch 命令我们的使用频率很高,它的基本作用是,按照指定频率重复执行某一条指令。使用这个命令,我们可以重复调用一些命令来达到监控服务器的作用。

默认情况下,watch 命令的执行周期是 2 秒,但我们可以使用 -n 选项来指定运行频率,比如我们想要每隔 5 秒执行 date 命令,可以这么执行:

$ watch -n 5 date

一台服务器肯定有多人在用,特别是本部门的小伙伴。对于这些小伙伴有没浑水摸鱼,我们可以使用一些命令来监控他们。

我们可以每隔 10 秒执行 who 命令,来看看都有谁在使用服务器。

$ watch -n 10 who

Every 10.0s: who                             butterfly: Tue Jan 23 16:02:03 2019

shs      :0           2019-01-23 09:45 (:0)

dory     pts/0        2019-01-23 15:50 (192.168.0.5)

alvin     pts/1        2019-01-23 16:01 (192.168.0.15)

shark    pts/3        2019-01-23 11:11 (192.168.0.27)

如果发现系统运行很慢,我们可以调用 uptime 命令来查看系统平均负载情况。

$ watch uptime

Every 2.0s: uptime                           butterfly: Tue Jan 23 16:25:48 2019

16:25:48 up 22 days,  4:38,  3 users,  load average: 1.15, 0.89, 1.02

一些关键的进程肯定不能挂,否则可能会影响到业务开展,所以我们可以重复统计服务器中的所有进程数量。

$ watch -n 5 'ps -ef | wc -l'

Every 5.0s: ps -ef | wc -l                   butterfly: Tue Jan 23 16:11:54 2019

245

想动态知道服务器内存使用情况,可以重复执行 free 命令。

$ watch -n 5 free -m

Every 5.0s: free -m                          butterfly: Tue Jan 23 16:34:09 2019

total        used        free      shared  buff/cache   available

Mem:           5959         776        3276          12        1906        4878

Swap:          2047           0        2047

当然不仅仅是这些,我们还可以重复调用很多命令来对服务器一些关键参数进行监控,

2. top

使用 top 命令我们可以知道系统的很多关键参数,而且是动态更新的。默认情况下,top 监控的是系统的整体状态,如果我们只想知道某个人的使用情况,可以使用 -u 选项来指定这个人。

$ top -u alvin

top - 16:14:33 up 2 days,  4:27,  3 users,  load average: 0.00, 0.01, 0.02

Tasks: 199 total,   1 running, 198 sleeping,   0 stopped,   0 zombie

%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

MiB Mem :   5959.4 total,   3277.3 free,    776.4 used,   1905.8 buff/cache

MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   4878.4 avail Mem

 

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND

23026 alvin      20   0   46340   7820   6504 S   0.0   0.1   0:00.05 systemd

23033 alvin      20   0  149660   3140     72 S   0.0   0.1   0:00.00 (sd-pam)

23125 alvin      20   0   63396   5100   4092 S   0.0   0.1   0:00.00 sshd

23128 alvin      20   0   16836   5636   4284 S   0.0   0.1   0:00.03 zsh

在这个结果里,你不仅仅可以看到 alvin 这个用户运行的所有的进程数,也可以看到每个进程所消耗的系统资源(CPU,内存),同时依然可以看到整个系统的关键参数。

3. ac

如果你想知道每个用户登录服务器所使用的时间,你可以使用 ac 命令。这个命令需要你安装 acct 包(Debian)或 psacct 包(RHEL,Centos)。

如果我们想知道所有用户登陆服务器所使用的时间之和,我们可以直接运行 ac 命令,无需任何参数。

$ ac
total     1261.72

如果我们想知道各个用户所使用时间,可以加上 -p 选项。

$ ac -p

shark                                5.24

alvin                                5.52

shs                               1251.00

total     1261.76

我们还可以通过加上 -d 选项来查看具体每一天用户使用服务器时间之和。

$ ac -d | tail -10

Jan 11  total        0.05

Jan 12  total        1.36

Jan 13  total       16.39

Jan 15  total       55.33

Jan 16  total       38.02

Jan 17  total       28.51

Jan 19  total       48.66

Jan 20  total        1.37

Jan 22  total       23.48

Today   total        9.83

小结

我们可以使用很多命令来监控系统的运行状态,本文主要介绍了三个:watch 命令可以让你重复执行某一条命令来监控一些参数的变化,top 命令可以查看某个用户运行的进程数以及消耗的资源,而 ac 命令则可以查看每个用户使用服务器时间。你经常使用哪个命令呢?


相关文章

ElementUI中的奇技淫巧

ElementUI中的奇技淫巧

在ElementUI的世界中,不仅有基础的组件和功能,还有一些让你眼前一亮、*得不能再*的高级技巧和窍门。本文将揭示这些技巧,让你在前端开发的舞台上独领风骚。无论你是一个勇敢的创新者还是一个喜欢调皮捣...

开发必备技术--docker(使用篇)

开发必备技术--docker(使用篇)

前言续接上一篇博文: 开发必备技术--docker(一) 这也是开学了,假期的最后一篇博文,后面的一些文章可能就是以图片,pdf文档的形式了,尤其后面设计到数学,算法类型的博文都是这种形式的,当然无所...

Docker与DevOps的结合:实现自动化监控和日志管理

Docker与DevOps的结合:实现自动化监控和日志管理

1.引言1.1 概念和背景软件开发和运维领域,Docker和DevOps是两个备受关注的重要概念。了解这两个概念的背景和意义对于理解如何将它们结合起来实现自动化、监控和日志管理至关重要。Docker的...

haproxy详解

1.安装haproxyCentOS自带了haproxy,但可能版本比较老。可以在IUS源上找到最新稳定版的haproxy。cat </etc/yum.repos.d/ius.repo...

人工智能如此火爆!chatGPT国内能用吗?

人工智能如此火爆!chatGPT国内能用吗?

由于ChatGPT其先进的自然语言处理技术和强大的对话生成能力,ChatGPT迅速吸引了大量用户的关注和使用。ChatGPT的用户群体涵盖了各行各业的人们,包括学生、教育者、企业家、研究人员等等。用户...

简述数据中心网络技术简史

简述数据中心网络技术简史

数据中心的网络其实就是一个局域网,有数据和存储两大块:存储网络主要是FC技术,现在出现了IP SAN,基于以太网IP转发的存储,整体上来讲存储网络的技术发展并不快,花样也不多,以至于到现在很少有人讨论...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。