2011-09-27 127 views
2

我們在生成文本日誌文件的Solaris 10服務器上有應用程序。我們需要將這些日誌文件實時傳輸到中央服務器以監視新事件。Python客戶端/服務器實時流日誌文件更新?

理想情況下,我們會有一個NFS掛載,我們所有的系統都會將它們的日誌寫入到那裏,並且監視服務器可以從那裏掛載它們。不幸的是,由於技術和非技術原因,這不是一種選擇。

目前,我們使用背景尾部-f來通過SSH隧道傳輸數據。

但是,我們正在研究是否值得將更強大的東西放在一起。

我想寫一個簡單的Python客戶端/服務器與Twistedb(或類似的東西 - 建議?)流日誌數據。這是否容易實現?任何現有的圖書館/工具,我可以期待的想法?我應該注意的任何問題?

另外,這是Solaris 10,所以我不熟悉文件系統監視器的狀態。我知道Gamin可以通過OpenCSW獲得。不過,還有其他選擇嗎?

回答

0

檢查Python的日誌記錄模塊。 http://docs.python.org/library/logging.html

它包含登錄到文件,流,系統日誌,聯網服務器等功能。該食譜包含示例或記錄在網絡上。 http://docs.python.org/howto/logging-cookbook.html#logging-cookbook

該模塊相當容易擴展。

+0

嗯,這是一個非常有趣的方法。第一個問題 - 生成日誌文件的應用程序不在Python中(它使用C++),我懷疑我們沒有源代碼。我如何獲得Python日誌記錄來讀取這些日誌文件,並在他們進來時讀入新行?第二個問題 - 我最好使用內置的SocketServer,而不是像Twisted這樣的框架?說實話,我之前沒有使用Twisted,所以我用這個藉口來學習它......大聲笑。 – victorhooi

+0

啊,我假定你的應用程序在Python中,因此與日誌記錄模塊集成將是直截了當的。我認爲在這種情況下使用日誌記錄模塊會很愚蠢。這回答了你的兩個問題。就我個人而言,我會使用Syslog-NG http://en.wikipedia.org/wiki/Syslog-ng來調查以滿足您的需求。它是健壯的和被證明的。如果它確實不能滿足您的需求,那麼在Twisted中編寫一個自定義應用程序,部分是爲了學習Twisted,聽起來很合理。您解決問題的動機將超過您選擇的技術。 – dicato

0

請考慮zeromq,而不是原始套接字。它沒有消息中介服務器,它的一個庫讓你你的消息傳遞系統。它可以通過TCP,IPC(是,進程間!),多播和其他協議輕鬆實現跨平臺和語言無關的通信。只需將一個Python組件與一個C組件交換,它就像以前一樣工作。

其完美的軟件,以滿足您的「..excuse學習。」 ;-)

但表明,塞將在您的Solaris安裝程序來構建它。 Python綁定在http://pypi.python.org/pypi/pyzmq/2.1.9

相關問題