storm日誌bebug問題

如何使用自定義配置文件?

開發storm應用時可能須要用到自身的配置文件。storm.yaml只能提供給storm自身的配置系統使用。針對後臺最普遍使用的ini配置文件,推薦使用ini4j。它是一個輕量的ini配置文件讀取器、具備簡單易懂的api。數據庫

請在spout和bolt的prepare方法中讀取配置文件。任何資源類的初始化都須要放到prepare方法中(好比數據庫鏈接,和讀取文件索引類等)。api


程序部署中的注意事項

I 打包storm程序請不要把依賴打進去,依賴須要單獨部署;測試

II 你須要一種有效的機制將程序的依賴包分發到全部的storm節點上(可上傳到nimbus,經過rsync作目錄同步);ui

III 你須要分發的依賴包集合=你的程序全部的依賴包集合 ?  storm依賴包與你的依賴包的交集(不然topology會初始化失敗)spa

IV 在全部supervisor節點上自定義配置文件的內容和路徑須要徹底一致,路徑不一致topology會初始化失敗,內容不一致,程序的行爲則是未定義的;debug


如何使用日誌系統?如何debug?

在通過一番辛勤勞動以後,你的程序編譯成功了。可是,這不表明着它會按照你設定的行爲去運行。如何debug成爲了一個問題。設計

最基本也是最原始的思路就是log。在全部你認爲可能出錯的地方log(尤爲是在prepare方法中,這裏一般作的是資源類的初始化,若是它們初始化失敗,topology則會初始化失敗,這樣能幫助你快速定位到錯誤緣由)。日誌

Storm默認與log4j集成。你能夠再$STORM_HOME/log4j/目錄下找log4j的配置文件。經過調整它來控制log4j的行爲。orm

不要急於在真實環境下部署你的程序。想要測試的話,仍是首先在Local mode模式下觀察吧。若是在local mode下測試的結果是符合預期的,而在真實環境下出錯,通常應是非代碼的因素形成的。你須要檢查節點的資源文件、自定義配置文件、依賴包等等。此外在local mode下,全部日誌打印信息是直接輸出到屏幕上的,這樣方便你看的更加清楚。索引


下面介紹下storm日誌的結構:

全部的日誌文件都存放在$STORM_HOME/logs/路徑下。

在nimbus節點上:nimbus.log記錄的是nimbus啓動過程當中的輸出信息,包括啓動時間和各個worker和task初始化過程當中打印信息等等。ui.log則記錄的storm監控程序啓動過程當中的輸出信息,包括啓動時間等等。

在supervisor節點上:supervisor.log記錄的則是supervisor的相關啓動信息。worker-XXX(一個supervisor節點一般部署了多個worker)記錄的是消息傳遞、和任務執行過程當中的輸出信息(也就是你代碼中的日誌打印部分)。storm的設計目標之一是讓任務(task)部署對用戶透明。這樣形成了:當你須要觀察一個task的日誌輸出信息時,你不知道到哪一個節點的哪一個日誌文件去找這個信息。所以,仍是強烈建議在local mode下debug你的程序,而後在真實環境作好日誌告警。

相關文章
相關標籤/搜索