天天看點

如何監控 Linux 伺服器狀态?

Linux 伺服器我們天天打交道,特别是 Linux 工程師更是如此。為了保證伺服器的安全與性能,我們經常需要監控伺服器的一些狀态,以保證工作能順利開展。

本文介紹的幾個指令,不僅僅适用于伺服器監控,也适用于我們日常情況下的開發。

watch

指令我們的使用頻率很高,它的基本作用是,按照指定頻率重複執行某一條指令。使用這個指令,我們可以重複調用一些指令來達到監控伺服器的作用。

申請阿裡雲服務時,可以使用

2000元阿裡雲代金券 ,阿裡雲官網領取網址: https://dashi.aliyun.com/site/yun/youhui

預設情況下,watch 指令的執行周期是 2 秒,但我們可以使用 -n 選項來指定運作頻率,比如我們想要每隔 5 秒執行 date 指令,可以這麼執行:

$ watch -n 5 date

一台伺服器肯定有多人在用,特别是本部門的小夥伴。對于這些小夥伴有沒渾水摸魚,我們可以使用一些指令來監控他們。

我們可以每隔 10 秒執行 who 指令,來看看都有誰在使用伺服器。

阿裡雲伺服器1核2G低至82元/年 ,阿裡雲官活動網址: https://dashi.aliyun.com/site/yun/aliyun

可以用20代金券,即102-20=82。

$ 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

當然不僅僅是這些,我們還可以重複調用很多指令來對伺服器一些關鍵參數進行監控,

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,記憶體),同時依然可以看到整個系統的關鍵參數。

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 指令則可以檢視每個使用者使用伺服器時間。

繼續閱讀