alarm模块是处理报警event的,judge产生的报警event写入redis,alarm从redis读取处理,并进行不同渠道的发送。 设计初衷 报警event的处理逻辑并非仅仅是发邮件、发短信这么简单。为了能够自动化对event做处理,alarm需要支持在产生event的时候回调用户提供的接口;有的时候报警短信、邮件太多,对于优先级比较低的报警,希望做报警合并,这些逻辑都是在alarm中做的
Judge用于告警判断,agent将数据push给Transfer,Transfer不但会转发给Graph组件来绘图,还会转发给Judge用于判断是否触发告警。 设计初衷 因为监控系统数据量比较大,一台机器显然是搞不定的,所以必须要有个数据分片方案。Transfer通过一致性哈希来分片,每个Judge就只需要处理一小部分数据就可以了。所以判断告警的功能不能放在直接的数据接收端:Transfer,而
环境准备 请参考环境准备 创建工作目录 export HOME=/home/work export WORKSPACE=$HOME/open-falcon mkdir -p $WORKSPACE cd $WORKSPACE 克隆前端组件代码 cd $WORKSPACE git clone https://github.com/open-falcon/dashboard.git 安装依赖包 yum
api组件,提供统一的restAPI操作接口。比如:api组件接收查询请求,根据一致性哈希算法去相应的graph实例查询不同metric的数据,然后汇总拿到的数据,最后统一返回给用户。 服务部署 服务部署,包括配置修改、启动服务、检验服务、停止服务等。这之前,需要将安装包解压到服务的部署目录下。 # 修改配置, 配置项含义见下文, 注意graph集群的配置 mv cfg.example.json
graph是存储绘图数据的组件。graph组件 接收transfer组件推送上来的监控数据,同时处理api组件的查询请求、返回绘图数据。 服务部署 服务部署,包括配置修改、启动服务、检验服务、停止服务等。这之前,需要将安装包解压到服务的部署目录下。 # 修改配置, 配置项含义见下文 mv cfg.example.json cfg.json vim cfg.json # 启动服务 ./open-fa
transfer是数据转发服务。它接收agent上报的数据,然后按照哈希规则进行数据分片、并将分片后的数据分别push给graph&judge等组件。 服务部署 服务部署,包括配置修改、启动服务、检验服务、停止服务等。这之前,需要将安装包解压到服务的部署目录下。 # 修改配置, 配置项含义见下文 mv cfg.example.json cfg.json vim cfg.json # 启动服务 ./
agent用于采集机器负载监控指标,比如cpu.idle、load.1min、disk.io.util等等,每隔60秒push给Transfer。agent与Transfer建立了长连接,数据发送速度比较快,agent提供了一个http接口/v1/push用于接收用户手工push的一些数据,然后通过长连接迅速转发给Transfer。 部署说明 agent需要部署到所有要被监控的机器上,比如公司有1
OpenStack 用户可能会发现,按照 Neutron 原先的设计,所有网络服务都在网络节点上进行,这意味着大量的流量和处理,给网络节点带来了很大的压力。 这些处理的核心是路由器服务。任何需要跨子网的访问都需要路由器进行路由。 很自然,能否让计算节点上也运行路由器服务?这个设计思路无疑是更为合理的,但具体实施起来需要诸多细节上的技术考量。 为了降低网络节点的负载,同时提高可扩展性,OpenSta
简介 TensorFlow只是library,分布式TensorFlow应用需要我们在多个节点启动Python脚本组成分布式计算集群。 Xiaomi Cloud-ML支持标准的分布式TensorFlow应用,用户只需编写对应的Python脚本即可提交运行,用法与单机版类似。 代码规范 由于分布式TensorFlow应用需要启动多节点,每个节点需要知道自己的角色,一般都是通过命令行参数传入,而用户自
分布式支持 数据访问层支持分布式数据库,包括读写分离,要启用分布式数据库,需要开启数据库配置文件中的deploy参数: return [ // 启用分布式数据库 'deploy' => 1, // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '192.168.1.1,19
为提高可伸缩性,Sphnix提供了分布式检索能力。分布式检索可以改善查询延迟问题(即缩短查询时间)和提高多服务器、多CPU或多核环境下的吞吐率(即每秒可以完成的查询数)。这对于大量数据(即十亿级的记录数和TB级的文本量)上的搜索应用来说是很关键的。 其关键思想是对数据进行水平分区(HP,Horizontally partition),然后并行处理。 分区不能自动完成,您需要 在不同服务器上设置Sp
Lock Redisson 分布式可重入锁,实现了 java.util.concurrent.locks.Lock 接口并支持 TTL。 RLock lock = redisson.getLock("anyLock"); // Most familiar locking method lock.lock(); // Lock time-to-live support // releases loc
分布式分类帐是一种在分散式网络的成员之间共享,复制和同步的数据库。使用密码术可以安全准确地存储有关此分类帐的所有信息。可以使用密钥和加密签名访问此信息。分布式分类账允许交易拥有公开的“证人”,这使得网络攻击更加困难。它记录网络参与者之间的交易,例如:资产或数据的交换。 网络中的所有参与者管理并就分类帐中记录的更新达成共识。没有中央机关,或者涉及金融机构或政府机构等第三方调解员。分布式分类帐中的每条
一个成功的技术,现实的优先级必须高于公关,你可以糊弄别人,但糊弄不了自然规律。 ——罗杰斯委员会报告(1986) 在本书的第一部分中,我们讨论了数据系统的各个方面,但仅限于数据存储在单台机器上的情况。现在我们到了第二部分,进入更高的层次,并提出一个问题:如果多台机器参与数据的存储和检索,会发生什么? 你可能会出于各种各样的原因,希望将数据库分布到多台机器上: 可扩展性 如果你的数据量、读取负载、写
问题内容: 我已经为此工作了几天,已经找到了几种解决方案,但是都没有一个非常简单或轻巧的解决方案。问题基本上是这样的:我们有一个由10台计算机组成的群集,每台计算机都在多线程ESB平台上运行相同的软件。我可以很轻松地处理同一台计算机上线程之间的并发问题,但是不同机器上同一数据上的并发又如何呢? 本质上,该软件接收请求,以通过Web服务将客户数据从一家公司传送到另一家公司。但是,客户可能存在或可能不