1)優勢
·強大靈活的數據採集:自動發現,支持falcon-agent、snmp、支持用戶主動push、用戶自定義插件支持、opentsdb data model like(timestamp、 endpoint、metric、key-value tags) ·水平擴展能力:支持每個週期上億次的數據採集、告警判定、歷史數據存儲和查詢 ·高效率的告警策略管理:高效的portal、支持策略模板、模板繼承和覆蓋、多種告警方式、支持callback調用 ·人性化的告警設置:最大告警次數、告警級別、告警恢復通知、告警暫停、不同時段不同閾值、支持維護週期 ·高效率的graph組件:單機支撐200萬metric的上報、歸檔、存儲(週期爲1分鐘) ·高效的歷史數據query組件:採用rrdtool的數據歸檔策略,秒級返回上百個metric一年的歷史數據 ·dashboard:多維度的數據展示,用戶自定義Screen ·高可用:整個系統無核心單點,易運維,易部署,可水平擴展 ·開發語言: 整個系統的後端,全部golang編寫,portal和dashboard使用python編寫
2)架構圖
2.1)官網架構圖
2.2)網友所畫架構圖
2.3)基礎組件
組件名稱(繪圖組件) | 功能 | 備註 |
agent | 1.agent採集機器監控指標,每隔60秒push給Transfer 2.agent和tranfer建立長連接,傳輸數據比較快 3.agent提供了一個http接口/v1/push接收用戶手工push數據,然後轉發給tranfer | |
graph | 1.graph組件是存儲繪圖數據、歷史數據的組件 2.tranfer會把接收到的數據轉發給granph |
|
transfer | 1.接收agent傳來的數據,轉發數據到後端的Graph和Judge | |
query | 1.查詢各個graph數據,提供了一個統一的http查詢接口:query組件接收到用戶的查詢請求後,會從後端的多個graph,查詢相應數據,聚合後,在返回給用戶 | |
Task |
| 1.需要連接graph庫 |
dashboard | 前端界面 |
|
組件名稱(報警組件) | 功能 | 備註 |
Sender | 1.報警發送模塊,控制併發度,提供發送的緩衝queue | |
uic(fe) | 1.用戶組管理,單點登錄 | 1.需要連接數據庫uic |
portal | 1.配置報警策略,管理機器分組的web端 |
|
hbs | 1.心跳服務器:hbs有2個地址,1個http地址,agent和hbs的rpc地址通信 | 1.需要連接falcon-portal庫 |
judge | 1.報警判斷模塊,judge依賴於HBS,所以得先搭建HBS | 1.可部署多實例 |
links | 1.Links是爲報警合併功能寫的組件。如果你不想使用報警合併功能,這個組件是無需安裝的 | 1.需要連接falcon_links |
alarm | 1.報警事件處理器 | 1.alarm模塊是處理報警event的,judge產生的報警event寫入redis,alarm從redis讀取,這個模塊被業務搞得很糟亂,各個公司可以根據自己公司的需求重寫 |
Nodata | 1.nodata用於檢測監控數據的上報異常。nodata和實時報警judge模塊協同工作,過程爲: 配置了nodata的採集項超時未上報數據,nodata生成一條默認的模擬數據;用戶配置相應的報警策略,收到mock數據就產生報警。採集項上報異常檢測,作爲judge模塊的一個必要補充,能夠使judge的實時報警功能更加可靠、完善 | |
Aggregator | 1.集羣聚合模塊。聚合某集羣下的所有機器的某個指標的值,提供一種集羣視角的監控體驗 |
3)安裝
*環境配置* **安裝redis** 源碼和rpm包都可以,視情況而定 **安裝mysql** 1.源碼和rpm包都可以,視情況而定 2.初始化mysql表結構 *mysql -uroot -proot < 1_uic-db-schema.sql/2_portal-db-schema.sql/3_dashboard-db-schema.sql/4_graph-db-schema.sql/5_alarms-db-schema.sql/ links-db-schema.sql* ******************************************************************************************************************************************* *後端配置* **下載官方源碼包** 1.下載open-falcon-v0.2.1.tar.gz、open-falcon-v0.2.0.tar.gz 2.解壓到/home/work/open-falcon 3.修改配置文件,一般都是需要指定"數據庫密碼" 4.啓動open-falcon:./open-falcon start(啓動全部服務) ./open-falcon check(檢查服務啓動狀態) ****************************************************************************************************************************************** *前端配置* **下載源碼包** 1.git clone 2.安裝依賴包:python-devel、openldap-devel、mysql-devel、virtualenv(python官網下載tar包)、yum groupinstall "Development tools" 3.安裝前端flask模塊:cat pip_requirements.txt Flask==0.10.1 Flask-Babel==0.9 Jinja2==2.7.2 Werkzeug==0.9.4 gunicorn==19.1.1 python-dateutil==2.2 requests==2.3.0 mysql-python python-ldap 4.修改rrd/config.py配置文件 ## 根據實際情況,修改PORTAL_DB_*, 默認用戶名爲root,默認密碼爲"".還有數據庫主機 ## 根據實際情況,修改ALARM_DB_*, 默認用戶名爲root,默認密碼爲"",還有數據庫主機 ## API_ADDR = os.environ.get("API_ADDR","http://10.59.2.133:8080/api/v1"),此處需要改爲open-falcon的服務端ip 5.啓動dashboard ./control start
4)監控客戶端主機
1.解壓open-falcon-v0.2.0.tar.gz 2.修改agent配置文件 "heartbeat": { "enabled": true, "addr": "10.59.2.133:6030", #服務端ip "interval": 60, "timeout": 1000 }, "transfer": { "enabled": true, "addrs": [ "10.59.2.133:8433" #服務端ip ], "interval": 60, "timeout": 1000 3.啓動agent服務即可 ./open-falcon start agent即可 *查看日誌:agent.log是否正常*