目前 Linux 下有一些使用 Python 語言編寫的 Linux 系統監控工具 比如 inotify-sync(文件系統安全監控軟件)、glances(資源監控工具)在實際工作中,Linux 系統管理員可以根據自己使用的服務器的具體情況編寫一下簡單實用的腳本實現對 Linux 服務器的監控。 本文介紹一下使用 Python 腳本實現對 Linux 服務器 CPU 內存 網絡的監控腳本的編寫。
Python 版本說明
Python 是由 Guido van Rossum 開發的、可免費獲得的、非常高級的解釋型語言。其語法簡單易懂,而其面向對象的語義功能強大(但又靈活)。Python 可以廣泛使用并具有高度的可移植性。本文 Linux 服務器是 Ubuntu 12.10, Python 版本 是 2.7 。如果是 Python 3.0 版本的語法上有一定的出入。另外這里筆者所說的 Python 是 CPython,CPython 是用 C 語言實現的 Python 解釋器,也是官方的并且是最廣泛使用的Python 解釋器。除了 CPython 以外,還有用 Java 實現的 Jython 和用.NET 實現的 IronPython,使 Python方便地和 Java 程序、.NET 程序集成。另外還有一些實驗性的 Python 解釋器比如 PyPy。CPython 是使用字節碼的解釋器,任何程序源代碼在執行之前先要編譯成字節碼。它還有和幾種其它語言(包括 C 語言)交互的外部函數接口。
工作原理:基于/proc 文件系統
Linux 系統為管理員提供了非常好的方法,使其可以在系統運行時更改內核,而不需要重新引導內核系統,這是通過/proc 虛擬文件系統實現的。/proc 文件虛擬系統是一種內核和內核模塊用來向進程(process)發送信息的機制(所以叫做“/proc”),這個偽文件系統允許與內核內部數據結構交互,獲取有關進程的有用信息,在運行中(on the fly)改變設置(通過改變內核參數)。與其他文件系統不同,/proc 存在于內存而不是硬盤中。proc 文件系統提供的信息如下:
進程信息:系統中的任何一個進程,在 proc 的子目錄中都有一個同名的進程 ID,可以找到 cmdline、mem、root、stat、statm,以及 status。某些信息只有超級用戶可見,例如進程根目錄。每一個單獨含有現有進程信息的進程有一些可用的專門鏈接,系統中的任何一個進程都有一個單獨的自鏈接指向進程信息,其用處就是從進程中獲取命令行信息。 系統信息:如果需要了解整個系統信息中也可以從/proc/stat 中獲得,其中包括 CPU 占用情況、磁盤空間、內存對換、中斷等。 CPU 信息:利用/proc/CPUinfo 文件可以獲得中央處理器的當前準確信息。 負載信息:/proc/loadavg 文件包含系統負載信息。 系統內存信息:/proc/meminfo 文件包含系統內存的詳細信息,其中顯示物理內存的數量、可用交換空間的數量,以及空閑內存的數量等。新聞熱點
疑難解答