您的位置:首页 > 运维架构

分布式集群监控方案

2017-11-28 16:24 309 查看
一、调研背景

XGboost on Yarn已正式接入流量,目前需要对XGboost集群进行有效监控。

为了保证系统的稳定性,可靠性,可运维性。

掌控集群的核心性能指标,了解集群的性能表现;

集群出现问题时及时报警,便于同学及时修复问题;

集群重要指标值异常时进行预警,将问题扼杀在摇篮中,不用等集群真正不可用时才采取行动;

当集群出现问题时,监控系统可以帮助我们更快的定位问题和解决问题。

二、调研目的

为了管理自己搭建的分布式集群,现在调研一下分布式集群的业界常用监控方案,并结合厂内已有的监控方案进行对比。

并选择一个合适的监控方案来对XGboost on Yarn集群进行有效监控。

主机基本监控项,某台机器 OS 层面上的数据,例如 CPU、内存、磁盘、网络、load、网络流量等;

JVM监控项,某台 resourcemanager(或master)机器 jvm 的状态,例如关于线程的信息,GC 的次数和时间,内存使用状况,以及 ERROR、WARN、Fatal 事件出现的次数;

Yarn监控项,resourcemanager(或 master)进程中的统计信息。

探针程序?Yarn容器中XGBoost进程的探针程序?

监控主要需要完成四个部分的工作数据采集、数据聚合、数据存储和数据展现。

三、方案介绍和数据分析

业界监控方案:

1、Ganglia + Nagios + Splunk

监控粒度:Ganglia可以实现对Hadoop的一些merics进行收集和展示,Nagios可以实现对机器网络服务、主机资源的监控,而Splunk可以对日志构建索引快速查看日志

部署成本:需要人工部署几个软件

明显缺点:

该方案未集成对集群节点的管理,仍需要手动修改配置。

源码编译过程十分复杂,主要是需要编译绘图工具和字体工具(在第四部分详述源码编译过程)

2、Apache Ambari

是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、Hbase、Zookeper、Sqoop和Hcatalog等。

Ambari使用Ganglia收集度量指标,用Nagios支持系统报警,当需要引起管理员的关注时(比如,节点停机或磁盘剩余空间不足等问题),系统将向其发送邮件。

FSG数据仓库 > 分布式集群监控方案 > image2017-10-26 10:13:58.png

Ambari Dashboard

监控粒度:做为Apache 顶级项目,对Hadoop生态的支持做的比较好,可以看到Hadoop进程内的merics。

部署成本:CentOS v5.x or 6.x

明显缺点:

不能监控已有的Hadoop集群

依赖需要使用Maven拉取,有部分依赖厂内repository中没有,需要自己install到本地

如果需要对XGBoost进程监控,那么可能需要修改监控程序。

厂内监控方案:

Argus对主机层级有监控,对于yarn集群或者daemon的监控可以通过casio收集后进行展示,只需要将需要收集的信息推送给casio agent即可。

人工维护代码来实现数据采集、报警,数据存储和展示可以使用MySQL和showX平台实现。

因为是人为整合,可以方便的集成对XGBoost进程的监控

四、Centos 4 源码编译Ganglia方法

~/.bashrc:适用于特定用户的bash shell的bash信息(『peter』在bashrc中的配置对于『meter』来说是不起作用的),当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)

~/.bash_profile(debian中为~/.profile):每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。一般情况下,.bash_profile中都会调用~/.bashrc

~/.bash_profile 是交互式、login 方式进入bash 运行的;通过ssh登录主机

~/.bashrc 是交互式 non-login 方式进入bash 运行的;在本机通过terminal登录shell

通常二者设置大致相同,所以通常前者会调用后者。

远程部署时通过调用的是:source ~/.bash_profile

/etc目录的bashrc和profile是系统级(全局)的配置文件,当在用户主目录下找不到.bash_profile 和.bashrc时,就会读取这两个文件。

源码安装ganglia的时候会有很多依赖,最简单的办法是yum在线安装所有的依赖。但很多情况下不一定会有root权限,以及本地repo中未包含相关rpm的问题,软件开发工程师不得不选择源码来编译安装。

在源码编译Ganglia的过程中,我们需要根据错误提示信息来判断仍然需要安装哪些依赖。目前大部分开源软件使用pkg config来获取依赖相关信息,因此墙裂建议在“.bashrc”(配置在.bashrc中主要是为了方便non-login 方式登录机器的操作)中配置PKG_CONFIG_PATH。

以下是本人在安装过程中所使用到的依赖及安装过程:

4.1 Ganglia前置依赖

Build and install FreeType

Build and install fontconfig

Build and install Cairo (after ./configure please make sure freetype and fontconfig are found)

Build and install Harfbuzz

Build and install Pango

Ganglia使用了rrdtool来实现监控数据可视化,

五、风险评估,应对方案

如果需要将开源监控方案引入代码库,则需要根据开源软件管理规范 来进行代码管理,

上面介绍的Ambari使用的是Apache证书,Ganglia使用的是BSD证书,符合使用第三方开源软件的常见法律问题要求。

1、HBase 集群监控系统构建

2、Distributed XGBoost YARN on AWS

3、XGBoost on Yarn架构介绍

4、安装Ganglia监控hadoop集群

5、云计算平台管理的三大利器Nagios、Ganglia和Splunk

6、用 Ganglia 监视企业集群

7、使用Apache Ambari管理Hadoop

8、使用Ambari监控Yarn应用

9、用 Ganglia 监视企业集群

10、使用 Nagios 监视企业集群

11、pkg-config的用法及库搜索路径设置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息