當前位置:
首頁 > 最新 > 乾貨:如何監控伺服器性能實踐篇

乾貨:如何監控伺服器性能實踐篇

21CTO導讀:這是伺服器監控系列文章的第一篇。這些帖子的主要焦點是在*nix環境中進行監控的。

監控伺服器非常重要。無論是在部署或調試生產伺服器時,及時在測試環境中發現問題。這些需要管理員訪問伺服器上的內容,以便能夠辨識出錯的地方。

在更早的時候,監視伺服器是一個非常困難的過程,依賴於人來靠手工檢查問題,包括有哪些人登錄到伺服器,打開日誌,運行單個命令,查看上述任何一個的輸出是否產生預期的結果。幸運的是,工具發展到今天,讓這個過程變得簡便和集中化,但我們仍然需要弄清楚需要收集哪些伺服器的信息。

雖然可以直接潛入並檢查伺服器的每次故障,但為了自己的時間價值與故障排除能力,退後一步制定希望獲得的信息。以下是一些較重要的匯總:

了解應用程序

在設置應用程序時,應該確保對所期望的行為有一個非常好的了解。具體來說,當內存,CPU,磁碟或其他系統資源變少時,你應該非常清楚應用程序的執行方式。它會變慢嗎?它會變得遲鈍嗎?它會不載入嗎?這些行為的閾值是什麼?「blip」(如CPU峰值)和真正的問題之間有什麼區別?

這些都不是容易回答的問題,但是我們需要知道期望什麼以及防止過敏的警報系統。

迎接變化的需求

隨著時間的推移,我們的需求會發生變化,可能會實現新功能,刪除無用功能或其他可能會改變應用程序預期行為的轉換等。當發生這種情況時,您需要重新評估應用程序在伺服器上運行的方式,以便了解使用的資源以及在這些資源減少時可以預測的處理和行為。

貼著地面跑

當我們監控*nix伺服器時,通常會查看以下之內容:

CPU使用率:檢查CPU使用情況,查看正在處理器使用的百分比。根據具體需求,你可能需要了解CPU總體使用情況以及按流程或用戶劃分的細節,查看流程和用戶的額外顆粒度,在問題出現時更容易進行故障排除。

內存使用情況:總共用了多少內存以及單個進程和用戶進和。根據需要,可以按百分比和/或GB/MB監控內存之使用情況。

磁碟使用情況:使用了多少磁碟空間。與內存使用情況類似,可以按百分比或空間來監控磁碟使用情況。還應該跟蹤inode的使用情況,Inode用於存儲*ix系統中文件系統對象的信息。耗盡inode不常見,但還是要檢查一下,如果你碰巧知道伺服器上運行的應用程序往往有很多小文件,就像一些CI/CD工具那樣。

頁面錯誤:簡單地說,頁面是一塊虛擬內存。如果您正在監視由雲服務提供商(例如AWS,GCP,Azure,DigitalOcean或Linode,Aliyun,TengCent Cloud)託管的伺服器,那麼伺服器正在使用分頁系統將伺服器實例的虛擬內存映射到物理內存來託管它的硬體。頁面錯誤本質上是當操作系統嘗試從物理內存向虛擬內存載入某些內容時,不存在與該對象關聯的物理內存地址時發生的情況。雖然操作系統有一個內置的頁面錯誤處理程序來管理少量的頁面錯誤並不少見,但是如果你經常看到頁面錯誤,該是開始尋找更深層次問題的時候了。

正常運行時間:對於虛擬伺服器,正常運行時間是伺服器運行的時間。監控主要是為了查看伺服器是否經歷了意外重啟。

網路活動:監控網路流量需要哪些精確度,取決於伺服器託管的內容。在通常情況下,即使運行靜態站點但未主動訪問的伺服器也會看到運行在其上的其他進程的I/O,伺服器網路不應該降到0。

