【小米開源監控系統】open-falcon

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)官網架構圖

1.png

2.2)網友所畫架構圖

2.JPG

2.3)基礎組件


組件名稱(繪圖組件)
功能備註
agent

1.agent採集機器監控指標,每隔60秒push給Transfer

2.agent和tranfer建立長連接,傳輸數據比較快

3.agent提供了一個http接口/v1/push接收用戶手工push數據,然後轉發給tranfer


graph

1.graph組件是存儲繪圖數據、歷史數據的組件

2.tranfer會把接收到的數據轉發給granph

  1. 可部署多實例做集羣

  2. 需要連接數據庫graph

transfer1.接收agent傳來的數據,轉發數據到後端的Graph和Judge
query1.查詢各個graph數據,提供了一個統一的http查詢接口:query組件接收到用戶的查詢請求後,會從後端的多個graph,查詢相應數據,聚合後,在返回給用戶
Task
  1. index更新;包括圖標索引的"全量更新"和"垃圾索引清理"

  2. falcon服務組件自身狀態數據採集;主要採集tranfer、graph、task三個服務的內部狀態

  3. falcon自檢控任務

1.需要連接graph庫
dashboard前端界面
  1. 需要python虛擬環境

  2. 需要連接數據庫dashboard

組件名稱(報警組件)
功能備註
Sender1.報警發送模塊,控制併發度,提供發送的緩衝queue
uic(fe)1.用戶組管理,單點登錄1.需要連接數據庫uic
portal1.配置報警策略,管理機器分組的web端
  1. 需要連接數據庫falcon-portal

  2. 需要python虛擬環境

hbs1.心跳服務器:hbs有2個地址,1個http地址,agent和hbs的rpc地址通信1.需要連接falcon-portal庫
judge1.報警判斷模塊,judge依賴於HBS,所以得先搭建HBS1.可部署多實例
links1.Links是爲報警合併功能寫的組件。如果你不想使用報警合併功能,這個組件是無需安裝的1.需要連接falcon_links
alarm1.報警事件處理器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是否正常*


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