【ch09】构建智能运维监控报警平台_第1页
【ch09】构建智能运维监控报警平台_第2页
【ch09】构建智能运维监控报警平台_第3页
【ch09】构建智能运维监控报警平台_第4页
【ch09】构建智能运维监控报警平台_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

构建智能运维监控报警平台Linux服务器安全管理高级运维项目9“十四五”高等教育网络空间安全产业人才培养系列丛书“互联网+”新形态立体化一体精品教材+智能运维监控报警平台的组成01运维的核心工作可以分为运行监控和故障处理两个方面。对业务系统进行精确、完善的监控,以确保在第一时间发现故障并迅速通知运维人员处理,是运维监控系统的基础功能。一个功能完善的智能监控系统,不仅可以自动处理一些简单故障,减少运维工作量,还应该在应用可能出现故障的情况下提前发出报警,以预防故障发生。因此,构建一个智能的运维监控报警平台应以运行监控和故障报警为重点,将所有业务系统中涉及的网络资源、硬件资源、软件资源、数据库资源等纳入统一的运维监控报警平台,并通过消除管理软件和数据采集手段的差异,实现对不同数据来源的统一管理、规范、处理、展现、用户登录、权限控制,最终实现规范化、自动化、智能化的大运维管理。智能运维监控报警平台的一般设计架构从低到高可以分为6层,如图9-1所示。(1)数据收集层:位于第1层,即底层,主要负责收集网络数据、业务系统数据、数据库数据、操作系统数据,并将收集的数据进行规范化处理和存储。(2)数据展示层:位于第2层,它是一个Web页面,主要负责统一展示数据收集层收集的数据,展示方式包括曲线图、柱状图、饼状图等。通过将数据进行图形化展示,可以帮助运维人员了解一段时间内主机或网络的运行状态和运行趋势,同时可以作为运维人员排查问题或解决问题的依据。(3)数据提取层:位于第3层,主要负责对从数据收集层获取的数据进行规格化和过滤处理,从中提取所需数据并发送到监控报警模块中。这一层是监控报警模块的衔接点。(4)报警规则配置层:位于第4层,主要根据从数据提取层获取的数据进行报警策略设置、报警阈值设置、报警联系人设置和报警方式设置等。(5)报警事件生成层:位于第5层,主要负责实时记录报警事件,在将报警结果存入数据库以备调用的同时形成分析报表,以统计某段时间内的故障率和故障发生趋势。(6)用户展示管理层:位于顶层,它也是一个Web页面,主要负责统一展示监控统计结果、报警故障结果,并实现多用户、多权限管理,实现统一用户控制和统一权限控制。在这6层设计架构中,从功能实现上进行划分可分为3个模块,分别是数据收集模块,数据提取模块和监控报警模块。每个模块的功能如下。(1)数据收集模块:主要负责基础数据的收集与图形展示。数据收集的方式有很多种,可以通过SNMP来实现,也可以通过代理模块来实现,还可以通过自定义脚本来实现。常用的数据收集工具有Cacti、Ganglia等。(2)数据提取模块:主要负责数据的筛选过滤和采集,将所需数据从数据收集模块中提取到监控报警模块中。通过数据收集模块提供的接口或自定义脚本,可以实现数据的提取。(3)监控报警模块:主要负责监控脚本设置、报警策略设置、报警阈值设置、报警联系人设置等操作,并统一展现报警结果和记录历史数据。常见的监控报警工具有Nagios、Centreon等。图9-2所示为根据图9-1的设计架构形成的一个智能运维监控报警平台的拓扑结构。从图9-2中可以看出,该拓扑结构主要由三大部分组成,分别是数据收集模块、数据提取模块和监控报警模块。其中,数据提取模块用于负责其他两个模块之间的数据通信;数据收集模块可以由一台或多台数据收集服务器组成,每台数据收集服务器可以直接从服务器集群中收集各种数据指标,并经过规范的数据格式处理,最终将数据存储到数据收集服务器中;监控报警模块通过数据提取模块从数据收集服务器中获取所需数据,并设置报警阈值、报警联系人等,最终实现实时报警。报警方式支持手机短信报警和邮件报警。+配置Ganglia数据收集模块02关于Ganglia的基本应用,在前面的章节已经详细介绍过。这里将Ganglia作为智能运维监控报警平台的数据收集模块,主要基于以下因素。(1)灵活的分布式、分层体系结构使Ganglia支持上万个监控节点的数据收集,并且保持性能稳定。Ganglia也可以根据不同的地域环境和网络结构,灵活地将Ganglia数据收集点部署在不同地域和层次上。用户点可以动态地添加或删除数据收集节,不会对Ganglia整体监控产生任何影响。因此,可以灵活扩展Ganglia数据收集节点。(2)收集数据更加精确。Ganglia不仅可以实时收集数据,并以图表的形式进行展示,而且允许用户查看历史统计数据。用户可以通过这些数据进行性能调整、升级、扩容等决策,确保应用系统能够满足不断增长的业务需求。(3)可以通过多播和单播的方式收集数据。在监控的节点较多时,通过多播方式收集数据可以显著降低数据收集的负担,提高监控和数据收集性能。在无法使用多播收集数据的网络环境下,可以通过单播的方式来收集数据,因此Ganglia在数据收集方面具有很强的灵活性。(4)可收集各种维度的数据。Ganglia默认可收集CPU、内存、磁盘、I/O、处理、网络六大方面的数据,并提供了C或Python接口。用户通过这些接口可以自定义数据收集模块,并将这些模块直接插入Ganglia,以监控自定义的应用。+配置Centreon监控报警模块03虽然Ganglia可以收集数据,但是运维人员不可能每天盯着数据报表。因此,需要对收集到的数据进行监控和报警,即为每台需要监控的主机或每个需要监控的服务设置报警阈值。当收集到的数据超过这个阈值时,系统能够在第一时间自动报警并通知运维人员。当收集到的数据没有超过指定的报警阈值时,运维人员无须时刻盯着数据报表,而可以专注于其他工作。这是构建智能运维监控报警平台必须实现的一个功能。对主机或服务的状态值进行监控,当达到指定阈值时进行报警。要实现这个功能并不是什么难事,写一个简单的脚本就能实现。然而,这种方式过于原始,没有层次且可维护性差。随着需要监控报警的主机或服务增多,脚本的性能将变得很差,管理也将变得非常不方便,更别说可视化效果了。因此,需要一个专业的监控报警工具来实现这个功能。Centreon是一个专业的分布式监控报警工具,它通过第三方组件可以实现对网络、操作系统和应用程序的监控与报警。在底层,Centreon使用Nagios作为监控软件;在数据层,Centreon利用NDOUtils模块将监控到的数据定时写入数据库;在展示层,Centreon提供了Web页面来配置和管理需要监控的主机或服务,并提供多种报警通知方式,同时展现监控数据和报警状态,并且支持查询历史报警记录。关于Centreon的介绍和使用,在前面章节已经进行了非常详细的介绍,这里不再赘述。通过对Centreon的使用可知,Centreon在配置、管理、可视化等方面都做得非常专业和完善,并且在多主机、多服务监控的环境下,其性能表现也非常稳定。因此,将Centreon作为智能运维监控报警平台的监控报警模块非常适合。+完美整合Ganglia和Centreon04通过前面的介绍,已确定了选用Ganglia作为数据收集模块,选用Centreon作为监控报警模块的方案。这样,一个智能运维监控报警平台的两大主要功能模块就已经建立了。但是,现在面临问题是如何将收集到的数据传送给监控报警模块。这正是数据提取模块需要完成的功能。数据提取模块需要完成的功能之一是,从数据收集模块定时采集指定的数据,并将其与指定的报警阈值进行比较。如果发现采集到的数据超出指定的报警阈值,那么将通过监控报警模块设置的报警方式发送故障通知。在这个过程中,只有采集数据是在数据收集模块完成的,而其他操作,如采集数据时间间隔、报警阈值设置、报警方式设置、报警联系人设置等都在监控报警模块完成。从数据提取模块需要完成的功能可以看出,此模块主要用来衔接数据收集模块和监控报警模块,从而实现Ganglia和Centreon的完美整合。要实现数据提取模块的功能,有很多方法可供选择,其中较为简单、直接的方法就是编写监控脚本,步骤为先编写数据提取脚本,再将脚本添加到Centreon中。下面介绍具体的操作过程。这里提供两个数据提取脚本,一个是基于Python编写的,另一个是基于PHP编写的,下面分别进行介绍。基于Python编写的脚本这个脚本的原理是先通过Ganglia提供的数据汇总端口获取数据,再将获取到的数据与指定的阈值进行比较,以判断服务是否异常。脚本内容如下:基于Python编写的脚本在这个脚本中,需要修改的地方有两处,分别是gangliahost和gangliaport。gangliahost表示gmetad服务所在服务器的IP地址。Ganglia可以与Centreon安装在一起,也可以分开部署。当Ganglia与Centreon安装在一起时,这个值就是“”。gangliaport表示gmetad收集数据汇总的交互端口,默认是8651。先将此脚本命名为check_ganglia_metric.py,再将其放到Centreon存放Nagios插件的目录(默认为/usr/lib64/nagios/plugins)下,并授予可执行权限。在命令行中直接执行check_ganglia_metric.py脚本,即可获得使用帮助:基于Python编写的脚本下面分别介绍其中部分参数的含义。-h:从哪台主机中获取数据,其后跟主机名或IP地址。这里需要注意的是,Ganglia默认将收集的数据存放在gmetad配置文件中rrd_rootdir参数指定的目录下,如果被监控的主机没有主机名或主机名没有进行DNS解析,则Ganglia将使用此主机的IP地址作为目录名来存储收集的数据,否则Ganglia将使用主机名作为存储数据的目录名称。因此,这里-h参数将以Ganglia存储RRD数据的目录名称为准。下面是Ganglia收集到的RRD数据的存储结构:基于Python编写的脚本-m:要收集的指标值,如cpunum、diskfree、cpuuser、disktotal、loadone、partmaxused等。这些指标值可以在Ganglia存储RRD数据的目录中找到,也可以在Ganglia的Web页面中查找到。-w:警告阈值。当此脚本收集的指标值超过指定的警告阈值时,此脚本会发送报警通知,同时返回状态值1。-c:故障阈值。当此脚本收集到的指标值超过指定的故障阈值时,此脚本会发送故障通知,同时返回状态值2。下面介绍此脚本的使用方法。这里以检测主机的磁盘剩余空间为例,其他指标值与此相似:基于Python编写的脚本基于Python编写的脚本在本例中,前3个例子主要用来检测磁盘的剩余空间。在检测磁盘剩余空间时使用的是“diskfree”指标。diskfree是主机所有磁盘剩余空间的总和,指标单位为GB。脚本的执行过程:如果剩余磁盘空间正常,则输出“OK”字样,同时输出剩余磁盘空间量,并返回状态值0;如果检测磁盘处于WARNING状态,则返回状态值1;如果检测磁盘处于CRITICAL状态,则返回状态值2。实际上,这就是Nagios状态检测脚本的基本写法。Nagios通过脚本的返回状态值来判断服务处于何种状态。接着看最后一个例子,这个例子使用“part_max_used”指标。这个指标表示磁盘分区的最大使用率,单位是%,它用来输出系统中磁盘分区使用率的最大值。这个指标非常有用,经常用来判断系统中某个磁盘分区是否已经满了。在这个例子中,指定WARNING状态的阈值是90%,CRITICAL状态的阈值是95%,即当系统磁盘最大使用率达到95%时将发出CRITICAL报警。进入Ganglia的Web页面,查看主机的disk_free和part_max_used状态图,检查一下通过Python脚本输出的值是否和Ganglia生成的磁盘状态图一致,如图9-3所示。基于Python编写的脚本从图9-3中可以看出,通过Python输出的值和Ganglia生成的磁盘状态图基本一致。如果需要查看更详细的统计,则可以单击图表,进入详细统计页面。在详细统计页面中,可以查看每小时、每天、每周的磁盘状态统计图。另外,从图9-3中还可以看出,统计的指标值disk_free和part_max_used位于磁盘状态图的左上角,并配有指标含义解释。基于PHP编写的脚本这个脚本的原理是通过调用Ganglia的GangliaWeb页面来获取信息,因此它的功能十分强大,几乎可以获取Ganglia收集的任何数据。脚本内容如下:基于PHP编写的脚本在这个脚本中,需要修改的是“$GANGLIAWEB”变量的值。此变量用来指定GangliaWeb程序的路径,这里是/var/www/html/ganglia,读者可根据具体环境进行修改。另外,此脚本调用了GangliaWeb程序中的functions.php、ganglia.php、getganglia.php、conf.php这4个PHP文件,需要确保这4个文件的路径是正确的。先将此脚本命名为check_ganglia_metric.php,再将其放到Centreon中存放Nagios插件的目录(默认为/usr/lib64/nagios/plugins)下,并授予可执行权限。在命令行中直接执行check_ganglia_metric.php脚本,即可获得使用帮助:实现Ganglia与Centreon的协同处理由于Centreon底层调用的是Nagios,因此将这些脚本作为Nagios的插件,即可实现灵活的报警设置和便捷的管理。接下来以check_ganglia_metric.php脚本为例,演示如何将此脚本集成到Centreon中。将其他脚本集成到Centreon中的方法与此完全相同。Ganglia和Centreon可以分别部署在两台不同的服务器上,也可以部署在同一台服务器上,这里将Ganglia和Centreon部署在同一台服务器上。在监控服务器的CentreonWeb页面中,选择“Configuration→Commands→Checks”选项,单击“Add”按钮,新建一个Command。 例如,创建一个名为check_ganglia_php的Command,将“CommandType”设置为“Check”。这里需要重点注意“CommandLine”中的内容,其中“$USER1$”用于设置Centreon服务器上Nagios监控插件的路径,默认是/usr/lib64/nagios/plugins,前面已经将 check_ganglia_metric.php监控脚本放到了此路径下,这里直接引用即可。在这个脚本对应的参数中定义了3个参数变量:“$ARG1$”、“$ARG2$”和“$ARG3$”,分别用于设置Gangliametric、警告条件和CRITICAL阈值。这里建议将每个参数的作用都在“ArgumentDescriptions”选区中进行描述,以免在添加服务时出错。实现Ganglia与Centreon的协同处理经过以上操作,即可将check_ganglia_metric.php脚本作为一个命令集成到Centreon中。接下来通过check_ganglia_metric.php脚本检测某些主机的磁盘空间最大占用率。在CentreonWeb页面中,选择“Configuration→Services→Servicesbyhostgroup”选项,单击“Add”按钮,添加一个主机组服务。在“ServiceConfiguration”选项卡中,“Description”选项用于设置监控服务的名称,这里将其设置为“check_disk_group”;“ServiceTemplate”选项用于设置服务的模板,这里将其设置为“generic-service”;“CheckCommand”选项用于设置服务检查的命令,这里将其设置为创建的命令“check_ganglia_php”;“Args”就是刚才创建check_ganglia_php命令时指定的3个变量,这里根据每个变量的含义,依次设置Gangliametric、警告条件和CRITICAL阈值。接下来设置报警通知。“NotificationEnabled”选项表示是否

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论