您的位置 首页 新能源

高性能的Linux集群监控之道

监控是集群管理的核心任务监控数据可用于调度任务负载平衡向管理员报告软硬件故障并广泛地控制系统使用情况监控信息必须在不影响集群性能的情

监控是集群办理的中心使命监控数据可用于调度使命负载平衡向办理员陈述软硬件毛病并广泛地控制体系运用情况监控信息有必要在不影响集群功能的情况下取得本文将评论运用/proc文件体系和Java来取得监控数据的办法

Java在Linux集群中的运用

Java技能为集群办理开发者供给了许多处理问题的办法Java是动态灵敏可移植的这些不寻常的特征使得它成为了在异构网络及渠道上结构集群办理的抱负根底

Java具有广泛的例程库很简单处理IP协议如TCPUDP并可在multihomed主机上进行网络程序设计用它创立网络连接比用C或C++更简单经过Java本地接口(JNI)运转在Java 虚拟机(JVM)内的Java代码能够与用其它言语编写的运用及库文件彼此操作并汇编

在结构集群监控和办理时Java早已是一个可选的言语可是Java言语一般只被用于体系的前端或集群主机部分而将用C 言语编写的看护进程安装在集群结点上虽然Java程序设计言语供给了许多长处可是关于高功能集群监控Java能够有用地替换运转在每个结点上的C 言语看护进程吗?这将是本文评论的要点

高功能监控

监控Linux集群东西传统上以秒为丈量频率来供给有定量的数据而高功能集群监控被界说为“以intrasecond为丈量频率从结点有用地搜集数据的才能”当触及较大集群时监控软件的低功率问题就变得愈加严峻这是由于所运转的运用软件有必要彼此和谐或同享大局资源

在一个结点上的隔绝抵触(Interference)能影响其它结点上作业的运转例如一个MPI效果需求与一切参加的结点同步一种处理办法是搜集少数的数据并以小频率传输可是假如是高功能监控这种处理办法是不行承受的由于有较重运用率的集群应该被频频继续地监控本地作业调度器有必要能够根据资源运用情况做快速决议计划办理员常常期望收到紧急事件的当即告诉并期望调查到前史趋势数据假如集群不能被频频继续地监控那么这些要求是不行能完结的因而有必要采纳一些办法如运用更有用的算法添加传输的并行性进步传输协议及数据格局的功率削减冗余等

在盯梢运转中的资源运用情况时紧缩Profiling运用有助于调试程序或优化程序对一个给定的运用而言像存储器网络CPU这样动态资源的运用或许快速地改动着为了能够调查运用是怎样运用这些资源的一种或许的办法是运用高频率的监控

即运用户对高频率监控没有爱好假如算法是有用的不论监控频率是多少它也将消费很少的资源在异构集群中这种功率将更重要用户的作业能够被涣散到较快的及较慢的结点上慢的结点需求悉数CPU来跟上较快的结点并与之同步一个监控程序花费在较慢结点上的CPU时刻是作业的要害途径

监控阶段

集群监控首要耗费CPU周期与网络带宽这两个重要资源可是资源消费问题与这两个资源是底子不同的CPU运用问题对结点而言是彻底本地化的问题可经过创立有用的搜集与兼并算法来处理网络带宽是同享资源是规划问题能够经过最小化网络上传输的数据量来处理

为了处理这两个问题咱们将集群监控分为三个阶段搜集兼并传输搜集阶段担任从操作体系装载数据剖析数据值并存储数据兼并阶段担任将来自多个数据源的数据合在一起决议数据值是否改动并过滤它们传输阶段担任紧缩并传输数据本文会集评论Linux集群监控的搜集阶段

搜集阶段

Linux有几种办法来进行体体系计每种办法都各有其优缺陷

◆ 运用现有的东西

规范及非规范东西能履行一个或多个搜集兼并及传输阶段如rstatd或SNMP东西可是规范的rstat后台程序供给的信息是有限的速度慢并且功率低

◆ 内核模块

几个体系监控工程运用内核模块来存取监控数据一般情况下这是很有用的搜集体系数据的办法可是这种办法存在的问题是当主内核源内有其它改动时有必要坚持代码一致性一个内核模块或许与用户想运用的其它内核模块相抵触此外在运用监控体系之前用户有必要取得或恳求模块

◆ /proc虚拟文件体系

/proc 虚拟文件体系是一个较快的高功率履行体系监控的办法运用/proc的首要缺陷是有必要坚持代码剖析与/proc 文件格局改动的同步现实标明Linux内核的改动比/proc 文件格局的改动要更频频所以用/proc虚拟文件体系比用内核模块存在的问题要少

◆ 混合体系

某些监控体系选用混合办法用内核模块搜集数据用/proc虚拟文件体系作为数据接口

兼并阶段

兼并阶段的完结能够在结点上集群办理的主机上或许散布在两者上考虑到功率咱们只选用在结点上的兼并原因在于结点是监控数据的搜集器与供给者两个或多个一起的数据恳求不会引起两次操作体系调用来搜集数据而是将第一次恳求取得的数据缓存并能够供给给第2次恳求调用这种办法削减了操作体系的担负进步了监控体系的呼应性兼并阶段也能够用于将多个数据源的数据以彼此独立的搜集速率结合由于并不是一切的数据都以相同的速度改动或许需求以相同的速率搜集

运用在结点层上兼并的另一个原因是削减了包括传输在内的信息量许多/proc文件既包括动态数据也包括静态数据删去最近一次传输后没有改动的值一个结点发送的数据量能够大大地削减兼并不只除去了不常常改动的动态值的传输也处理了从不改动的静态值的传输

传输阶段

监控数据简直总是按一个层次结构安排起来传输阶段的使命便是将层次数据进行有用的编码构成一种能高效传输的数据格局Java具有的文件格局是存储层次数据的有用办法并且用供给的Java APIs很简单完结SExpressions现已被认为是传输这种数据的另一个有用的办法

关于传输监控数据遍及评论的问题是数据应该按二进制编码仍是按文本格局编码二进制数据更简单紧缩因而也能更有用地传输可是当选用/proc文件体系时监控数据一般以人们易读的格局存储在传输之前将数据转换为二进制格局将需求更多的处理资源与时刻以文本格局保存搜集的数据结点资源能被用于更多非监控性的相关作业

选用文本格局的数据将供给如下额定的好处

◆ 渠道独立性

当监控异构集群时机器之间数据字节指令的装备不是永久相同的文本格局的运用在代码方面处理了这个问题并且体系结构独立不会影响更多的处理需求

◆ 易读的格局

文本数据能以人们易读的格局进行安排假如需求的话这种特征能简单地进行程序调试或答应用户观看数据流

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/301078.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部