首頁  >  文章  >  運維  >  如何監控 Linux 伺服器狀態

如何監控 Linux 伺服器狀態

步履不停
步履不停原創
2019-06-19 16:12:343466瀏覽

如何監控 Linux 伺服器狀態

Linux 伺服器我們天天打交道,特別是 Linux 工程師更是如此。為了確保伺服器的安全與效能,我們經常需要監控伺服器的一些狀態,以確保工作能順利進行。

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

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 指令則可以查看每個使用者使用伺服器時間。你常使用哪個指令呢?歡迎留言討論!

更多Linux文章,請造訪Linux教學欄位進行學習!

以上是如何監控 Linux 伺服器狀態的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多