open-falcon整體架構(gòu)
下圖是open-falcon的整體架構(gòu),模塊比較多看锉,可以看完整篇文章介紹再回頭看這個架構(gòu)圖。
簡化版架構(gòu)圖
簡化的falcon基本工作流程可描述如下圖所示:
下面就根據(jù)這個簡化版流程圖,介紹下open-falcon到底是怎么工作的麻车。
agent
功能:數(shù)據(jù)采集上報,部署在每臺物理機上斗这。
數(shù)據(jù)到底是什么樣的绪氛?
{
'endpoint': hostname-of-machine,
"metric": cpu.busy,
"timestamp": 1540286013,
"value": 1.234
}
注:為了簡化,進(jìn)行了字段精簡
怎么采集涝影?
基本上都是通過解析linux系統(tǒng)目錄/proc下的文件枣察,舉例:
cpu: /proc/stat
load: /proc/loadavg
net: /proc/net/dev
怎么上報?
定時采集(默認(rèn)每分鐘一次),采集完通過rpc調(diào)用序目,發(fā)送給transfer模塊
transfer
主要功能:數(shù)據(jù)轉(zhuǎn)發(fā)
啥叫數(shù)據(jù)轉(zhuǎn)發(fā)臂痕?到底干啥的?
接收數(shù)據(jù)->非法數(shù)據(jù)過濾->緩存在內(nèi)存中->發(fā)送給不同模塊(graph猿涨、judge握童、opentsdb)
graph
功能:基于環(huán)形數(shù)據(jù)庫rrdtool,存儲監(jiān)控數(shù)據(jù)叛赚,并提供查詢接口
rrdtool是啥玩意澡绩?
1\. 存儲數(shù)據(jù)之時,設(shè)置了數(shù)據(jù)保存的時間俺附,比如一個月肥卡,超過一個月的數(shù)據(jù)會被刪除。
2\. 數(shù)據(jù)以文件的形式存儲在磁盤上
rrdtool數(shù)據(jù)的底層結(jié)構(gòu)是啥?
數(shù)據(jù)保存在以rrd結(jié)尾的文件中事镣,內(nèi)容格式為 時間戳:值步鉴,舉例如下:
1540286013 1.12
1540286073 2.34
1540286133 1.35
是不是很簡單
怎么查詢數(shù)據(jù)?
假設(shè)要查詢hostname1,最近30分鐘璃哟,load情況
1\. 根據(jù)查詢參數(shù)生成文件名:hostname1_load.rrd
2\. 讀取這個文件內(nèi)容并返回時間戳為30分鐘之內(nèi)的數(shù)據(jù)
注:這里對文件名規(guī)則進(jìn)行了簡化
judge
功能:根據(jù)配置的報警策略氛琢,判斷是否需要報警
策略是什么樣的?
以hostname為維度随闪,保存每個機器配置的所有策略
hostname:[策略1阳似,策略2,...铐伴,策略n]
策略舉例:
all(#3) load > 20
意思是:連續(xù)三次負(fù)載超過20就報警
報警怎么發(fā)出去撮奏?
根據(jù)策略,將需要報警的事件寫入redis盛杰。由alarm模塊定期讀取并發(fā)送出去
寫入redis的數(shù)據(jù)可簡化如下:
{
'hostname': 'hostname-of-machine',
'時間':1540286013挽荡,
'值':1.234
'策略':'all(#3) load > 20 報警接收人:張三',
'報警次數(shù)':'第三次報警'
}
注:為方便理解,對真實的結(jié)構(gòu)進(jìn)行了改造
alarm
功能:報警發(fā)送
這個模塊比較簡單即供,主要實現(xiàn)以下功能:
1.格式化報警內(nèi)容
2.簡單的報警合并
3.報警發(fā)送:短信定拟、郵件、IM
最后附上一個官網(wǎng)的完整架構(gòu)
轉(zhuǎn)載
http://www.reibang.com/p/7922877f1162