zoukankan      html  css  js  c++  java
  • OpenFalcon简介

    OpenFalcon

    小米的监控系统:OpenFalcon是一款企业级、高可用、可扩展的开源监控解决方案。

    一、特点

    ①强大灵活的数据采集

    自动发现,支持falcon-agent、snmp、支持用户主动push、用户自定义插件支持、opentsdb data model like(timestamp、endpoint、metric、key-value tags)

    ③高效率的告警策略管理

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

    ③高效率的告警策略管理

    高效的portal、支持策略模板、模板继承和覆盖、多种告警方式、支持callback调用

    ④人性化的告警设置

    最大告警次数、告警级别、告警恢复通知、告警暂停、不同时段不同阈值、支持维护周期

    ⑤高效率的graph组件

    单机支撑200万metric的上报、归档、存储(周期为1分钟)

    ⑥高效的历史数据query组件

    采用rrdtool的数据归档策略,秒级返回上百个metric一年的历史数据

    ⑦dashboard

    多维度的数据展示,用户自定义Screen

    ⑧高可用

    整个系统无核心单点,易运维,易部署,可水平扩展

    ⑨开发语言

    整个系统的后端,全部golang编写,portal和dashboard使用python编写。

    二、结构

    每台服务器都安装falcon-agent。falcon-agent是一个golang开发的daemon程序,用于自发现的采集单机的各种数据和指标。只要安装了falcon-agent,机器就会自动采集各项指标,主动上报,不需要用户在server做任何配置。虽然server端有较大的压力,但是open-falcon的服务端组件单机性能足够高,同时可以水平扩展,所以自动采集足够多的数据,更方便SRE和DEV事后追查问题。

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

    三、数据模型

       open-falcon采用和opentsdb相同的数据格式:metric、endpoint、多组key value tags。

           {

        metric: load.1min,

        endpoint: open-falcon-host,

        tags: srv=falcon,idc=aws-sgp,group=az1,

        value: 1.5,

        timestamp: date +%s,

        counterType: GAUGE,

        step: 60

    }

    四、数据采集

    1、transfer,接收客户端发送的数据,做数据规整。然后transfer会根据一致性hash算法,进行数据分片,并转发到多个后端系统。

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

    3、transfer支持的业务后端有judge、graph、opentsdb。judge是高性能告警判定组件;graph是高性能数据存储、归档、查询组件;opentsdb是开源的时间序列数据存储服务。

    4、transfer的数据来源有:

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

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

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

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

    五、Alerting报警

    1、报警判定,由judge组件来完成。用户在web portal配置相关的报警策略,存储在MySQL中。heartbeat server定期加载MySQL中的内容。judge也会定期和heartbeat server保持沟通,来获取相关的报警策略。

    2、heartbeat sever除了加载MySQL中的内容,还会根据模板继承、模板项覆盖、报警动作覆盖、模板和hostGroup绑定,计算出最终关联到每个endpoint的告警策略,提供给judge组件来使用。

    3、transfer转发到judge的每条数据,都会触发相关策略的判定,如果满足报警条件,则会发送给alarm,alarm再以邮件、短信、米聊等形式通知相关用户,也可以执行用户预先配置好的callback地址。

    4、用户可以灵活配置告警判定策略,比如连续n次都满足条件、不同时间段不同阈值、维护周期内忽略等等。另外也支持突升突降类的判定和告警。

    六、API

    1、快速读取存储在graph里的数据,靠graph和API组件来实现。

    2、transfer会将数据往graph组件转发一份,graph收到数据以后,会以rrdtool的数据归档方式来存储,同时提供查询RPC接口。

    3、API面向终端用户,收到查询请求后,会去多个graph里查询不同metric的数据,汇总后统一返回给用户。

    七、Dashboard仪表盘

    dashboard首页,用户可以以多个维度来搜索endpoint列表,即可以根据上报的tags来搜索关联的endpoint。

    1、host group的管理可以和服务树结合,机器进出服务树节点,相关的模板会自动关联或者解除。服务上下线不需要手动来变更监控。

    2、模板支持继承和策略覆盖,模板和host group绑定后,host group下的机器会自动应用该模板的所有策略。

    3、也可以写表达式达到监控的目的,对于endpoint不是机器名的场景非常方便。

    八、Storage存储

    1、监控系统数据量大、写操作多、查询需要高效率。

    2、open-falcon数据按照用途分成两类,用来绘图的和做数据挖掘的。

    3、对于绘图的数据来讲,查询要快,信息不能丢失。open-falcon参考rrdtool的理念,在数据每次存入的时候,自动采样、归档。归档策略如下,历史数据保存5年;按照平均值采样、最大值采样、最小值采样存三份。

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

  • 相关阅读:
    git使用流程
    php5.3.*编译出现make: *** [ext/gd/libgd/gd_compat.lo] Error 1 解决方法 [转]
    linux用户和组的操作,vi编辑器的使用
    linux目录介绍
    linux和windows分区原理
    linux配置网络,配置lmap
    linux常用操作命令
    mysql数据库编程,内置函数,存储过程(循环插入)
    msql数据库触发器和连接mysql常用函数
    mysql数据库增加删除跟新,关联数据
  • 原文地址:https://www.cnblogs.com/junjun511/p/11373862.html
Copyright © 2011-2022 走看看