open-falcon 讓各機房的agent都被同一服務端管理,只讓報警功能各自承擔

open-falcon 實現各自獨立報警



先來說說這篇文章要實現什麼具體功能。這裏只說配置思路,不去詳細交大家怎麼配置,只要理解各個配置的意義,就能很快配置出來。配置還是很簡單的,我也就是1年多一點兒的工作經驗,我連着裝整個服務和配置分佈式用了一個禮拜。所以說,各位大神應該更速度。


前幾天我接到新任務,要用a機房的 open-falcon 的 Portal 去管理配置b機房、c機房等機房的報警規則,但是報警又不能讓a機房這邊承擔,必須要讓各個機房各自報各自的警。意思就是從a機房這邊登錄open-falcon的管理端,可以在portal裏配置b機房等其他機房的報警規則,觸發報警後,報警郵件是由它們各自發出去的,並不是讓a機房這邊發送,a機房這邊只提供配置規則,存儲數據,製作圖表,各個機房只負責發送自己的報警郵件。這樣配置的原因是爲了防止a機房那邊judge服務掛了後,影響到其他機房的正常監控報警。只要a機房的mysql數據庫不死,其他機房的監控報警都可以正常運行,別的機房監控掛了也不會影響其他機房。

好吧~實在不知道怎麼用簡單明瞭的話來表達,以上這些囉嗦的解釋希望看的人能看明白。想了想還是上個圖比較好,上了兩份一樣的圖是方便一邊讀一邊看圖理解。(黑色分割線左邊爲slave,右master)。如果想在master方繪圖,那麼參照亮藍色的線。wKiom1eXKBPh7K75AASIzGCPkkc269.png-wh_50

下面開始介紹思路:

首先。slave(方便描述,把主的服務端a機房那邊叫master,別的機房的叫slave)這邊的報警所用到的組件分別是heartbeat server(hbs)、judge、alarm、郵件組件(我用的是mail-provider+sender)。那麼是怎麼用這幾個組件去關聯master那邊來實現slave自己獨立判斷故障並且發送郵件呢? 

它們的數據是這樣傳輸的:

 salve端的 agent將採集到的數據發送給slave這邊的transfer,transfer將收到的數據給slave方的judge一份(slave方的judge用來判斷報警用的),同時也將數據發送給master方的graph一份(這樣就可以將曲線圖在master端繪製了)。<原版的官方文檔是說的transfer收到數據會發送給judge和graph各一份> 這裏我們只做報警功能,可以忽略發送給master方的graph的數據。  salve端的judge在收到數據後,會到salve端的hbs(heartbeat server)內拿報警規則去和收到的transfer發來的數據判斷對比是否觸發報警,如果報警成立,那麼salve端的judge會將報警數據發到salve端的的redis內,salve端的alarm發現salve端的redis內有數據,便會將信息推送給salve端的sender發出報警郵件。

那麼問題來了,salve端的hbs(heartbeat server)內的報警規則哪裏來?

我們的辦法是,將salve端的hbs(heartbeat server)的hosts表數據配置爲從master端同步過來,具體配置方法,在官方文檔內有說明。這樣,我們就可以實現在master端的portal內添加報警規則,添加規則後portal的數據寫在musql的portal表內。我們開啓3306的防火牆規則,這樣我們就可以從slave端來拉取master端的報警規則了。

最後說一句,open-falcon畢竟是中國人研發的,配置很容易理解,明白數據傳輸過程和工作原理,配置很簡單的。不常寫博客,不喜歡的希望不要噴。希望需要這樣配置的人可以很快配置成功。


wKiom1eXKBPh7K75AASIzGCPkkc269.png-wh_50

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章