Contents

如何使用 Python 自動化系統監控

大多數組織嚴重依賴 IT 基礎設施來運作。計劃外的系統故障或效能下降可能會導致中斷、財務損失和聲譽受損。

用於進行定期健康評估的自動化系統對於確保組織資訊技術基礎設施的穩定性和可靠性至關重要。透過持續追蹤重要指標並及時識別任何與正常模式的偏差,可以顯著降低長時間營運中斷的可能性。

定義健康檢查

為了有效評估給定係統的健康狀況,必須確定哪些健康檢查是必要的。這需要就密切觀察的參數建立明確的指導方針,並描述這種監測背後的基本原理。要開始這個過程,必須先確定相關係統的總體目標。它提供哪些功能或產品?

為了為您的 IT 基礎架構建立有效的效能指標,透過分析系統利用率的過去趨勢來建立基準至關重要。這將使您能夠確定適當的資源消耗水平並識別潛在的瓶頸。此外,設定觸發警報的特定標準可以幫助管理員在問題升級之前迅速做出回應。用於將資源使用率視為高或低的閾值可以根據諸如工作負載模式和可用容量等因素而變化。必須仔細考慮這些參數並在團隊之間清楚地傳達它們,以保持最佳的系統效能。

選擇庫並設定您的環境

為了使用Python實現自動化系統監控解決方案,必須利用一組庫來收集系統效能資料並建立定期檢查點。這些庫可以有效率地執行任務,同時確保可靠的效能評估。

Psutil 是一個多功能函式庫,使用戶能夠在各種平台上取得與系統效能相關的數據,包括 CPU 使用情況、記憶體分配、磁碟活動、網路頻寬和感測器讀數。

本庫提供了一種安排在預定時間段執行的任務的簡單方法。

Python 標準庫有一個名為「time」的內建模組,它提供與管理和操作時態資料相關的功能,例如檢索當前日期和時間、計算兩個時間點之間的經過時間間隔、設定係統時鐘等。該模組是需要在其軟體框架內具有計時功能的應用程式的重要資源。

Python 日誌記錄模組用作生成和維護日誌記錄的內建實用程序,使開發人員能夠透過有組織的記錄保存來追蹤和監控系統的效能和狀態。

首先,建立一個新的 Python 虛擬環境,這將減少庫版本中可能存在的差異。隨後,使用「Pip」執行後續終端指令來安裝必要的庫。

 pip install psutil schedule

在您的運算環境中成功安裝和配置必要的程式庫後,您可以放心地繼續利用它們來實現其預期功能。

完整的原始程式碼可以透過 GitHub 儲存庫訪問,該儲存庫可以輕鬆存取專案的文件和資源以進行進一步的開發或修改。

導入所需的庫

開始開發名為「monitoring.py」的創新 Python 腳本,該腳本將首先導入其執行所需的不可或缺的模組和框架。

 import psutil
import schedule
import time
import logging 

事實上,導入這些庫的行為可以在程式碼庫中利用它們各自的功能。

日誌記錄和報告

為了有效追蹤健康檢查的結果,有必要建立一個記錄此類資訊的系統。這種做法不僅可以記錄和保存過去發生的事件的檔案,還有助於識別和解決程式碼中可能出現的任何問題。此外,透過日誌記錄進行徹底的記錄可以極大地有助於評估整體效率。

利用內建的日誌記錄工具為此任務產生日誌。日誌條目可以儲存到名為「system\_monitor.log」的檔案中。

 # Function to log messages
def log_message(message):
    # Configure logging
    logging.basicConfig(filename='system_monitor.log', level=logging.INFO,
                       format='%(asctime)s - %(message)s')
    logging.info(message) 

為了方便就任何緊迫問題進行及時溝通,建議在系統控制台上以警報訊息的形式顯示視覺指示,以便即時了解和考慮。

 # Function to print alerts to the console
def print_alert(message):
    print(f"ALERT: {message}") 

健康檢查功能應使用這些功能來記錄和傳播相關資訊。

建立健康檢查函數

為了對您的 IT 基礎架構實施有效的運作狀況檢查,建議在監控系統中建立單獨的功能,重點檢查網路效能和穩定性的關鍵方面。透過將這些測試隔離在專用功能中,您可以更有效地追蹤不同組件的運作狀況,並在潛在問題升級為更大問題之前檢測到它們。

CPU 使用率監控

實施有效的 CPU 使用率監控機制對於衡量給定係統的運作效率和資源分配至關重要。偵測 CPU 使用率升高可以幫助識別潛在的瓶頸或問題,這些瓶頸或問題可能會導致效能下降、反應緩慢以及可能的系統故障,從而嚴重損害使用者所依賴的關鍵服務。

