open-falcon其他篇
目錄:
- 1.1 openfalcon介紹
- 1.2 open-falcon架構
1.1 openfalcon介紹 傳回頂部
openfalcon官網: https://book.open-falcon.org/zh/
1、openfalcon特點
1. 資料采集免配置: 無需預定義agent自動發現、支援plugin、支援主動push
2. 容量水準擴充: 生産環境每秒20多萬此資料收集、告警、存儲、繪圖
3. 告警政策易于管理: 支援政策模闆、模闆繼承和覆寫、報警接收人為使用者組
4. 報警事件自動化處理: 觸發閥值之後支援callback,便于嵌入自動化邏輯
5. 人性化告警設定: 支援最大告警次數、告警級别、告警恢複通知、告警暫停、不同時段不同閥值、支援維護周期、支援報警合并
6. 曆史資料高效查詢: 秒級傳回上百個名額一年的曆史資料
7. 架構設計高可用: 整個系統同核心單點、易運維、易部署
2、openfalcon與zabbix比優點
1. 模闆支援繼承的同時支援覆寫政策項
2. 資料采集免配置,節省人力成本
3. 較為強大的資料模型
4. tag化描述告警政策each(metric=qps project=falcon module=jedge)>100
5. 水準擴充,多IDC支援
1.2 open-falcon架構 傳回頂部
part01:資料采集&上報
1、agent(資料采集元件):golang項目
1. 需要監控的伺服器都要安裝falcon-agent,falcon-agent是一個golang開發的daemon程式,用于自發現的采集單機的各種資料和名額
2. agent提供了一個http接口/v1/push用于接收使用者手工push的一些資料,然後通過長連接配接迅速轉發給Transfer。
3. 部署好agent後,能自動擷取到系統的基礎監控名額,并上報給transfer,agent與transfer建立了TCP長連接配接,每隔60秒發送一次資料到transfer。
2、 transfer(資料上報)
1. transfer程序負責分發從agent上送的監控名額資料,并根據哈希分片。
2. 将資料分發給judge程序和graph程序,供告警判定和繪圖。
部署說明:
部署完成transfer元件後,請修改agent的配置,使其指向正确的transfer位址。
在安裝完graph和judge後,請修改transfer的相應配置、使其能夠正确尋址到這兩個元件。
part02: 告警
3、judge(告警判斷)
1.Judge從Heartbeat server擷取所有的報警政策,并判斷transfer推送的名額資料是否觸發告警。
2. 若觸發了告警,judge将會産生告警事件,這些告警事件會寫入Redis(使用Redis消息隊列)。
3. redis中告警事件,供處理告警事件的Alarm程序轉發告警消息,或是Email,或是手機短信等。
部署說明:
Judge監聽了一個http端口,提供了一個http接口:/count,通路之,可以得悉目前Judge執行個體處理了多少資料量。
推薦一個Judge執行個體處理50萬~100萬資料,用個5G~10G記憶體的伺服器。
4、Alarm(告警)
https://book.open-falcon.org/zh_0_2/distributed_install/alarm.html
1. Alarm程序監聽Redis中的消息隊列,并将judge産生的告警事件轉發給微信、短信和郵件三種REST接口,REST接口才是具體的發送動作。
2. 另外,關于告警,每條告警政策都會定義不同的優先級,Redis中的消息隊列也按優先級劃分。
3. Alarm不僅消費告警事件,優先級比較低的報警,其合并邏輯都是在alarm中做,是以目前Alarm程序隻能部署一個執行個體。
4. 已經發送出去的告警事件,Alarm将會負責寫入MySQL。
說明:
1)我們在配置報警政策的時候配置了報警級别,比如P0/P1/P2等等,每個及别的報警都會對應不同的redis隊列
2)alarm去讀取這個資料的時候我們希望先讀取P0的資料,再讀取P1的資料,最後讀取P5的資料,因為我們希望先處理優先級高的。
3)已經發送的告警資訊,alarm會寫入MySQL中儲存,這樣使用者就可以在dashboard中查閱曆史報警。
4)針對同一個政策發出的多條報警,在MySQL存儲的時候,會聚類;曆史報警儲存的周期,是可配置的,預設為7天。
注:alarm是個單點。對于未恢複的告警是放到alarm的記憶體中的,alarm還需要做報警合并,故而alarm隻能部署一個執行個體。後期需要想辦法改進。
part03:歸檔&繪圖
5、graph(資料存儲&歸檔)
1. graph程序接收從transfer推送來的名額資料,操作rrd檔案存儲監控資料。
2. graph也為API程序提供查詢接口,處理query元件的查詢請求、傳回繪圖資料。
6、API(提供統一的restAPI操作接口) :go的後端子產品
1. API元件,提供統一的繪圖資料查詢入口 (提供http接口))。
2. API元件接收查詢請求,根據一緻性雜湊演算法去相應的graph執行個體查詢不同metric的資料,然後彙總拿到的資料,最後統一傳回給使用者。
補充說明:
部署完成api元件後,請修改dashboard元件的配置、使其能夠正确尋址到api元件。
請確定api元件的graph清單 與 transfer的配置 一緻。
8、dashboard(趨勢圖web界面):python的web項目
1. dashboard是面向使用者的查詢界面,在這裡,使用者可以看到push到graph中的所有資料,并檢視其趨勢圖。
2. dashboard子產品配置 報警政策,并把政策同步給:aggregator、nodata、grafana。
9、Aggregator
1. 叢集聚合子產品,聚合某叢集下的所有機器的某個名額的值,提供一種叢集視角的監控體驗。
10、Nodata
1. nodata用于檢測監控資料的上報異常。
2. nodata和實時報警judge子產品協同工作,過程為: 配置了nodata的采集項逾時未上報資料,nodata生成一條預設的模拟資料;
3. 使用者配置相應的報警政策,收到mock資料就産生報警。
4. 采集項上報異常檢測,作為judge子產品的一個必要補充,能夠使judge的實時報警功能更加可靠、完善。
11、grafana(生成更詳細圖形)
part04:報警政策配置
12、web portal(報警政策配置):最新open-falcon中此子產品功能合并到Dashboard子產品中
1. web portal是python寫的django項目,使用者可以在這裡配置報警政策,存入mysql
2. Portal的資料庫中有一個host表,維護了公司所有機器的資訊,比如hostname、ip等等。
3. HBS會将agent發送心跳資訊給HBS的時候的hostname、ip等資訊告訴HBS,HBS負責更新host表。
13、hbs:Heartbeat server(心跳服務)
1. 功能1: agent發送心跳資訊給HBS的時,會把hostname、ip、agent version、plugin version等資訊告訴HBS,HBS負責更新web portal 的host表。
2. 功能2: hbs會從從dashboard子產品中擷取 報警政策配置 并緩存到本地,所有Judge從hbs中擷取報警政策