Swap使用:Swap交換空間是保留的磁碟空間,是在可用內存不足時補充內存使用量。你的系統如何積極地使用交換空間取決於如何在1(低)到100(高)的範圍內配置它的「swappiness」。如果要在系統內出現內存問題時允許進行一些交換而不完全禁用它(為0),使用10或更小的值是一個常態。當查看「交換空間使用情況」時,我們通常會看交換空間使用情況是否顯著上升。如果真是如此,需要查內存和其他資源,看看自己是否可以挖掘到原因。

使用命令行

經常在管理伺服器時,除了使用的任何監視警報工具之外,更多時候要使用命令行。考慮到這一點,我們總結出一些命令行工具,可以使用這些來查看剛才說的一些信息。需要注意的是,並非所有這些命令都安裝在所有Linux發行版中,你可能需要使用軟體包安裝程序或源代碼來安裝,具體取決於你用的Linux發行版本。

top - 一個很方便的工具,允許我們查看正常運行時間,內存使用情況,CPU使用情況以及交換空間等內容。我們還可以查看其它信息:包括其它正在運行的進程,用於運行該進程的命令等。通過按q鍵退出top命令行。

htop - htop 是Linux系統中的一個互動的進程查看器,一個文本模式的應用程序(在控制台或者X終端中),需要ncurses。與傳統的top相比,htop更加人性化。它可讓用戶互動式操作,支持顏色主題,可橫向或縱向滾動瀏覽進程列表,並支持滑鼠操作。

與top相比,htop有如下的優點:

可以橫向或縱向滾動瀏覽進程列表,以便看到所有的進程和完整的命令行。

在啟動上,比top 更快。

殺進程時不需要輸入進程號。

htop 支持滑鼠操作。

top 有那麼一點老了。。。與top類似,可以通過按q鍵退出。

tcpdump - 這是一個監控網路數據包的強大工具。例如,我們可以使用它來偵聽伺服器實例上的所有網路流量,或限制為僅偵聽來自特定源和/或目標埠的流量。可以使用ctrl + C退出。

netstat - 允許我們查看伺服器上的網路連接的內容和方式,包括將表信息路由為TCP/UDP連接及其進程。後者的常見組合是-tlnpu。如果你需要,還可以使用-c運行命令以進行連續監控。

nmon - a.k.a. Nigel的監控器,允許我們查看有關伺服器的更詳細的信息。與htop命令類似,nmon也是互動式的,因此需要通過一系列菜單來查看有關CPU處理器,磁碟等的信息。退出時,請使用q或ctrl + C。

uptime - 查看伺服器運行時間的簡便方法。如果你希望查看持續時間的正常運行時間而不是伺服器啟動的時間戳,請使用 -pretty參數。

/proc/meminfo - 可以使用自己喜歡的編輯器來查看此文件,能夠深入了解當前的活動/可用內存的使用情況。

free - 要查看沒有進程信息的空閑與已用內存,請使用free命令。默認情況下,這些值以位元組為單位,如果你希望以兆位元組或千兆位元組的形式查看輸出,建議附加-h 參數。

df - 允許管理員查看系統上安裝的所有卷的總磁碟使用情況。默認為1K塊大小,建議附加-h以查看兆位元組和/或千兆位元組的輸出結果 df -h。

du - 以指定目錄中的所有對象(文件,目錄)遞歸列印文件系統對象的磁碟使用情況。要注意:如果沒有指定目錄,則使用root根目錄(/),結果很快超過你的終端!如果只想查看目錄中項目使用了多少磁碟,請使用-sh。

再提示大家留意,根據不同的Linux發行版,你可能需要在軟體包管理器中手動安裝一些工具。

希望上述內容可幫助大家開啟伺服器的監控之旅。歡迎關注監控伺服器安全性系列的下一篇文章,後面會介紹在監控伺服器時需要注意的一些安全事項。

作者:駱天勇

來源:21CTO社區


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 21世紀技術官學院 的精彩文章:

RFC7807:API錯誤處理最佳實踐
乾貨:區塊鏈和數字簽名技術

TAG:21世紀技術官學院 |