统一运维监控平台设计思路
内容介绍:
一、 监控平台的思路
二、 ganglia的安装
三、 yum方式安装ganglia
一、 监控平台的思路
做一个监控平台,不是通过一个软件或者两个软件就是一个监控平台,那么如何去设计一个适合自己的监控平台呢?
思路方面是非常重要的,要了解一个完善的监控平台具备哪些功能,包括用什么软件去实现,这个是必须去掌握的一个内容,通过这个思路可以看出来之前介绍的软件,比如nagions,zabbix,centreo,它仅仅是做统一监控平台的一个部分。
构建一个智能的运维监控平台,必须以运行监控和故障报警这两个方面为重点,将所有业务系统中所涉及的网络资源、硬件资源、软件资源、数据库资源等纳入统一的运维监控平台中,并通过消除管理软件的差别,数据采集手段的差别,对各种不同的数据来源实现统一管理、统一规范、统一处理、统一展现、统一用户登录、统一权限控制,最终实现运维规范化、自动化、智能化的大运维管理。
智能监控平台,设计架构从低到高可以分为6层,每层又分三个模块,监控报警模块,数据提取模块,数据收集模块。
用户展示管理层 |
同一用户管理、集中监控、集中维护 |
监控报警模块
监控报警模块 |
报警事件生成层
|
实时记录报警事件、形成分析图表 |
|
报警规则配置层
|
报警策略设置、报警阀值设置
|
|
数据提取层 |
定时采集数据到监控报警模块
|
数据提取模块 |
数据展示层
|
数据生成曲线图直观显示
|
数据收集模块 |
数据收集层
|
网络数据、业务系统数据、数据库数据、操作系统数据 |
1、数据收集层
最底层是数据收集层,数据收集层的主要含义就是做数据的收集,第一步对系统本机的数据一个收据,比如操作系统的数据,网路,CPU,内存,磁盘等数据都要收集到。
做一个监控,这是基本的数据基础。还有一个是业务数据,它是在操作系统的业务之上,业务的数据也要收集起来,业务数据有很多,一部分包含日志,另外一部分是业务性能状态,比如技能状态,服务的状态,这是关于业务数据,还有一部分是数据库的数据,它主要涉及到数据库的状态,还有就是网络数据,比如网络带宽,网路io。
在整个监控平台里面做的一些基础的数据收集,在数据收集层,有四个数据是必须要收集到的,将数据收集到要对数据进行查看和判断。
2、数据展示层
数据收集之后,对数据进行查看和观看。怎么样才能清晰的判断呢?领导比较喜欢,比如柱状图、条形图、饼图等,领导和运维人员都比较喜欢这种数据显示。
数据展示层,通过手段比如程序的方式,把数通过曲线的方式展示出来,通过各种软件rdruce,jd,生成各种个样的图展示出来,这对数据人员,还是老板都是一个非常喜欢的方式。
3、数据提取层
数据收集到了,也展示到了,对用用户还是不够,关注的点是要把这些数据做一个对比,数据出现问题也要进行报警,如果要报警,怎么把数据进行提取呢?
数据收集到后肯定是要对数据进行提取,拿来对数据进行对比的。这就是第三层,数据提取层,就是把收集到的数据,利用一些插件,命令来提取出来把提取出来的数据进行对比,校验等操作。
这一层的作用是定时或实时采集数据,发送到报警规则配置层。
4、报警规则配置层
数据提取完毕,就是报警规则配置层。数据已经提取到了,要对数据进行一个比对和验证。怎么样验证呢?
数据就有一个层次,对数据阀值的设置和比量,那就是第四层报警规则配置层,配置数值在什么时候是正常的,值要是超过阀值,就是不正常的,配置这些东西,把这些配置完,第四层的功能就完成了。
5、报警事件生成层
把规则配置完成之后是不是就完成了呢?
当然不是,还要做一些历史事件的查询,比如这周,这个月系统发生了多少次报警,这就是第五层报警事件生成层。应该比较专业的运维平台,就是要把每一次报警做一个记录。
纵观全局去判断,比如一个月多长时间内它的一个故障状态是什么样的,它的一个安全状态是一个什么样子的,这些都是要记录的。整体的一个思路是要考虑的,使用这个思路做一个报警系统,就是把每一次的报警进行归纳总结,然后在一年后做一个报表,给运维管理人员做一个参考,或者给领导的一个交代,这一年当中只发生一次两次的失误,安全率在99.99%,这也是对工作的一个肯定,所以在这个运维模块里面必须要有一个报警事件生成层,对所有报警事件做记录。
6、用户展示管理层
这些层在对用户的相关的结果,在最后要让用户能够去配置,去管理,必须要有和用户相关的接口ui,最后一层叫用户展示管理层。通过用户展示管理层,可以配这个展示报警的规则,也可以查看报警事件的生成结果去统一实现一个监控,统一实现一个维护,当然在这个用户展示层,也有用户角色的定义,比如在这个城市里面会定义多种用户,不同的用户,登陆到平台里面所展示的内容是不一样的,比如领导登陆进来之后,给它的第一个页面就是当前有多少台服务器在运行,一个月,三个月,五个月它的故障率是多少,都通过图形的方式给领导做一个展示,针对运维人员打开这个界面之后,看见的第一点就是服务器整个资源运营状态,哪个服务器有故障,关注的是这个点,这就是用户展示管理层,就是经常说的ui界面。
7、架构图
这六个层次如果是从纵向去区分,分成三大模块,第一层到第二层可以分为数据收集模块,第三层可以分为数据提取模块,第四五六层可以分为监控报警模块,报警规则去进行一个报警,并且进行一个事件的展示。
完整的监控报警平台就是要通过这六个方面三大模块去实现,
事件完成之后看一下部署的架构图
这个图是一个整体的拓扑图,刚才那个是设计图,在这个拓扑图上,主要是有三个模块组成。
左边最大的是一个数据收集模块,专门有一批数据收集服务器,主要作用就是在一堆服务器集群里面去收集各种各样的数据,汇总存储到数据收集服务器,另外一块是数据提取模块衔接数据收集模块和监控报警模块,它的作用是从数据收集服务器里面把数据根据规则提取出来,传到监控报警模块里面去,在这个监控报警模块里面可以设置一些报警规则,比如说设置一个报警的阀值,设置一个报警的策略,通过邮件报警,还是手机报警。策略都是在监控报警里面去进行设置的,整个架构基本就起来了,有做数据收集的,有做数据提取的,有做监控报警的。
架构图其实就是设计图当中的一个拓扑实现。这是关于统一报警监控平台的设计机制以及它的一个实现原理,通过这个图可以看到开源监控软件在哪一层实现,数据收集模块有比如常见的ccdi,Ganglia,都可以当数据收集模块来使用。数据提取模块比较隐蔽,比如zabbix就充当了一个数据提取模块的功能,监控报警模块zabbix ui就是监控报警模块,centreo也可以充当以恶搞监控报警模块,这是关于哪个软件在哪个层次可以实现。
关于数据提取模块,刚才在框架中有个Ganglia加centreo,那么它的一个数据提取模块实现通过一个专业的接口去实现,不但可以通过Ganglia的客户端去实现,也可以通过第三方的一些程序,比如通过php程序,后续都会介绍到,也会推荐几个数据提取模块的脚本。
二、ganglia的安装
1、Ganglia的常用架构,Ganglia监控系统有三部分组成,分别是 gmond、gmetad、webfrontend。Gmond客户端,gmetad服务端,webfrontend web端。
(图形如下:)
Gmond客户端,在右边的黄色圆圈,表示的是要监控的服务器,它会去收集本地的数据,它还会收集其他的数据,第一个Gmond不但可以收集自己的数据,也可以收集下面Gmond的数据,它的数据收集方式可以是单播也可以通过多播,如果通过多个去实现,每个gmond的点上都有局域网或者一个网段内所有服务器节点的数据制度。这是通过多播或者主播的方式去实现的。
好处是收集点统一,每个客户端都有所有节点的数据,在获取数据的时候就不用担心它某一个数据出现问题,服务端会定期去gmond端去拉数据,这个图有问题,是拉的方式,不是推的方式,拉数据也是有规则的可以设置通过一个节点去拉,也可以通过多个节点去拉,比如是三个节点,通过gmond1,gmond2,gmond3三个节点去拉,当gmond1节点当掉,可以去gmond2拉取数据,因为它们的数据都是相同的,这样就能解决的性能和安全性。不会因为某一个节点拉不到数据而产生故障,这个是gmond和gmetad的实现机制,实现完之后把数据汇总 到服务端,利用rrdtool databases这个绘图工具来实现一个绘图,它实现绘图的工具的php script绘图,完成绘图之后就利用浏览器ui去展示,浏览器打开就可以去访问,apache php展示。
同时,Ganglia支持多种监控架构,这是由 gmetad的特性决定的
gmetad可以周期性地去多个gmond节点收集数据,这就是ganglia的两层架构。同时,gmetad不但可以从gmond收集数据,也可以从其他的gmetad得到数据,这就形成了Gnaglia的三层架构。多种架构方式也体现了Ganglia 作为分布式监控系统的灵活性和扩展性。比如服务端它可以分为一级,也可以分为二级,通过这种树形架构就实现了多层架构。这是实现它的一个结构。
2、它是一个流向图,也是分布式架构的一个图,它是一个分布式架构的一个图形。
Cluster1、Cluster2就相当于是两个地点,可以认为它是分布在两地的两个机房,Cluster1是北京机房,Cluster2是广州机房,可以这么去认为,最大的服务端叫一级服务端,gmetad可以认为它在上海机房,可以是这么一个架构,在北京这个机房它是两层架构,它的二级服务端从gmond去拉取数据,拉取完进行汇总,汇总之后就把数据交给到上一级,一级服务端,也就是上海机房,同理Cluster2广州节点它也是一样,在自己的机房里收集到的数据传到gmetad上面去,然后在对数据进行统一的展示,这就是一个完整的分布式架构。
中间还有一些细节性的东西,比如它数据的实现展示方式,是通过tcp协议,它也可以通过别的方式,比如在一个局域网内部可以完全通过多播的方式来实现,比如udp协议去实现数据的传输,跨机房传输一般是通过tcp协议,因为它是保障数据安全,一定要使用一个可靠的连接来实现,它传输的格式是xml格式,这就是一个分布式架构。看到这个架构就知道扩展性是非常灵活。
三、yum方式安装ganglia
两种方式去安装,一种是通过rpm包,另一种是通过yum的方式安装。
如果是新手建议通过yum的方式安装,因为非常简单,一个步骤就完成了,但通过源码去安装就比较麻烦,需要安装很多的软件和工具。CentOs系统中默认的yum源并没有包含Ganglia,所以我们必须安装扩展的yum源。从下面这个地址下载Linux附加软件包(EPEL),然后安装扩展yum 源:
[ root@node1~]#wgethttp://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm[root@node1~]#rpm -ivhepel-release-5-4.noarch.rpm
完成yum源安装,就可以直接通过yum方式安装Ganglia了。
Ganglia的安装分为两个部分,分别是gmetad和gmond,gmetad安装在监控管理端,gmond安装在需要监控的客户端主机,对应的 yum包名称分别为 ganglia-gmetad和ganglia-gmond。
下面介绍通过yum方式安装 Ganglia的过程。
以下操作是在监控管理端进行的,
首先通过yum命令查看下可用的Ganglia安装信息:[root@monitor~]tyum listganglia*安装gmetad需要rrdtool的支持,而通过yum方式,会自动查找gmetad依赖的安装包,自动完成安装,这也是yum方式安装的优势。最后在需要监控的所有客户端主机上安装gmond服务:[root@node1~]#yum -y installganglia-gmond.x86_64这样,Ganglia 监控系统就安装完成了。通过yum方式安装的 Ganglia 默认配置文件位于/etc/ganglia中。
但是通过yum安装的版本会比较低,如果要用比较新的版本,建议去通过源码包的方式去安装。