一轉(zhuǎn)眼互例,F(xiàn)alcon在小米已經(jīng)跑了一年了奢入,看著自己的孩子一點點長大、成熟媳叨,也是一件蠻開心的事情腥光。Open-Falcon開源之后,受到了很多業(yè)界同仁的關(guān)注糊秆,深感欣慰武福。
過程中,也暴露出了一些問題痘番,今天我們來細數(shù)一下Open-Falcon的缺點捉片,對各位做方案選型提供一些幫助。
*系統(tǒng)不易分發(fā)
Open-Falcon是從內(nèi)部版本衍生的夫偶,去掉了對小米內(nèi)部其他系統(tǒng)的依賴界睁,本身組件還是比較多,部分組件使用Python開發(fā)兵拢,給軟件分發(fā)造成不小的麻煩翻斟,如果對整個架構(gòu)不熟悉,不知如何troubleshooting说铃,安裝過程很難一帆風順访惜。
*安全性考慮不到位
Dashboard嘹履、AlarmDash不用登陸直接就可以查看數(shù)據(jù),如果被掃描债热,還有可能被寫入臟數(shù)據(jù)砾嫉,被刪除數(shù)據(jù)。Falcon在小米內(nèi)部因為有網(wǎng)絡(luò)隔離窒篱,外網(wǎng)訪問不了焕刮,但是一些稍小的公司,直接將Dashboard墙杯、AlarmDash放在公網(wǎng)上配并,就麻煩了
*沒有通盤考慮的權(quán)限設(shè)計
所有的操作理應(yīng)都有相應(yīng)權(quán)限控制,API的調(diào)用也應(yīng)有相應(yīng)控制高镐,現(xiàn)在做得還是比較亂溉旋,比較弱
*策略表達式易用性不夠
現(xiàn)在的策略表達式中只能配置一條規(guī)則,此處應(yīng)該支持配置多條嫉髓,任何一條觸發(fā)观腊,就要發(fā)報警,不同規(guī)則之間應(yīng)該支持覆蓋
*復(fù)雜度稍高
對于產(chǎn)品線dev算行,可能只是想push一些業(yè)務(wù)監(jiān)控項梧油,做一些簡單的報警配置,把機器分組州邢、策略模板婶溯、模板繼承等概念暴露給這部分人,增加了他們的理解成本
*每個Graph實例均是單點
這點其實在很大程度上已經(jīng)算是解決了偷霉,Transfer中可以配置Graph雙寫迄委,雖然手工維護Graph雙寫列表麻煩了點,好在這個列表基本不怎么變类少,也可以接受吧
*Graph擴容有損
現(xiàn)在社區(qū)的版本叙身,Graph擴容是通過設(shè)置migrating標識,新舊集群同時寫一段時間硫狞,比如一個月信轿,然后去掉老集群,只使用新集群提供服務(wù)残吩,一致性哈希的分片策略财忽,會讓部分數(shù)據(jù)發(fā)生遷移,這部分發(fā)生了遷移的監(jiān)控項泣侮,就只有migrating這段時間的歷史數(shù)據(jù)了即彪。這點我們內(nèi)部已經(jīng)在著手解決,敬請期待活尊。
*上下游組件沒有naming
Transfer中配置的Graph列表隶校、Judge列表漏益,Query中配置的Graph列表,都是直接寫到配置文件中的深胳,缺少一個動態(tài)機制绰疤,管理起來不方便
*報警沒有入庫
當前未恢復(fù)的報警是存在Alarm內(nèi)存中的,重啟就丟了舞终,歷史報警沒有入庫轻庆,無法追溯
*報警現(xiàn)場沒有保存
因為使用rrd存儲歷史數(shù)據(jù),一天以后的數(shù)據(jù)被做了歸檔處理敛劝,查看歷史報警時刻的趨勢圖榨了,無法查看當時的準確值
哇,這么多缺點攘蔽,我還敢不敢用啊……其實問題沒有想得那么大啦,翻閱之前介紹Open-Falcon的文章呐粘,你就可以看到很多Open-Falcon的優(yōu)點啦满俗。小米使用這套系統(tǒng)抗住了每個周期8000多萬數(shù)據(jù)。
一個軟件沒有經(jīng)歷過幾次重寫作岖,代碼很難變得漂亮唆垃,那,筆者現(xiàn)在就在糾結(jié)痘儡,是否花業(yè)余時間重寫一套辕万,嘗試解決上面提到的這些問題,至少應(yīng)該做到:
- 減少組件數(shù)量沉删,全部使用Go編寫
- 改進安全性渐尿,看圖、未恢復(fù)的報警均須登錄方可訪問
- 增加API訪問權(quán)限矾瑰,設(shè)計統(tǒng)一的第三方系統(tǒng)調(diào)用控制
- 增強易用性砖茸,增強策略表達式功能
- 保留報警現(xiàn)場
- 改進歷史數(shù)據(jù)的存儲,去除單點
- 報警事件處理引入類似MQ機制殴穴,方便接入其他的報警事件處理模塊
- 簡化配置凉夯,上下游實例列表動態(tài)化
- 改進索引建立機制,加快索引建立速度
- 無用的歷史數(shù)據(jù)增加刪除機制
嗯采幌,暫時想到這么多劲够,支持筆者做這個事情么?用打賞表明你的態(tài)度休傍,(__) 嘻嘻……
附:
update:我們終于完成了這個重寫的目標征绎,夜鶯來了
夜鶯英文名字Nightingale
可以稱為Open-Falcon的下一代產(chǎn)品,歡迎試用磨取!