open-falcon整體架構
下圖是open-falcon的整體架構乳幸,模塊比較多,可以看完整篇文章介紹再回頭看這個架構圖。
簡化版架構圖
簡化的falcon基本工作流程可描述如下圖所示:
下面就根據(jù)這個簡化版流程圖,介紹下open-falcon到底是怎么工作的。
agent
功能:數(shù)據(jù)采集上報单刁,部署在每臺物理機上。
數(shù)據(jù)到底是什么樣的府适?
{
'endpoint': hostname-of-machine,
"metric": cpu.busy,
"timestamp": 1540286013,
"value": 1.234
}
注:為了簡化羔飞,進行了字段精簡
怎么采集?
基本上都是通過解析linux系統(tǒng)目錄/proc下的文件檐春,舉例:
cpu: /proc/stat
load: /proc/loadavg
net: /proc/net/dev
怎么上報褥傍?
定時采集(默認每分鐘一次),采集完通過rpc調用喇聊,發(fā)送給transfer模塊
transfer
主要功能:數(shù)據(jù)轉發(fā)
啥叫數(shù)據(jù)轉發(fā)恍风?到底干啥的?
接收數(shù)據(jù)->非法數(shù)據(jù)過濾->緩存在內存中->發(fā)送給不同模塊(graph誓篱、judge朋贬、opentsdb)
graph
功能:基于環(huán)形數(shù)據(jù)庫rrdtool,存儲監(jiān)控數(shù)據(jù)窜骄,并提供查詢接口
rrdtool是啥玩意锦募?
1\. 存儲數(shù)據(jù)之時,設置了數(shù)據(jù)保存的時間邻遏,比如一個月糠亩,超過一個月的數(shù)據(jù)會被刪除。
2\. 數(shù)據(jù)以文件的形式存儲在磁盤上
rrdtool數(shù)據(jù)的底層結構是啥?
數(shù)據(jù)保存在以rrd結尾的文件中准验,內容格式為 時間戳:值赎线,舉例如下:
1540286013 1.12
1540286073 2.34
1540286133 1.35
是不是很簡單
怎么查詢數(shù)據(jù)?
假設要查詢hostname1,最近30分鐘糊饱,load情況
1\. 根據(jù)查詢參數(shù)生成文件名:hostname1_load.rrd
2\. 讀取這個文件內容并返回時間戳為30分鐘之內的數(shù)據(jù)
注:這里對文件名規(guī)則進行了簡化
judge
功能:根據(jù)配置的報警策略垂寥,判斷是否需要報警
策略是什么樣的?
以hostname為維度,保存每個機器配置的所有策略
hostname:[策略1滞项,策略2狭归,...,策略n]
策略舉例:
all(#3) load > 20
意思是:連續(xù)三次負載超過20就報警
報警怎么發(fā)出去文判?
根據(jù)策略过椎,將需要報警的事件寫入redis。由alarm模塊定期讀取并發(fā)送出去
寫入redis的數(shù)據(jù)可簡化如下:
{
'hostname': 'hostname-of-machine',
'時間':1540286013戏仓,
'值':1.234
'策略':'all(#3) load > 20 報警接收人:張三',
'報警次數(shù)':'第三次報警'
}
注:為方便理解疚宇,對真實的結構進行了改造
alarm
功能:報警發(fā)送
這個模塊比較簡單,主要實現(xiàn)以下功能:
1.格式化報警內容
2.簡單的報警合并
3.報警發(fā)送:短信柜去、郵件灰嫉、IM
最后附上一個官網(wǎng)的完整架構