open falcon mysql参数_Open-falcon原理介绍

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

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

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

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

架构图:

f9e9df1aea042bfdf5838a2f68414145.png

6bb1665b2df53ac508ffbf701eb031e0.png

open-falcon官网架构图

0d9d10f5cc8464670e433d17a4b0857d.png

f9e9df1aea042bfdf5838a2f68414145.png

互联网上图

组件描述表:组件名称用途服务端口备注

Transfer数据接收端,转发数据到后端的Graph和Judgehttp: 6060

rpc: 8433

socket: 4444

Graph操作rrd文件存储监控数据http: 6071

rpc:6070

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

Dashboard查询监控历史趋势图的webhttp: 8081需要python环境,需要连接数据库dashborad实例、graph组件

Task负载一些定时任务,索引全量更新、垃圾索引清理、自身组件监控等http: 8082需要连接数据库graph实例

Aggregator集群聚合模块http: 6055

Alarm告警http: 9912

ApiAPIhttp: 8080

GatewayGatewayhttp: 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端。

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一个点存2d

c.RRA("AVERAGE", 0.5, 5, 576)

c.RRA("MAX", 0.5, 5, 576)

c.RRA("MIN", 0.5, 5, 576)

// 20m一个点存7d

c.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天一个点存1year

c.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写入数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值