為何使用 Riemann ?
網路上推荐 Riemann 的理由,有的是強調它是使用 push model 來做事件 (event) 的處理。個人的觀點:使用 Riemann 最重要的理由,應該是因為它可以提供最靈活、最彈性的「資料模型」 (domain model) 。
對於事件 (event) 的抽象處理模型,如果是做異常偵測 (abnormal detection) ,往往是有一個偵測器,偵測器內有預先定義好,用程式語言寫好的偵測條件,然後用設置檔 (config) 去調整偵測條件的變數,做細部的調整。
Open-Falcon 的 judge 也是一個偵測器,但是「偵測條件」是用 golang 實作。如果需要更進階、更複雜、可重新組裝的偵測條件,即使調整設置檔,也很難實現。這就是 Open-Falcon judge 缺乏彈性的一面。1
使用 Riemann 做為「偵測器」的話,基本上不太需要特別去區分「偵測條件」與「設置檔」了。因為全部寫在設置檔裡。 Riemann 是用 clojure 語言實現的,要做偵測條件的修改,非常容易,彈性極大。
1. 筆者本來是使用 Open-Falcon 監控系統,後來設法導入 Riemann 來補足 Open-Falcon 的不足。 ↩