小米开源监控系统open-falcon

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小米开源监控系统open-falcon相关的知识,希望对你有一定的参考价值。

1)优势

·强大灵活的数据采集:自动发现,支持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编写

2)架构图

2.1)官网架构图

技术分享图片

2.2)网友所画架构图

技术分享图片

2.3)基础组件


组件名称(绘图组件)
功能备注
agent

1.agent采集机器监控指标,每隔60秒push给Transfer

2.agent和tranfer建立长连接,传输数据比较快

3.agent提供了一个http接口/v1/push接收用户手工push数据,然后转发给tranfer


graph

1.graph组件是存储绘图数据、历史数据的组件

2.tranfer会把接收到的数据转发给granph

  1. 可部署多实例做集群

  2. 需要连接数据库graph

transfer1.接收agent传来的数据,转发数据到后端的Graph和Judge
query1.查询各个graph数据,提供了一个统一的http查询接口:query组件接收到用户的查询请求后,会从后端的多个graph,查询相应数据,聚合后,在返回给用户
Task
  1. index更新;包括图标索引的"全量更新"和"垃圾索引清理"

  2. falcon服务组件自身状态数据采集;主要采集tranfer、graph、task三个服务的内部状态

  3. falcon自检控任务

1.需要连接graph库
dashboard前端界面
  1. 需要python虚拟环境

  2. 需要连接数据库dashboard

组件名称(报警组件)
功能备注
Sender1.报警发送模块,控制并发度,提供发送的缓冲queue
uic(fe)1.用户组管理,单点登录1.需要连接数据库uic
portal1.配置报警策略,管理机器分组的web端
  1. 需要连接数据库falcon-portal

  2. 需要python虚拟环境

hbs1.心跳服务器:hbs有2个地址,1个http地址,agent和hbs的rpc地址通信1.需要连接falcon-portal库
judge1.报警判断模块,judge依赖于HBS,所以得先搭建HBS1.可部署多实例
links1.Links是为报警合并功能写的组件。如果你不想使用报警合并功能,这个组件是无需安装的1.需要连接falcon_links
alarm1.报警事件处理器1.alarm模块是处理报警event的,judge产生的报警event写入redis,alarm从redis读取,这个模块被业务搞得很糟乱,各个公司可以根据自己公司的需求重写

Nodata

1.nodata用于检测监控数据的上报异常。nodata和实时报警judge模块协同工作,过程为: 配置了nodata的采集项超时未上报数据,nodata生成一条默认的模拟数据;用户配置相应的报警策略,收到mock数据就产生报警。采集项上报异常检测,作为judge模块的一个必要补充,能够使judge的实时报警功能更加可靠、完善

Aggregator

1.集群聚合模块。聚合某集群下的所有机器的某个指标的值,提供一种集群视角的监控体验

3)安装

*环境配置*

**安装redis**
源码和rpm包都可以,视情况而定

**安装mysql**
1.源码和rpm包都可以,视情况而定
2.初始化mysql表结构
*mysql -uroot -proot < 1_uic-db-schema.sql/2_portal-db-schema.sql/3_dashboard-db-schema.sql/4_graph-db-schema.sql/5_alarms-db-schema.sql/
links-db-schema.sql*

*******************************************************************************************************************************************
*后端配置*

**下载官方源码包**
1.下载open-falcon-v0.2.1.tar.gz、open-falcon-v0.2.0.tar.gz
2.解压到/home/work/open-falcon
3.修改配置文件,一般都是需要指定"数据库密码"
4.启动open-falcon:./open-falcon start(启动全部服务)  ./open-falcon check(检查服务启动状态)

******************************************************************************************************************************************
*前端配置*

**下载源码包**
1.git clone 2.安装依赖包:python-devel、openldap-devel、mysql-devel、virtualenv(python官网下载tar包)、yum groupinstall "Development tools"
3.安装前端flask模块:cat pip_requirements.txt
 Flask==0.10.1
 Flask-Babel==0.9
 Jinja2==2.7.2
 Werkzeug==0.9.4
 gunicorn==19.1.1
 python-dateutil==2.2
 requests==2.3.0
 mysql-python
 python-ldap
4.修改rrd/config.py配置文件
 ## 根据实际情况,修改PORTAL_DB_*, 默认用户名为root,默认密码为"".还有数据库主机
 ## 根据实际情况,修改ALARM_DB_*, 默认用户名为root,默认密码为"",还有数据库主机
 ##  API_ADDR = os.environ.get("API_ADDR","http://10.59.2.133:8080/api/v1"),此处需要改为open-falcon的服务端ip
5.启动dashboard
 ./control start

4)监控客户端主机

1.解压open-falcon-v0.2.0.tar.gz
2.修改agent配置文件
 "heartbeat": {
    "enabled": true,
    "addr": "10.59.2.133:6030",  #服务端ip
    "interval": 60,
    "timeout": 1000
},
"transfer": {
    "enabled": true,
    "addrs": [
        "10.59.2.133:8433"  #服务端ip
    ],
    "interval": 60,
    "timeout": 1000
    
3.启动agent服务即可
 ./open-falcon start agent即可
 *查看日志:agent.log是否正常*


以上是关于小米开源监控系统open-falcon的主要内容,如果未能解决你的问题,请参考以下文章

小米开源监控系统open-falcon

Open-Falcon第四步安装Graph(小米开源互联网企业级监控系统)

Open-Falcon第一步环境准备(小米开源互联网企业级监控系统)

Open-Falcon第三步安装Agent (小米开源互联网企业级监控系统)

Open-Falcon第五步安装Query(小米开源互联网企业级监控系统)

小米监控 open-falcon ubuntu安装小记