open-falcon整體架構(gòu)
下圖是open-falcon的整體架構(gòu),模塊比較多辞色,可以看完整篇文章介紹再回頭看這個架構(gòu)圖。
簡化版架構(gòu)圖
簡化的falcon基本工作流程可描述如下圖所示:
下面就根據(jù)這個簡化版流程圖,介紹下open-falcon到底是怎么工作的立美。
agent
功能:數(shù)據(jù)采集上報(bào),部署在每臺物理機(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
怎么上報(bào)快压?
定時(shí)采集(默認(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)控?cái)?shù)據(jù)贾陷,并提供查詢接口
rrdtool是啥玩意嘱根?
1. 存儲數(shù)據(jù)之時(shí),設(shè)置了數(shù)據(jù)保存的時(shí)間该抒,比如一個月,超過一個月的數(shù)據(jù)會被刪除蒋譬。
2. 數(shù)據(jù)以文件的形式存儲在磁盤上
rrdtool數(shù)據(jù)的底層結(jié)構(gòu)是啥?
數(shù)據(jù)保存在以rrd結(jié)尾的文件中愉适,內(nèi)容格式為 時(shí)間戳:值,舉例如下:
1540286013 1.12
1540286073 2.34
1540286133 1.35
是不是很簡單
怎么查詢數(shù)據(jù)剂买?
假設(shè)要查詢hostname1,最近30分鐘癌蓖,load情況
1. 根據(jù)查詢參數(shù)生成文件名:hostname1_load.rrd
2. 讀取這個文件內(nèi)容并返回時(shí)間戳為30分鐘之內(nèi)的數(shù)據(jù)
注:這里對文件名規(guī)則進(jìn)行了簡化
judge
功能:根據(jù)配置的報(bào)警策略,判斷是否需要報(bào)警
策略是什么樣的租副?
以hostname為維度,保存每個機(jī)器配置的所有策略
hostname:[策略1结胀,策略2,...糟港,策略n]
策略舉例:
all(#3) load > 20
意思是:連續(xù)三次負(fù)載超過20就報(bào)警
報(bào)警怎么發(fā)出去?
根據(jù)策略速和,將需要報(bào)警的事件寫入redis剥汤。由alarm模塊定期讀取并發(fā)送出去
寫入redis的數(shù)據(jù)可簡化如下:
{
'hostname': 'hostname-of-machine',
'時(shí)間':1540286013,
'值':1.234
'策略':'all(#3) load > 20 報(bào)警接收人:張三',
'報(bào)警次數(shù)':'第三次報(bào)警'
}
注:為方便理解秀姐,對真實(shí)的結(jié)構(gòu)進(jìn)行了改造
alarm
功能:報(bào)警發(fā)送
這個模塊比較簡單,主要實(shí)現(xiàn)以下功能:
1.格式化報(bào)警內(nèi)容
2.簡單的報(bào)警合并
3.報(bào)警發(fā)送:短信痒留、郵件蠢沿、IM
其他模塊
略。