2015-09-23 56 views
4

我有一個node.js腳本,在Ubuntu EC2實例上每天運行一次。該腳本從一些搜索到的數千個遠程API中提取數據並保存到我們的本地數據庫。有什麼方法可以監視遠程服務器上的這個node.js腳本嗎?由於某種原因,腳本崩潰的情況很少,如果沒有將SSH連入實例並檢查日誌,我們無法弄清楚。然而,在第一次崩潰之後,我創建了一個小系統,當腳本由於某些未捕獲的異常以及腳本完成執行而崩潰時,它們會向我們發送電子郵件。監控在Ubuntu實例上運行的node.js腳本

然而,我們需要制定一個更好的系統,我們可以通過監控被部署在其他一些情況下我們的管理應用程序的Web界面腳本的進展,並觸發通過此接口啓動腳本/停止。實現這個目標有哪些可能的選擇?

+0

嘗試使用記錄器,我使用'morgan'寫入文件,然後我解析出網頁上記錄該文件。它有不同的標誌,指示日誌類型爲正常,警告,錯誤等,所以你可以只顯示錯誤日誌。在你的情況下,'Winston'對你來說可能會更好,因爲它最適合'remote-calls'。 –

回答

2

如果你喜歡留在Node.js的,然後有幾個進程監視工具:

PM2配備了許多其他功能除了監測過程。您可以通過CLI或其官方網頁界面監控您的流程:https://keymetrics.io/。在NPM快速搜索也給出了一堆漂亮的非官方的GUI工具:https://www.npmjs.com/search?q=pm2+web

Forever是不是功能豐富的PM2,但會做的基本流程操作GUI的夫婦,也是在npm可用。

+0

謝謝你的回答。自從過去一年半以來我一直在使用PM2來運行和監視節點服務器,但它不適合我需要監視的當前場景。我寧願在腳本中編寫我自己的自定義解決方案進行監視。 – Raeesaa

+0

是的,它只監視cpu /內存使用情況。要監視其他矩陣,您需要自定義模塊。 – hassansin

1

這裏有兩個問題,你試圖解決:

  1. 調度工作要做
  2. 監視過程失敗

在一個簡單的層面上,這是很容易:安排一個cron作業並重新啓動失敗的東西,讓他們繼續嘗試。

然而,當事情不順利,它有助於有很多更細的粒度過你正在計劃什麼,以及它是如何執行。這也會讓你看到每一件小小的工作。

加入少許更多的複雜性,就可以結束了這樣的事情:

  1. 計劃啓動所有腳本(通過cron,如果是這樣的舒服)
  2. 該腳本生成需要幾項工作被執行到隊列中
  3. 的工作進程(或ñ工作進程)消耗該隊列,並執行待處理作業
  4. 可以監視作業的兩個的進展,以及EA的狀態ch工作人員(崩潰,失敗,工作完成等)。上面提到的其他工具非常適用於此(永遠,pm2等)

當作業失敗時,其他工作人員可以拿起正在進行的小部分工作並重新啓動它。這比重新啓動整個流程效率更高,並且還可以讓您根據如何拆分工作負載來並行處理工作人員。

你可以很容易地扔在一個web應用程序的狀態,所以你可以檢查週期,而不是必須通過服務器日誌挖掘。

您還可以通過不同類型的故障獲得更多智能。網絡錯誤?重試5次。額定限制?逐步退出。崩潰?不要重試並通過電子郵件通知。等