神马开源监控系统RA

2024-02-01 09:10
文章标签 系统 开源 监控 神马 ra

本文主要是介绍神马开源监控系统RA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     RA作为神马的核心报警系统,承担着神马搜索、推荐、广告等业务中上万个服务进程的异常报警。其强大的功能、简单的使用方式和稳定的系统表现,赢得了大量应用方的认可。现已走出神马,在淘宝、UC、书旗等多个子公司大规模应用。经过多版本的迭代和长期的实际生产环境检验,监控报警系统RA功能已经相当完善。结合应用方的反馈和业务实际需求,对该系统进行了一次较大规模重构并在github上开源(https://github.com/alibaba/RedAlert)。开源版本可以从Ganglia,Graphite等系统中读取收集的系统核心指标,并根据设置的规则报警。也可以通过插件方式扩展,支持其它时间序列的数据,实现监控报警。其架构如图1所示:

 

图1、系统框架示意图

      Ganglia、Graphite等系统,通过各自的Agent收集各个应用的核心指标,然后通过可视化界面展示指标的趋势图形。但是,诸如Ganglia、Graphite之类的系统一般只负责收集和展示,缺乏在指标异常时的报警功能。RA 则直接读取Ganglia、Graphite等系统收集的数据,然后根据设置的规则检测异常并主动报警。RA由两部分组成,RA server 负责加载报警规则并读取指标数据,在检测到异常时,发送报警。报警方式可以配置为邮件,也可以扩展成其他方式。RA Web 则为用户的使用界面,方便用户配置各种规则和对系统的控制。为方便应用方进一步扩展,将数据读取部分Data Reader抽象成独立的插件,用户可以通过撰写新的插件来支持其它类型的时间序列数据。

      用户增删监控指标以及修改参数等都比较频繁,RA 提供一个可视化的操作界面以便于用户操作。主界面如图2所示,RA界面比较简洁,提供策略的配置和修改、监控项屏蔽以及对RA自身的状态控制等操作。为快速找到监控项,左侧列表栏提供快速检索功能,对有成百上千个监控应用的系统极为有用。在右上角提供对一个监控指标的查询操作,帮助用户检索到含特定字符串的监控指标。针对一个监控指标,可以快速查看、修改、删除和屏蔽。也可以克隆一个监控指标,以实现快速生成新的监控指标。更多功能及使用方式,可以参考RA的用户文档。    

图2、RA 用户界面

RA提供五种常用的报警策略:阈值、趋势、环比、可用性、奇异点。

      阈值检测:阈值是最常用的报警策略,通常情况下,一个指标在一个范围内波动为正常,超出该范围则为异常,需要报警,例如系统的QPS。有些指标则期望最大值不大于某个值,或者最小值不低于某个值,诸如CPU、延迟等。这些需求都可以通过阈值检测策略来轻松满足。

     趋势检测:大部分系统指标都是一条相对平滑的曲线,极少出现断崖式突增或突降。如果出现突增或突降,基本为系统出现异常情况,比如系统突然受到大量爬虫抓取等导致访问量突增。此时,如果阈值报警过于宽松,则该异常很难发现。则需要通过趋势检测策略来发现这些潜在问题。趋势检测策略通过历史数据预测下一刻的值,如果系统实际值与预测值相差范围过大,则认为出现异常。该策略能及时发现系统中存在的潜在问题,应用也比较广泛。

     可用性检测:大部分系统都具备横向扩展的能力,通常由多个功能相同节点来同时提供服务以便提升服务能力。例如,采用多个Redis进程组成服务集群,以提供数据存取服务。如果部分机器宕机,服务进程停止,则影响服务的可用性。RA通过判断正常汇报一个指标的机器数量,可以检测出异常服务。通过设置同一指标汇报进程的最小值来进行可用性报警,当数量小于一个阈值时,则认为整个服务集群存在风险。

     奇异点检测:在一个服务集群中相同功能的节点,其各项指标应该相近,否则可能存在异常节点。例如,在同一个集群中的上千个节点中,有个别节点的延迟大于其它节点,则该节点需要尽快处理。RA 通过比较所有节点汇报上来的相同指标,参考配置的差异范围,如果超过配置的范围,则判定为异常节点并报警。对于发现硬件损坏诸如磁盘变慢,或者外部进程干扰诸如IO等比较有效。

     周期检测:大量的服务指标都存在周期性变化,通常随外部用户访问量的高低峰出现有规律的波动。比如白天可能访问量相对较高,深夜则相对较低。在一个周期内,指标环比差异应该不大。RA通过对比相近周期内,同一时间点的指标差异,来发现服务异常。

     为更灵活的设置报警策略,RA可以配置该一条策略的生效时间段,既可以配置一个时间段,也可以设置多个时间段。在配置要监控的指标名时,系统支持正则匹配,方便配置一系列的指标监控。不同的报警项,可以设置不同的指标采样间隔、最短告警间隔等以便于调整报警的灵敏度和抑制过多的报警信息。异常报警是大规模系统不可或缺的部分,神马诸多业务中,99%以上的异常问题由RA发现并报警。RA开源之后,期望能让更多有相同需求的业务受益,也期望RA自身能得到更进一步的完善。

 

相关链接:

RedAlert:https://github.com/alibaba/RedAlert

Ganglia:http://ganglia.info/

Graphite:http://graphiteapp.org/

这篇关于神马开源监控系统RA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/666781

相关文章

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

JVisualVM之Java性能监控与调优利器详解

《JVisualVM之Java性能监控与调优利器详解》本文将详细介绍JVisualVM的使用方法,并结合实际案例展示如何利用它进行性能调优,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1. JVisualVM简介2. JVisualVM的安装与启动2.1 启动JVisualVM2

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

ubuntu20.0.4系统中安装Anaconda的超详细图文教程

《ubuntu20.0.4系统中安装Anaconda的超详细图文教程》:本文主要介绍了在Ubuntu系统中如何下载和安装Anaconda,提供了两种方法,详细内容请阅读本文,希望能对你有所帮助... 本文介绍了在Ubuntu系统中如何下载和安装Anaconda。提供了两种方法,包括通过网页手动下载和使用wg