监控是为了确保资源是处于健康的状态,是任何系统不可或缺的一部分。OpenStack监控除了自身服务组件Ceilometer外,还可以和第三方监控软件结合,即通过第三方软件实现OpenStack监控功能,以弥补Ceilometer的不足。本章介绍几种OpenStack监控常用的第三方监控软件。
1.Ganglia
对于OpenStack云平台,主机、存储和网络的监控需求和传统IT环境是一样的,关注的主要指标包括CPU、内存、磁盘、网络I/O等。Ganglia是OpenStack部署中用于性能监控且使用最多的一款开源软件。
Ganglia是UC Berkeley发起的一个开源实时监视项目,它是一个跨平台、可扩展、高性能计算系统下的分布式监控系统,设计用于测量数以千计的节点,为云计算系统提供系统静态数据以及重要的性能度量数据。
Ganglia主要是用来监控系统性能,如:CPU、内存、硬盘利用率、I/O负载、网络流量情况等。它需要在各个节点运行客户端程序,在中心节点部署服务器进程,来对整个集群的性能进行监控,并提供各种视图。另外,Ganglia服务器端进程还可以组成集群,提供高可靠性,用于支持大型或生产环境的监控。
Ganglia的核心服务包括gmond、gmetad和gweb。
1)gmond(Ganglia Monitoring Daemon)是一种轻量级的服务,安装在每台需要收集指标数据的节点主机上。gmond在每台主机上完成实际意义上的指标数据收集工作,并通过监听/通告协议和集群内其他节点共享数据。使用gmond,用户可以很容易地收集到很多系统指标数据,如CPU、内存、磁盘、网络和活跃进程的数据等。
2)gmetad(Ganglia Meta Daemon)是一种从其他gmetad或gmond源收集指标数据,并将其以RRD格式存储至磁盘的服务。gmetad为从主机组收集的特定指标信息提供了简单的查询机制,并支持分级授权,使得创建联合监测域成为可能。
3)gweb(Ganglia Web)是一种利用浏览器展示gmetad所存储的数据的PHP前端。在Web界面中以图表方式展现集群运行状态下收集的各种不同指标的数据。
Ganglia的强大在于:其服务端可以通过一台客户端收集到同一个网段的所有客户端的数据,而Ganglia集群服务端可以通过一台服务端收集到它下属的所有客户端的数据,这就表示一台服务器通过不同的分层能够管理上万台机器,这种管理能力是其他监控软件所不能比拟的。Ganglia监控界面如图5-6所示。
图5-6 Ganglia监控界面
2.Nagios
Nagios是在OpenStack部署中广泛使用的用于监控云平台各种服务与资源的开源监控软件,它具有良好的扩展性,很容易加入自行开发的监控项目,为用户提供了很大的便利性和灵活性。
Nagios是监控体系的框架,也是所有监控的基础。Nagios所有的监控、检测功能都是由插件来完成的,插件将监控的结果返回给Nagios,Nagios分析这些结果,再以Web的方式展现给用户。它同时提供相应的报警功能,在系统或服务状态异常时可以发送邮件或短信报警通知网站运维人员,并在状态恢复后发出正常的邮件或短信通知。报警的功能也是由插件完成的。
默认的Nagios可以监控磁盘、SSH、Ping等系统基本服务,但Nagios对OpenStack却一无所知,需要用户自行开发和扩展插件实现监控,网络上也有不少免费的监控脚本可以直接集成进来。对于OpenStack服务的监控,最基本的可以从进程的角度进行监控,例如,进程是否运行、响应速度如何等。更进一步,可以结合不同服务的命令,通过查询来判断服务本身的质量如何,这需要了解OpenStack各个服务的使用,以及租户、用户、密码等信息。
Nagios主机监控视图如图5-7所示。
图5-7 Nagios主机监控视图
3.LogStash
OpenStack云平台由于服务众多,会产生大量的日志输出,且关联的服务往往运行于不同的节点之上,一旦出现问题,通过日志排除故障非常不方便。因此,需要一款日志管理工具,帮助用户收集、传输、管理日志,以便能快速地搜索、排查问题。
LogStash是一个开源的日志管理工具,也是一个应用程序日志传输、处理、管理和搜索的平台,用户可以用它来统一对应用程序日志进行收集管理,并提供Web接口用于查询和统计。
LogStash在各个节点部署了代理程序,可以将日志输出汇聚到中心节点进行分析,而中心节点本质上是一个搜索引擎和信息统计工具。LogStash通常和ElasticSearch、Kibana配合使用。ElasticSearch是一个基于Lucene构建的开源的分布式RESTful搜索引擎,Kibana是一个基于浏览器页面的ElasticSearch前端展示工具。三者结合起来使用,可以实现对日志进行高效的搜索、可视化、分析等各种操作。简单来讲,LogStash+ElasticSearch+Kibana的工作流程如下:
1)LogStash Shipper监控并过滤日志,将过滤后的日志内容发给Redis(消息队列)。
2)LogStash Indexer从Redis中读取数据,将日志收集在一起交给ElasticSearch。
3)ElasticSearch可以自定义搜索,并结合Kibana进行页面展示。
LogStash日志分析界面如图5-8所示。
图5-8 LogStash日志分析界面
除上述监控软件外,还有一些其他的监控软件,如Zabbix、CloudWatch、Zenoss、OpenNMS、Icinga等,也可以用来实现OpenStack监控,具体用哪个软件应根据用户监控需求的侧重点不同而定。
几款常用的开源监控软件的特点如表5-17所示。
表5-17 开源监控软件的特点