千家信息网

Open-falcon原理介绍

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,open-falcon是小米开源的监控工具。open-falcon有三种安装方式,一种是单机安装(分后端和前端安装,建议各一台服务器)、一种是Docker安装、最后一种是在多台机器上分布式安装。重点:
千家信息网最后更新 2026年11月01日Open-falcon原理介绍

open-falcon是小米开源的监控工具。open-falcon有三种安装方式,一种是单机安装(分后端和前端安装,建议各一台服务器)、一种是Docker安装、最后一种是在多台机器上分布式安装。


重点:本案介绍第一种,单机安装(其实是分两台服务器,一台安装后端服务、一台是安装前端服务)。


分布式安装也很简单,就是把open-falcon二进制包git下来,每台服务器只留需要的模块文件夹和open-falcon执行脚本,然后更改模块文件夹下配置文件,最后启动即可。生成环境环境一般建议分布式部署,参考链接:https://book.open-falcon.org/zh_0_2/distributed_install/


open-falcon监控一般是用各种插件。




架构图:

open-falcon官网架构图



互联网上图


组件描述表:

组件名称

用途

服务端口

备注

Agent

部署在需要监控的服务器上

http: 1988

http://192.168.153.134:1988/

Transfer

数据接收端,转发数据到后端的Graph和Judge

http: 6060

rpc: 8433

socket: 4444


Graph

操作rrd文件存储监控数据

http: 6071

rpc:6070


Query

查询各个Graph数据,提供统一http查询接口

http: 9966


Dashboard

查询监控历史趋势图的web

http: 8081

需要python环境,需要连接数据库dashborad实例、graph组件

Task

负载一些定时任务,索引全量更新、垃圾索引清理、自身组件监控等

http: 8082

需要连接数据库graph实例

Aggregator

集群聚合模块

http: 6055


Alarm

告警

http: 9912


Api

API

http: 8080


Gateway

Gateway

http: 16060


Hbs

心跳服务器

6030


Judge

告警判断

http: 6081

rpc: 6080


Nodata

告警异常处理

http: 6090


Mysql

数据库

3306


Redis

缓存服务器

6379




工作原理:


Falcon-agent(客户端):

每台服务器,都有安装falcon-agent,falcon-agent是一个golang开发的daemon程序,用于自发现的采集单机的各种数据和指标,这些指标包括不限于以下几个方面,共计200多项指标。

CPU相关

磁盘相关

IO

Load

内存相关

网络相关

端口存活、进程存活

ntp offset(插件)

某个进程资源消耗(插件)

netstat、ss 等相关统计项采集

机器内核配置参数

只要安装了falcon-agent的机器,就会自动开始采集各项指标,主动上报,不需要用户在server做任何配置(这和zabbix有很大的不同),这样做的好处,就是用户维护方便,覆盖率高。当然这样做也会server端造成较大的压力,不过open-falcon的服务端组件单机性能足够高,同时都可以水平扩展,所以自动多采集足够多的数据,反而是一件好事情,对于SRE和DEV来讲,事后追查问题,不再是难题。

另外,falcon-agent提供了一个proxy-gateway,用户可以方便的通过http接口,push数据到本机的gateway,gateway会帮忙高效率的转发到server端。

falcon-agent,可以在我们的github上找到 : https://github.com/open-falcon/falcon-plus


Transfer(传输者):

falcon-agent将数据上报给transfer,它们之间建立的长链接。


transfer,接收客户端发送的数据,做一些数据规整,检查之后,转发到多个后端系统去处理。在转发到每个后端业务系统的时候,transfer会根据一致性hash算法,进行数据分片,来达到后端业务系统的水平扩展。

transfer 提供jsonRpc接口和telnet接口两种方式,transfer自身是无状态的,挂掉一台或者多台不会有任何影响,同时transfer性能很高,每分钟可以转发超过500万条数据。

transfer目前支持的业务后端,有三种,judge、graph、opentsdb。judge是我们开发的高性能告警判定组件,graph是我们开发的高性能数据存储、归档、查询组件,opentsdb是开源的时间序列数据存储服务。可以通过transfer的配置文件来开启。


transfer的数据来源,一般有三种:

falcon-agent采集的基础监控数据

falcon-agent执行用户自定义的插件返回的数据

client library:线上的业务系统,都嵌入使用了统一的perfcounter.jar,对于业务系统中每个RPC接口的qps、latency都会主动采集并上报

说明:上面这三种数据,都会先发送给本机的proxy-gateway,再由gateway转发给transfer。


Judge集群(告警判断):

falcon-agent将数据上报给transfer后,transfer转发给Judge集群,使用一致性hash做数据分片。一个实例只处理一部分数据。


Graph集群(数据存储、规定、查询接口):

falcon-agent将数据上报给transfer后,transfer转发给Graph集群,使用一致性hash做数据分片。一个实例只处理一部分数据。rrdtool的数据归档方式存储,同时提供RPC接口。