透過持續監控 CPU 使用率並建立合適的門檻水平,系統管理員能夠透過識別與預期行為模式的偏差來找出效能障礙、資源密集型流程或可疑的硬體問題。

 # Health check functions
def check_cpu_usage(threshold=50):
    cpu_usage = psutil.cpu_percent(interval=1)

    if cpu_usage > threshold:
        message = f"High CPU usage detected: {cpu_usage}%"
        log_message(message)
        print_alert(message) 

給定函數監視系統內中央處理單元 (CPU) 的目前使用率。如果 CPU 使用率超過以百分比值表示的預定閾值,則該功能會記錄一條表示 CPU 使用率升高的通知,並在螢幕上顯示警報訊息。

記憶體使用監控

本發明也提供了一種透過附加功能的實作來監視記憶體使用的機制。定期追蹤記憶體利用率可以檢測記憶體洩漏、識別資源密集型進程以及暴露潛在瓶頸。透過實施這種方法,可以防止因記憶體消耗過多或資源使用效率低下而導致的系統速度減慢、崩潰和中斷。

 def check_memory_usage(threshold=80):
    memory_usage = psutil.virtual_memory().percent

    if memory_usage > threshold:
        message = f"High memory usage detected: {memory_usage}%"
        log_message(message)
        print_alert(message) 

以與CPU利用率的監控類似的方式,為記憶體消耗的升高水準建立預定閾值。每當記憶體累積達到或超過此基準時,它就會產生此類事件的記錄並發出通知以供審核。

磁碟空間監控

應實施實用程式函數來一致地評估剩餘磁碟空間。透過持續觀察可用磁碟空間,可以減輕因資源不足而可能出現的複雜情況。磁碟空間不足可能會導致系統故障、資訊損壞和服務中斷。定期評估磁碟空間可確保維持充足的儲存容量。

 def check_disk_space(path='/', threshold=75):
    disk_usage = psutil.disk_usage(path).percent

    if disk_usage > threshold:
        message = f"Low disk space detected: {disk_usage}%"
        log_message(message)
        print_alert(message) 

本函數檢查與指定檔案路徑關聯的已指派儲存容量。預設情況下,評估的位置包含由符號表示“/”表示的主目錄。如果該區域內的可用空間量減少到預定水平,系統會產生日誌條目並發出聲音警告通知。

網路流量監控

納入結論功能來監督系統的資料流,以便在早期階段識別網路活動中的潛在異常情況。此類偏差可能意味著安全入侵或技術差異,並且可以促進及時採取補救措施。

 def check_network_traffic(threshold=100 * 1024 * 1024):
    network_traffic = psutil.net_io_counters().bytes_recv \+\
                      psutil.net_io_counters().bytes_sent

    if network_traffic > threshold:
        message = f"High network traffic detected: {network_traffic:.2f} MB"
        log_message(message)
        print_alert(message) 

上述功能透過計算傳輸和接收的位元組總量來追蹤網路活動。此指標以位元組測量的形式表示。如果網路流量超過此預定義限制,它將產生日誌條目並顯示通知以指示發生這種情況。

實作監控邏輯

將這些健康檢查功能合併到指定的控制器功能中是一種有效的方法。透過按順序執行它們,它可以在綜合評估過程的每次迭代期間列印相關資訊並記錄訊息。

 # Function to run health checks
def run_health_checks():
    print("Monitoring the system...")
    log_message("Running system health checks...")

    check_cpu_usage()
    check_memory_usage()
    check_disk_space()
    check_network_traffic()

    log_message("Health checks completed.") 

此特定操作透過以連貫且全面的方式執行多項運作狀況檢查,對基礎設施的整體運作狀況進行匯總評估,從而提供系統活力目前狀態的綜合概覽。

安排自動檢查並執行程序

為了方便在預定時間範圍內進行自動監控,請使用 Schedule 函式庫。這樣可以根據需要靈活設定更新頻率。

 # Schedule health checks to run every minute
 schedule.every(1).minutes.do(run_health_checks) 

為了持續監控電腦的效能,有必要持續執行系統監控過程。

 # Main loop to run scheduled tasks
while True:
    schedule.run_pending()
    time.sleep(1)

上述循環持續檢查預定的任務,並以預定的時間間隔執行到期的任務。運行軟體後,顯示幕顯示以下結果:

/bc/images/how-to-automate-system-monitoring-using-python-output.jpg

軟體在 system\_monitor.log 檔案中維護其監視活動的日誌,同時產生在命令列介面上顯示的警報。

推進系統監控計劃

Psutil 提供了超出此處列出的其他監視功能,可根據特定需求和偏好進行自訂。

增強報告功能的一種可能方法是合併電子郵件通知系統,而不是簡單地在命令列介面上顯示訊息。這將使用戶能夠直接在收件匣中接收有關其網站效能的即時更新和警報,使他們更容易監控和解決可能出現的任何問題。