热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OpenFalcon简介

OpenFalcon简介,Go语言社区,Golang程序员人脉社

转载请注明出处:http://blog.csdn.net/u012842205/article/details/79397658


一、说明

    OpenFalcon(官方网站)是一款企业级、高可用、可扩展的开源监控解决方案。此项目最初由小米公司发起,小米运维团队从互联网公司的需求出发,根据多年的运维经验,结合SRE、SA、DEVS的使用经验和反馈,开发的一套面向互联网的企业级开源监控产品,最新版本为v2.0。目前有几十家公司不同程度使用OpenFalcon作为分布式系统的监控解决方案。


其优点如下:

1. 采集器自动发现,支持falcon-agent、snmp、支持用户主动push数据、用户自定义插件。

2. 支持每个周期上亿次的数据采集、告警判定、历史数据存储和查询。

3. 高效的分区、支持监控策略模板、模板继承和覆盖、多种告警方式、支持告警回调。

4. 单节点能支持200万metric的上报、归档、存储。

5. 其存储采用rrdtool归档,秒级返回上百个metric一年的历史数据。

6. 多维度的数据展示,可由用户自定义Screen。

7. 通过各种插件目前支持Linux、Windows、Mysql、Redis、Memache、RabbitMQ和交换机监控。

二、OpenFalcon监控范围

    OpenFalcon支持系统基础监控,第三方服务监控,JVM监控,业务应用监控。

    基础监控指Linux平台的系统指标监控,包括CPU、Load、内存、磁盘、IO、网络等,这些指标由OpenFalcon的agent节点直接支持,无需插件。

    JVM监控主要通过插件完成,插件通过JVM开放的JMX通信端口,获取到JVM参数指标,并推送到agent节点,再由agent发送到OpenFalcon。

    第三方服务监控指一些常见服务监控,包括MySQL、Redis、Nginx等,OpenFalcon官网提供了很多第三方服务的监控插件,也可以自己实现插件,定义采集指标。而采集到的指标,也是通过插件先发送给agent,再由agent发送到OpenFalcon。

    业务应用监控主要是监控企业自主开发的应用服务。由企业根据业务需要定义采集指标,自实现插件。将获取到的采集指标发送到agent,再由agent发送到OpenFalcon。

三、OpenFalcon数据流向

    常见的OpenFalcon包含transfer、hbs、agent、judge、graph、API几个进程。但没有提供用户界面。用户界面的解决方案是OpenFalcon官方提供的Dashboard,由python编写的一个Web服务。Dashboard调用OpenFalcon的API节点REST,完成用户认证,查询历史等操作。

    以下是各个节点的数据流向图,主数据流向是agent -> transfer -> judge/graph:


(1)agent

    agent进程部署在需要监控的服务器上,即是说,公司有一百台服务器需要监控,则需要分别在每台服务器上部署agent进程。agent只能运行于Linux节点,关于windows平台的监控,官方提供了Windows版本的agent。本文中所有提到agent的地方都指Linux平台的agent。

    部署好agent后,能自动获取到系统的基础监控指标,并上送到transfer。agent与transfer建立了TCP长连接,每隔60秒发送一次数据到transfer。另外,agent提供一个简单的监控界面,默认的端口号为1988,且提供一个REST接口,供用户程序将采集到的指标发送给OpenFalcon。所有自实现的插件都使用这个REST接口上送数据。

(2)transfer

    transfer进程负责分发从agent上送的监控指标数据,并根据哈希分片,将数据分发给judge进程和graph进程,供告警判定和绘图。

(3)graph

    graph进程接收从transfer推送来的指标数据,并绘图存储。graph也为API进程提供查询接口,供绘图查询。

(4)API

    API进程是面向用户及Dashboard的REST接口程序。用户可以通过API提供的接口查询OpenFalcon的绘图数据。用户请求的绘图数据查询会由API代理,向graph进程请求,获取到数据后返回给用户。除了绘图数据,也包含主机的一些档案数据,具体的API接口见官方API文档。

(5)hbs

    hbs是Heartbeat server的缩写。设计初衷是用于接收agent的心跳,判定agent存活性。agent发送的心跳会携带被监控主机的IP、hostname等信息,这些档案信息将汇总给hbs节点。hbs会将这些档案信息存储到portal数据库。供Dashboard及API查询使用。另外,由于hbs将要访问portal数据库,这个数据库中存储了告警策略信息,而judge进程需要这些策略,为了缓解judge直接访问MySQL而带来的数据库访问压力,judge改从hbs的RPC接口访问告警策略信息。

(6)judge

    judge进程用于判断transfer推送的指标数据是否触发告警。若触发了告警,judge将会产生告警事件,这些告警事件会写入Redis(使用Redis消息队列),供处理告警事件的Alarm进程转发告警消息,或是Email,或是手机短信等。

(7)Alarm

    Alarm进程监听Redis中的消息队列,并将judge产生的告警事件转发给微信、短信和邮件三种REST接口。REST接口才是具体的发送动作。另外,关于告警,每条告警策略都会定义不同的优先级,Redis中的消息队列也按优先级划分。Alarm不仅消费告警事件,优先级比较低的报警,其合并逻辑都是在alarm中做,所以目前Alarm进程只能部署一个实例。已经发送出去的告警事件,Alarm将会负责写入MySQL。

四、其他问题

    笔者尚未找到数据存储在什么位置。OpenFalcon采用rrdtool存储框架。直接以文件的形式存储在磁盘上,目前我找到了一些rrdtool文件,按照哈希分片的前缀进行目录划分,但由哪个进程存储,尚不得而知。官方文档也没有数据存储方面的说明。


推荐阅读
  • 一面自我介绍对象相等的判断,equals方法实现。可以简单描述挫折,并说明自己如何克服,最终有哪些收获。职业规划表明自己决心,首先自己不准备继续求学了,必须招工作了。希望去哪 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • Python开源库和第三方包的常用框架及库
    本文介绍了Python开源库和第三方包中常用的框架和库,包括Django、CubicWeb等。同时还整理了GitHub中最受欢迎的15个Python开源框架,涵盖了事件I/O、OLAP、Web开发、高性能网络通信、测试和爬虫等领域。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • 基于分布式锁的防止重复请求解决方案
    一、前言关于重复请求,指的是我们服务端接收到很短的时间内的多个相同内容的重复请求。而这样的重复请求如果是幂等的(每次请求的结果都相同,如查 ... [详细]
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
author-avatar
清醒还是迷惘_123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有