Alarm(告警):

Judge判断后,放到redis队列。alarm从redis队列读取报警事件做处理,该发短信发短信、该发邮件发邮件,该回调接口就回调。告警合并也在alarm里面做的,专门发送报警的sender模块,告警合并依赖的links模块。


Query:

因为Graph做过分片处理,query要采用和transfer一致的一致性hash数据分片。对外提供一个http接口。query是go写的后端模块。


Dashborad:

在dashborad里面查询监控数据,是python做的web。


Portal:

portal是python做的web,配置监控策略,然后写入数据库。


Heartbeat server:

心跳服务器,falcon-agent每分钟都会发送心跳给heartbeat server,上报自己的版本、hostname、ip等。从heartbeat拉取要执行的插件和特殊采集项等。这些信息需要heartbeat访问 Portal的数据库要获取。Judge要做告警判断,需要先从portal数据库中读取报警策略,但是Judge实例比较多,都去读取数据库会造成很大压力,所以可以让heartbeat成为db cache缓存,heartbeat从数据库中读取数据缓存到内存,Judge调用heartbeat的rpc接口,获取报警策略。


数据存储:

对于监控系统来讲,历史数据的存储和高效率查询,永远是个很难的问题!

数据量大:目前我们的监控系统,每个周期,大概有2000万次数据上报(上报周期为1分钟和5分钟两种,各占50%),一天24小时里,从来不会有业务低峰,不管是白天和黑夜,每个周期,总会有那么多的数据要更新。

写操作多:一般的业务系统,通常都是读多写少,可以方便的使用各种缓存技术,再者各类数据库,对于查询操作的处理效率远远高于写操作。而监控系统恰恰相反,写操作远远高于读。每个周期几千万次的更新操作,对于常用数据库(MySQL、postgresql、mongodb)都是无法完成的。

高效率的查:我们说监控系统读操作少,是说相对写入来讲。监控系统本身对于读的要求很高,用户经常会有查询上百个meitric,在过去一天、一周、一月、一年的数据。如何在1秒内返回给用户并绘图,这是一个不小的挑战。

open-falcon在这块,投入了较大的精力。我们把数据按照用途分成两类,一类是用来绘图的,一类是用户做数据挖掘的。

对于绘图的数据来讲,查询要快是关键,同时不能丢失信息量。对于用户要查询100个metric,在过去一年里的数据时,数据量本身就在那里了,很难1秒之类能返回,另外就算返回了,前端也无法渲染这么多的数据,还得采样,造成很多无谓的消耗和浪费。我们参考rrdtool的理念,在数据每次存入的时候,会自动进行采样、归档。我们的归档策略如下,历史数据保存5年。同时为了不丢失信息量,数据归档的时候,会按照平均值采样、最大值采样、最小值采样存三份。

// 1分钟一个点存 12小时c.RRA("AVERAGE", 0.5, 1, 720)// 5m一个点存2dc.RRA("AVERAGE", 0.5, 5, 576)c.RRA("MAX", 0.5, 5, 576)c.RRA("MIN", 0.5, 5, 576)// 20m一个点存7dc.RRA("AVERAGE", 0.5, 20, 504)c.RRA("MAX", 0.5, 20, 504)c.RRA("MIN", 0.5, 20, 504)// 3小时一个点存3个月c.RRA("AVERAGE", 0.5, 180, 766)c.RRA("MAX", 0.5, 180, 766)c.RRA("MIN", 0.5, 180, 766)// 1天一个点存1yearc.RRA("AVERAGE", 0.5, 720, 730)c.RRA("MAX", 0.5, 720, 730)c.RRA("MIN", 0.5, 720, 730)

对于原始数据,transfer会打一份到hbase,也可以直接使用opentsdb,transfer支持往opentsdb写入数据。


数据 监控 服务 系统 查询 接口 数据库 服务器 用户 业务 组件 处理 存储 模块 一致 同时 实例 插件 文件 监控系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技名片 湖南永感互联网科技有限公司 科技互联网产品 美国互联网科技 互联网金融 科技创新 互联网科技宣传片 济南华为互联网科技产业总部基地 受益于互联网科技的高速发展 赶超互联网科技 微信多开 科技类公司包括互联网吗 科技互联网海报 伍佰万互联网科技怎么赚钱 浙南科技城互联网大厦招聘 新氧科技和美国互联网有关系吗 湖北辰鑫科技互联网 科技和互联网行业的特点 亚光科技低轨卫星互联网 互联网领先科技成果宣传视频 现代科技的标志之一的互联网 山东亿川互联网科技有限责任公司 华服互联网科技怎么样 深圳互联网科技公司 衡水科技产业互联网平台 科技与互联网哪个更好 荆州市昕露互联网络科技有限公司 科技大学互联网 上海钢联属于互联网科技股吗 互联网科技股为什么大涨 全球科技与互联网公司市值变化 互联网金融运营模式中的金融科技
0