一千萬個為什麽

搜索

監視多臺服務器上的程序進度



我們有三臺運行python程序的服務器,它們在 tmux 會話中運行數據分析任務。我們目前使用的方法是在每個連接 tmux 會話和在命令行上觀察輸出的ssh'ing中。

這種方法很乏味,所以我們正在尋找的解決方案是同時為多個服務器自動監控程序進程(在CLI上輸出)。我們理想地喜歡網絡用戶界面解決方案,但CLI也非常適合。

謝謝你的閱讀。

轉載註明原文: 監視多臺服務器上的程序進度

一共有 4 個回答:

任何時候你運行臨時的長時間運行的命令,你都應該退後一步,重新思考你的過程,因為它應該是自動的,包括錯誤處理。

而不是連接到服務器以查看狀態,更好的方法是將這些信息推送出去。如果你想編寫一堆自定義代碼,你可以做很多事情,但最簡單的事情可能是開始通過syslog將輸出發送到集中式日誌記錄系統(syslog本身或ELK,或其他)。這樣,您可以從中央位置監控所有內容。

向前思考,如果這不是一次性任務,則監測應該是自動化的。也就是說,你不應該只是看日誌,看看事情是否按照他們應有的進展。相反,你應該假設他們是(並繼續進行其他工作),直到你的警報觸發。這是投入大量時間獲取可靠和廣泛覆蓋的警報,但是隨著系統復雜性的增長,您將無需在每次更改時都能監視所有內容任何即可。

Graylog

由於兩個人已經建議你重新考慮你當前的過程(這是我第二次,因為它會導致你在某個時刻不眠之夜;)),我會走另一條路線,並推薦一個特定的軟件 - 在我看來 - 適合大多數您的需求: Graylog

我實施並使用了幾個 ELK堆棧來進行日誌聚合和商業智能並且在我現在的雇主中運行/維護約兩年的graylog。我建議使用graylog,因為它具有內置的以下功能,並且在我看來 - 更容易設置和維護:

  • 網頁界面
  • 多用戶功能
  • 警報

據我了解您的情況,它看起來好像您需要采取行動或對日誌消息流中出現的某些事件發出警報。如果我們查看 Graylog功能

觸發操作或在需要註意時收到通知,例如登錄嘗試失敗,例外或性能下降。

     想法:發送電子郵件或Slack消息給你的團隊。產生一臺新機器來平衡處理負荷。檢測到攻擊時,會自動阻止防火墻中的IP範圍。

為了給Graylog一個嘗試,我會推薦以下兩個步驟:

  • 設置專用主機,讓所有應用程序主機都可以運行該主機以運行graylog(及其依賴項MongoDB和ElasticSearch)
  • 從您的應用程序發送日誌到graylog(可能是 GELF 消息)

註意:這兩個步驟有能力填寫最佳實踐的頁面和頁面,並應至少收到一些想法。更不用說,graylog不是監控解決方案,並且應該使用適當的監控工具(例如Icinga,Prometheus,Nagios等)來監控Graylog本身。

我同意@Xiong Chiamiov,我想給出更明確的選擇。 如果你想要監視CLI中的每一行,我會建議將所有輸出重定向到特定文件,並將錯誤重定向到另一個文件,然後使用 logstashfilebeat 發送的文件 Elasticsearch ,那麽你可以配置 LogtrilKibana 讓您可以使用devops友好的界面實時查看,分析,搜索和尾部記錄來自多個主機的事件

centralized tmux

雖然其他答案從長遠來看更智能,更明智,但我認為快速冒險的CLI解決方案值得一提。在一臺可以連接所有其他服務器的服務器上運行 tmux 。為此,一個好地方是跳箱或其他地方,人們通常都會登錄。在這個“中央”的 tmux ssh中,在不同的窗格中的每個框中,並尾隨所需的任何日誌文件。您可以使用 ctrl - b tmux 中的一個選項卡中獲取更多窗格。做檢查的東西是附加到“中央”的會話,他們可以一眼看到整個集群。

我花了大量時間來構建您正在努力的Web UI解決方案,但如果今天需要它,可以使用 tmux 來竊取一些內容,這樣可以節省一天的時間。