一、介绍 小米开源的监控工具,基于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接口,获取报警策略