本篇文章介绍下openfalcon的基本原理和使用,粒度相对较粗,主要目的是使大家迅速掌握open-falcon的数据模型、功能模块、运作流程和使用方法。具体分解如下,
- 基本介绍
- 技术架构
- 数据模型
- 主要模块
- 如何使用
- 其他
一、基本介绍
Open-Falcon 是小米研发的一款开源的互联网企业级监控系统解决方案,目前小米、金山云、美团、京东金融、滴滴等公司有在使用。
下面我们遵循着问题来展开整篇文章。首先,open-falcon能做什么?
a.主要特点有
①数据采集免配置:agent自发现、支持Plugin、主动推送模式
②容量水平扩展:生产环境每秒50万次数据收集、告警、存储、绘图,可持续水平扩展。
③告警策略自发现:Web界面、支持策略模板、模板继承和覆盖、多种告警方式、支持回调动作。
④告警设置人性化:支持最大告警次数、告警级别设置、告警恢复通知、告警暂停、不同时段不同阈
值、支持维护周期,支持告警合并。
⑤历史数据高效查询:秒级返回上百个指标一年的历史数据。
⑥Dashboard人性化:多维度的数据展示,用户自定义Dashboard等功能。
⑦架构设计高可用:整个系统无核心单点,易运维,易部署。
其次,openfalcon能对哪些项目做监控 ?
1)基础监控。
比如CPU、Load、内存、磁盘、IO、网络相关、内核参数、ss 统计输出、端口存活状态、进程存活状态、核心服务的进程存活信息采集、关键业务进程资源消耗、NTP offset采集、DNS解析采集,这些指标,都是open-falcon的agent组件直接支持的。
2)业务应用监控。
比如我的应用服务部署上线后,需要统计某个接口的平均耗时、调用次数、成功率等信息,这些属于业务应用的监控。这里需要研发人员编写脚本等方式来收集数据,然后发送到open-falcon的transfer组件。
3)第三方开源软件监控。
比如mysql、lvs、nginx、redis、mq等,需单独编写采集脚本或插件,这些常见的软件,一般开源社区都有提供相应的脚本。
这里有个openfalcon与其他一些监控软件的对比,
个人觉得,falcon比较大的优势在于扩展性和灵活性方面。
二、技术架构
涉及架构或结构时,图是比较好的展示方式,下图摘自官网,可以看出组件及组件间协作。
绿色的粗线表示数据传输流程,橙黄色虚线表示控制流(策略,告警),浅蓝色虚线标识查询流程;
下图是一个相对规整的数据流图,更有助于理解:
具体而言,整体的运作流程如下:
1、目标服务器运行agent
2、agent采集各类监控项数值,传给transfer
3、transfer校验和整理监控项数值,做一致性hash分片,传给对应的judge模块以验证是否触发告警
4、transfer整理监控项数值,做一致性hash分片,传输给graph以进行数据的存储
5、judge根据具体报警策略或阈值进行告警判断,如触发告警则组装告警event事件,写入缓存队列。
6、alarm和sender根据event事件中的判定结果,执行event,像用户组发送短信或邮件。
7、graph收到监控项数据后,将数据存储成RRD文件格式,进行归档,并提供查询接口。
8、query将调用graph的查询接口,将监控数据传送到dashboard以进行页面展示。
9、dashboard则渲染页面,展示曲线报表图等。
10、portal提供页面供用户配置机器分组、报警策略、表达式、nodata等配置。
三、数据模型
灵活强大的数据模型能提高监控系统的使用效率和灵活性(这小节提到的数据模型应该叫监控项数据模型),open-falcon的数据模型长什么样?设计初衷又是什么?
open-falcon的"监控项"模型如下,
{
metric: cpu.busy, // 监控项名称
endpoint: open-falcon-host, // 目标服务器的主机名
tags: srv=falcon,group=az1, // tag标签,作用是聚合和归类,在配报警策略时会比较方便。
value: 10, // 监控项数值
timestamp: `date +%s`, // 采集时间
counterType: GAUGE, // 监控项类型。
step: 60 // 采集间隔。 秒。
}
这种模型的主要好处:一是方便从多个维度来配置告警,二是可以灵活的进行自主数据采集。
第一点,比如tag的使用起到了给机器进行归类的作用,比如有3台机器:host1、host2和host3,如果tags依次配置为"group=java", "group=java"和"group=erlang",那么配置报警策略"metric=cpu/group=java“时就只会对java标签的机器(即host1,host2)生效。
第二点,由于agent会自发现的采集很多基本的系统指标,但是对业务应用等需要研发人员自己写脚本收集和上报。这里openfalcon定义了监控项模型,相当于定义了一个规范,当研发人员需要监控某个对象(比如mysql、redis等),只需采集数据,并遵守规范包装成监控项模型,再上报即可。
open-falcon使用的监控项有哪些类型 ?
主要有三种:
(1) GAUGE:实测值,直接使用采集的原始数值,比如气温;
(2) COUNTER:记录连续增长的数据,只增不减。比如汽车行驶里程,网卡流出流量,cpu_idle等;
(3) DERIVE:变化率,类似COUNTER ,但是可增可减。
四、主要模块
4-1. agent
- 首先,什么是Agent?
agent是go开发的daemon程序,用于自发现的采集机器的各种数据和指标。部署在目标机器上,无需在server端进行任何配置,安装后启动即工作,是open-falcon的”数据采集者”。
- 主要功能?
1)自发现的采集各类数据和指标,上报transfer;
2)与hbs进行心跳连接通信,上报主机状态,同步插件和监控进程、监控端口;
- 可采集的数据有哪些?
基础监控项(硬件,负载)、业务应用监控数据、各种开源软件监控数据等。
- falcon是如何采集的?
1)基础监控
一般是读系统文件或执行基本命令,然后对原始值进行处理。比如cpu和内存信息是通过读取/proc/stat和/proc/meminfo获得;端口监控,是通过ss –ln 来判断指定端口是否处于listen状态;
2)业务应用监控
一般由”插件”或”采集脚本”实现,需自己编写。比如接口的调用次数、耗时、失败次数、成功次数都属于这类。(日志、基础统计工具)
3)开源软件监控
一般开源社区都有提供采集脚本。
- 如何扩展agent -- 插件?
除了基础监控项,有时用户想扩展agent的功能以采集更多指标,openfalcon提供了插件机制。插件的使用可以参考官方git文档,下面摘抄了作者们的一段话,其实就是一些采集脚本及同步执行的方式。
“插件设计思路:
a) 写一个采集数据的脚本
b) 把脚本分发到需要采集数据的机器上
c) 写一个cron每隔一段时间去跑这个脚本
d) 收集脚本的输出,调用server的接口去push数据
e) 根据需求相应的对脚本做上线、下线、升级”
- agent的工作流程:
4-2. Transfer组件
- 什么是transfer?
open-falcon的后端门户,监控数据的中转接点。
- transfer的职责角色?
提供数据接收接口和自定义脚本push数据;
根据一致性hash算法将内存队列中的数据发送给graph和judge模块;(重点)
为每个后端实例创建一个 定长Queue;
为每个后端实例维护一个rpc连接池;
这里每个后端的graph或judge实例都建立了一个rpc连接池和一个定长Queue队列。有两个小点这里提下:1,定长Queue队列目的是应对高峰流量,丢失一部分高峰时段的数据保证了后端的graph和judge组件不受影响; 2. v1.0版本的openfalcon中,每个graph实例可以有多个ip而且transfer会给每个ip发送相同的一份数据,但是judge中每个实例只能有1个ip。
- transfer的工作流程?
4-3. graph组件
- 什么是graph?graph的职责?
存储监控数据、提供监控数据的高效查询接口。
- graph的架构图(摘自项目git):
4-4. judge&alarm&sender组件
这三个组件是报警的链路,负责判断是否触发报警,理论上可以进化成一个模块。感兴趣的可以看代码,很多匹配逻辑。
judge: 记载策略到缓存,判断监控项是否触发告警策略,发告警事件;
alarm&sender: 读取告警事件;发邮件、短信等;
4-5. hbs组件
- 什么是hbs,hbs的职责?
heart beat server,心跳服务器,更多承担”配置中心”的角色。
1)Agent可以从hbs同步”报警策略”、”进程存活监控”、”端口存活监控”等信息。
2)agent定期发送心跳信息,hbs负责维护host表;
- hbs的工作流程:
五、如何使用?
5.1 目标
(1)、如何监控基本监控项?
(2)、如何使用插件,监控“第三方应用”?如何监控“端口/进程”?
(3)、如何配置“告警规则”?
(4)、如何使用hostGroup、template、expression、nodata、uic?
(5)、如何更好管理机器?如hostName、hostGroup的命名约定;
5.2 先要理解的一些概念
(1)、机器分组
(2)、用户组
(3)、模板
(4)、表达式
(5)、报警策略
(6)、回调动作
5.3 如何采集基本监控项 ?
在目标机器上部署agent,正确配置,启动即可;
5.4 如何监控“第三方应用”,如mysql/lvs/nginx?
自己写脚本,上报到open-falcon;或者使用开源的插件或脚本;
https://book.open-falcon.org/zh/philosophy/data-collect.html
5.5 如何监控“端口存活”、“进程存活” ?
在port页面,新增expression或template,给指定进程或端口配置报警策略;
5.6 使用机器分组和报警策略模板?
这里刚开始接触时觉得特别麻烦,后来拉出代码,分析其关联关系,梳理出了模型及关系图,一切变得清晰。下图依次是:hostgroup机器组管理、Tempalte报警策略模板、模型关系UML图。重点理解UML图,然后去页面上操作和比较下。
b.
c.
5.7 如何使用表达式 ?“策略表达式”与”策略模板”的区别?
表达式比较简洁,在结合tag时可以使用策略表达式。
当无法区分类别时,比如所有监控项都没有加tag,只有进行人工分类,即使用”机器分组”,然后将”策略模板”绑定到”机器分组”。
六、其他
其他需要自己翻文档或代码了,比如nodata,aggravation等等。通过这篇文章,希望能掌握open-falcon的运作机制,数据模型,如何使用它。
<!--EndFragment-->
相关推荐
通过阅读这份文档,用户可以了解如何快速上手Open Falcon,理解其核心组件的工作原理,例如数据采集模块(Feather)、传输模块(Transfer)、存储模块(Graph)和查询展示模块(Query)等。同时,文档可能会详细解释...
因此,我们在过去的一年里,从互联网公司的一些需求出发,从各位SRE、SA、DEVS的使 用经验和反馈出发,结合业界的一些大的互联网公司做监控,用监控的一些思考出发,设计 开发了小米的监控系统:open-falcon。...
Open-Falcon 是一款由小米公司开发并开源的监控系统,主要用于服务监控和运维管理。它旨在解决传统监控工具如 Zabbix 在大规模互联网环境下的局限性,如性能瓶颈、扩展性和用户体验等问题。该系统具有强大的数据采集...
小米公司使用了开源的监控框架OpenFalcon,它是一款高效、可扩展的监控系统,专为大规模分布式环境设计。在这个场景下,我们要讨论的是如何利用Python来实现对FastDFS的监控,FastDFS是一个轻量级的分布式文件系统,...
因此,我们在过去的一年里,从互联网公司的一些需求出发,从各位SRE、SA、DEVS的使用经验和反馈出发,结合业界的一些大的互联网公司做监控,用监控的一些思考出发,设计开发了小米的监控系统:open-falcon。...
Open-Falcon是一种开源的、企业级的、高可用、可扩展的监控系统,最早由小米云平台团队发起和开源,在2015年5月开源Beta版并正式命名为“Open-Falcon”,目前已经成为国内互联网公司使用最广泛的监控系统之一。...
一个获取各种系统的监控数据的Agent,此系统是和OpenFalcon监控系统一起使用,是为了更方便的进行运维监控。若不了解,可以先点击链接去OpenFalcon的官方社区进行了解。SuitAgent特点自动探测部署机上的服务,自动监控...
Open Falcon的源码分析可以深入了解其实现原理,例如如何优化数据采集效率、如何实现高效的告警策略、如何设计高可用的传输层等。同时,开发者可以通过源码学习到分布式系统的设计思路和实践,提升在监控领域的技术...
openfalcon监控系统的开源代码swcollector,用于监控 网络设备。 开发目的: 本代码在swcollector源代码中,增加了一个API接口 http://你部署swcollector的IP:10000/notification,供 别的项目调用它。比如java项目...
open-falcon是一款由小米公司开源的、适用于大规模分布式系统监控的平台,它能够实时收集、传输、存储和展示各类运维数据,为企业的IT基础设施提供全面的健康检查和性能监控。open-falcon的设计目标是实现高可用、高...
go语言实现微信企业号发送监控 for OpenFalcon
FALCON可能有免费和付费版本,使用时需确保遵循相应的许可协议,避免侵权。如果在商业项目中使用,可能需要购买相应的授权。 在文件列表"2023"中,我们可以推测这可能包含了FALCON字体的不同版本或样式的文件,例如...
此外,定期更新和维护Open-Falcon,确保其功能的完整性和安全性。 总之,Open-Falcon的安装与配置涉及多个组件的安装、配置和启动,每一步都需要细心操作,确保监控系统的稳定运行。通过以上详细步骤,您可以成功在...
"open-falcon" 是一款开源的监控报警系统,专为云环境和大规模分布式系统设计,旨在提供实时性能监控、故障预警以及数据分析能力。它由一系列组件构成,包括 graph、judge、gateway、public、api、agent、nodata、...
Openfaln数据源-3方插件[Openfalcon]( 是小米制作的系统监视器解决方案。如何安装? 请在上下载最新版本的Grafana。 (当前最新的是tag-> v3.0-beta7) 完成所有设置。 (更多信息,请参阅Grafana项目中的README.md...
《OpenFalcon Linux Agent详解及使用指南》 OpenFalcon是一款开源的分布式监控系统,它为企业...理解并熟练掌握Agent的工作原理和使用方法,能够帮助我们更好地利用OpenFalcon进行系统监控,提升运维效率和稳定性。
开源小米监控以及学习,配置指南,公司一直在使用,很方便
在深入探讨OpenFalcon之前,我们先了解一下监控系统的基本概念。监控系统是用于收集、分析和展示系统运行状态的重要工具,它可以帮助运维人员及时发现并处理问题,确保服务的稳定运行。OpenFalcon因其开源特性,吸引...