你需要能夠根據(jù)操作系統(tǒng)當(dāng)前的運行狀態(tài),結(jié)合監(jiān)控數(shù)據(jù)來做出合理判斷,采取相應(yīng)措施。
你是否曾經(jīng)遇到過一臺服務(wù)器運行緩慢,但是 CPU 使用率看起來不是很高的情況?你是否遇到過服務(wù)器的網(wǎng)絡(luò)利用率很高,但是定位不到導(dǎo)致高網(wǎng)絡(luò)利用率的進程情況?
下面介紹的這些工具可以給你提供幫助。最重要的是,它們中的大多數(shù)都可以在沒有 GUI 的情況下使用,并且能輕松安裝在大多數(shù)服務(wù)器上。以下就是我每天用到的一些不錯的 linux 監(jiān)控工具,它們可以幫助我快速準確地診斷和定位問題。
1、iotop
如果你想知道到底哪些進程消耗了服務(wù)器寶貴的 I/O 資源,那么請使用 iotop!我無數(shù)次地使用它通過 IOPS 參數(shù)來定位那些瘋狂占用磁盤 IO 的耗時進程。
你只是無法從傳統(tǒng)工具(如 top)中獲取原始數(shù)據(jù)。當(dāng)使用 iotop 時,你會發(fā)現(xiàn)正如工具的名字所描述的一樣,它會展示進程和系統(tǒng)的 I/O 資源使用情況。
你可以將其用于多種目的,但最關(guān)鍵的是查看磁盤使用情況并標記潛在的性能瓶頸。將此工具與 top 或 htop 等其他工具結(jié)合使用,能幫你更全面地了解服務(wù)器當(dāng)前負載情況。
我不建議將 iotop 用于基準測試。盡管你能清楚地了解每個進程占用多少 I/O 資源,但它更適合實時監(jiān)控而不是重復(fù)的性能測試。如果你對 I/O 基準測試感興趣,我推薦一個名為 fio 的工具。
https://fio.readthedocs.io/en/latest/fio_doc.html
2、htop
這是我本人的最愛的監(jiān)控工具之一。該工具比 top 工具更具視覺吸引力,并且擁有出色的默認配色方案。使用它,你就可以馬上對系統(tǒng)當(dāng)前運行情況有一個清晰了解。
你能清晰地在水平條形圖中查看計算機內(nèi)核數(shù)目以及它們的利用率。同樣的,你還可以獲得內(nèi)存使用情況的簡單統(tǒng)計信息,并且在底部也有經(jīng)典的 top 進程列表。
我熱衷于 htop 的主要原因是它能快速地提供我所關(guān)注的信息。我就是想看看服務(wù)器每核 CPU 使用率和內(nèi)存使用率在圖形上是怎樣的 - 而不是一個無聊的百分比。
如果你肯定某個進程正在耗盡系統(tǒng)上的所有核心從而打開 htop 進行查看,那么就會發(fā)現(xiàn)大片紅色,整個過程快速而簡單。
3、IPTraf
這是一個診斷網(wǎng)絡(luò)問題非常有用的工具。使用此工具,你可以監(jiān)控正在網(wǎng)絡(luò)傳輸?shù)木W(wǎng)絡(luò)流量。也能以特定的接口或流量類型(例如特定的 TCP 端口)進行過濾。它與 Wireshark 功能非常相似,不同之處在于它更輕巧,并且也可以在沒有 GUI 的情況下運行。
http://iptraf.seul.org/
https://www.wireshark.org/
另外,該監(jiān)控工具還有一些非常棒的功能,比如按數(shù)據(jù)包大小對流量進行統(tǒng)計細分:
您可以使用 tcpdump 或 tshark 之類的命令行工具執(zhí)行類似的操作,但是此工具是菜單驅(qū)動的,更易于瀏覽。如果你更傾向于交互式地過濾和查看網(wǎng)絡(luò)流量情況,那么 IPTraf 這款工具會如你所愿。
4、Monit
這是你可以在 Linux 上使用的最靈活、功能最強大的監(jiān)視工具之一。Monit 出現(xiàn)了很多年,它能通過多種方式進行配置以支持不同類型的閾值監(jiān)控和性能告警。
https://mmonit.com/
Monit 允許你指定要在 Linux 操作系統(tǒng)上監(jiān)視的進程、端口、文件等。它支持使用復(fù)雜的回退計時器 back-off timer 和消息來設(shè)置動態(tài)警報模式。
一個監(jiān)控場景比如你想要監(jiān)控特定進程以確保其正在運行。如果該進程崩潰一次,只需重新啟動它即可。如果它開始多次連續(xù)地崩潰,那就不要重新啟動該進程,而應(yīng)該發(fā)送警報。這樣的監(jiān)控場景可以通過 Monit 的幾行配置輕松實現(xiàn)。
Monit 甚至為守護程序提供了一個不錯的輕量級 Web 界面,讓你一眼就能看到服務(wù)器發(fā)生了什么:
無論你是管理單個服務(wù)器還是集群,Monit 提供了最簡單,最高效和最劃算的(免費?。┓椒▉韼湍惚O(jiān)控服務(wù)的運行狀態(tài)。
5、結(jié)論
非常感謝你抽出寶貴的時間閱讀本文。我希望在你了解到我提到的這些 Linux 監(jiān)控工具,以及為什么它們在分析系統(tǒng)異常時能發(fā)揮如此重要的作用后,能使您樂在其中,并有所收獲。
延展閱讀:
https://medium.com/better-programming/4-linux-monitoring-tools-you-should-use-38a136e68639