open-falcon架构详解
小米开源的监控工具,基于go语言实现
二、架构图
1.falcon-agent:
数据采集组件,内置http接口,采集定义好的数据上报给transfer
2.transfer
agent与transfer建立长链接,将数据汇报给transfer,transfer默认监听在:8433端口上,agent会通过jsonrpc的方式来push数据上来,transfer将数据传递给judge,和graph
3.graph
graph组件存储绘图数据,历史数据.transfer会将接收的数据传给graph,监听端口为6071
4.query
绘图数据的查询接口,因为graph分片存储,如果要传输给dashboard,需要query搜集数据并聚合在展示给用户
5.dashboard
dashboard是面向用户的查询界面,在这里,用户可以看到push到graph中的所有数据,并查看其趋势图
6.judge
Judge要做告警判断,需要先从portal数据库中读取报警策略,但是Judge实例比较多,都去读取数据库会造成很大压力,所以可以让heartbeat成为db cache缓存,heartbeat从数据库中读取数据缓存到内存,Judge调用heartbeat的rpc接口,获取报警策略,告警事件存入redis
7.alarm
处理judge存入redis的告警事件
8.sender
调用各个公司提供的mail-privider和sms-privider,按照某个并发度,从redis读取邮件,短信并发送,alarm生成的报警短信和报警邮件是直接写入redis即可,由sender来发送
9.portal
配置报警策略写入数据库
10.hbs
心跳服务器,falcon-agent每分钟都会发送心跳给heartbeat server,上报自己的版本、hostname、ip等。从heartbeat拉取要执行的插件和特殊采集项等。这些信息需要heartbeat访问 Portal的数据库要获取。Judge要做告警判断,需要先从portal数据库中读取报警策略,但是Judge实例比较多,都去读取数据库会造成很大压力,所以可以让heartbeat成为db cache缓存,heartbeat从数据库中读取数据缓存到内存,Judge调用heartbeat的rpc接口,获取报警策略