开发者学堂课程【企业运维监控平台架构设计与实现:统一运维监控平台设计思路】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/384/detail/4820
统一运维监控平台设计思路
内容介绍:
一、 监控平台的思路
二、 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 安装的版本会比较低,如果要用比较新的版本,建议去通过源码包的方式去安装。