第 12 章 nagios开发相关
- 格式:pdf
- 大小:166.70 KB
- 文档页数:5
Nagios 监控相关资源汇总目录提纲:一. Nagios3.0.5在CentOS5.2中安装1.Nagios安装2.监控Linux 主机3.监控windows主4.使用NDOUtils将Nagios监控信息存入数据库5.安装使用Nagvis插件Nagios 札记1.Nagios 札记之一:安装2.Nagios 札记之二:配置3.Nagios 札记之三:安装配置 NRPE4.Nagios 札记之四:扩展提示信息发送方式(smtp, msn, fetion)二.告警方式:1.配置 Nagios 使用 FetionRobot 短信报警2.Nagios 札记之四:扩展提示信息发送方式(smtp, msn, fetion)三.插件安装1.nagios 3.X pnp-0.4.3 配置小记四.Nagios监空相关1.利用Nagios监控Oracle正文:Nagios3.0.5在CentOS5.2中安装(一)1.系统:CentOS 5.22.安装前准备:1).安装好apache,GD库(我的GD库安装在/usr/local/libgd)。
2).下载Nagios3.0.5,Nagios-plugins1.4.11,nrpe2.12,nsclient++#/download/wget /sourceforge/nagios/nagios-3.0.5.tar.gzwget /sourceforge/nagiosplug/nagios-plugins-1.4.11.tar.gz# Nagios3.0.5,Nagios-plugins1.4.11,nrpe2.12安装在监控服务器上。
#去/download/addons/下载nrpe和nsclient++插件。
# nrpe2.12安装在Linux/Unix被监控端。
# nsclient++安装在Windows被监控端。
3).创建帐号及组#创建帐号/usr/sbin/useradd -m nagiospasswd nagios#创建组/usr/sbin/groupadd nagcmd/usr/sbin/usermod -a -G nagcmd nagios/usr/sbin/usermod -a -G nagcmd daemon# daemon为运行apache的帐号。
2.2.General选项说明单击“General→Home”会显示默认页面,如上图所示,单击“General→Documentation”显示Nagios版本帮助信息,如下图:下面针对Monitoring下面的选项的功能做具体的说明。
∙Network Outages:显示网络中断的统计,如果有中断信息会在下面显示;∙Current Network Status:列出当前网络的状态,上次更新的日期以及登2.3.3 Host Detail (主机存活状态详细信息)Host Detail显示的是主机详细信息,用ping探测的。
如下图所示:∙Host:列出所有的主机名称。
∙Status:列出所有主机的存活状态。
∙Last Check:上次检测时间。
∙Host:主机名称。
:下面两个图标3-D图形的界面同样看起来很难受,尤其管理员可以看到全部主机的情况下更杂乱无章。
这个东西也不是一无是处,至少firefox插件告警的功能是必须依赖它的。
∙Shutdown the Nagios process:关闭Nagios的进程,此命令是用来关闭Nagios2.3.17 Scheduling Queue(队列信息,管理员可见)Scheduling Queue 显示高度队列信息,也就是相关进程下次检测的时间序列。
如下图所示:2.4. Reporting2.4.2 AvaiabilityAvaiability 此功能生成的报告要比Trends可供选择的种类多些,除了Trends可供选择的功能之外,还包括:对所有主机生成报告对所有服务生成报告对Hostgroups和Servicegroups生成报告,下图是对主机和服务生成的报告:2.4.4 Alert History。
N A G I O S服务器监控解决方案1NAGIOS服务器监控解决方案目录第一章背景介绍 (3)1.1 背景描述 (3)第二章系统需求 (3)2.1硬件需求 (3)2.2软件需求 (3)2.3网络要求 (4)第三章系统架构 (4)3.1 结体架构 (5)3.2 系统组成 (5)3.2.1 关于NAGIOS (6)3.2.2 NAGIOS配置文件关系说明 (7)3.2.3 关于nrpe (8)3.2.4 关于NSClient++ (8)第四章系统功能 (8)4.1 Monitoring菜单 (9)4.2 Reporting菜单 (10)4.3 Configuration菜单 (12)4.4 短信警报功能 (13)第五章系统布署 (15)5.1 添加WINDOWS主机到监控服务器系统 (15)5.2添加Linux主机到监控服务器系统 (17)第六章系统优点 (19)6.1 NAGIOS的特性 (19)6.2 NAGIOS的优点 (20)6.3 NAGIOS的缺点 (20)第一章背景介绍1.1 背景描述随着业务的增长网络规模也不断扩大、服务器或设备也相应增多,采用更加高效、更自动化、更节省运维成本的管理手段来控制故障发现、故障跟踪、故障恢复显得越来越重要。
一旦网络、服务器、视频监控设备以及各种应用出现问题,常常会给企事业造成很大的损失。
因此,必须有一个开源的的服务器监控平台能够提供7x24小时检测网络、服务器、视频监控设备以及各种应用,及时将服务异常终止的有用信息收集起来,通过短信、Email、声音反馈给管理人员,管理人员就可以及时排除故障,避免造成重大损失。
采用开源的操作系统以及软件能有效提高效率降低运维成本。
Nagios是一款开放源代码的软件,利用它可以实现服务器的各种资源检测(CPU、内存、硬盘、网络等等),当服务器或者服务中断nagios可以将这一信息以短信、声音的形式通告管理员,有效缩短故障发现的时间,将损失减至最低。
Nagios配置学习手记-续-完整版2005.06.01chnl@目录目录 (2)一、前言 (5)二、安装 (6)(一)Nagios 端 (6)1、安装文件列表 (6)2、安装账号及目录 (6)3、其他 (7)(二)Nrpe 端 (7)1、nrpe的安装 (7)三、配置 (8)(一)Nagios 部分 (8)1、nagios.cfg (8)2、minimal.cfg (10)3、resource.cfg (12)4、cgi.cfg (12)5、commands.cfg (13)6、hosts.cfg (15)7、services.cfg (20)(二)Httpd (Apache )部分 (28)1、nagios.conf (28)2、.htaccess (29)3、ers (29)(三)Nrpe 部分 (30)1、nrpe.cfg (30)四、Notify 脚本 (31)(一)Email 通知部分 (31)1、EmailSend.jar (31)2、EmailNotify.cfg (31)3、dest.addr (32)(二)QQ通知部分 (32)1、TextQQ (32)2、QqNotify.cfg及dest.qq (33)3、qq.sh及qq.exp (33)(三)alert_sender.sh 部分 (34)1、脚本内容 (34)2、简单说明 (37)五、启动 (38)1、Nrpe (38)2、Nagios (38)3、Httpd(Apache) (38)六、使用及测试 (39)1、登陆 (39)2、功能截图 (40)3、测试 (43)附录: (43)Nagios部分: (43)Httpd部分: (44)Nrpe部分: (44)Notify部分: (44)说明本文是上一篇文章<N agios配置学习手记>的后续版本。
主要内容为对command(plugins)/host/service的配置及对主机/应用监控具体实现。
nagios端口机制-回复问题:什么是Nagios端口机制?Nagios是一款非常流行的开源网络监控工具,它能够帮助系统管理员监控各种网络设备和服务的状态。
在Nagios中,端口机制是一项关键功能,用于检测和监控网络上各个设备和服务的运行状态。
本文将逐步解释Nagios的端口机制是如何工作的,并介绍其使用和设置。
第一步:理解端口和监控在开始讨论Nagios的端口机制之前,我们需要了解一些关于端口和监控的基础知识。
在计算机网络中,端口是用于在不同的进程之间进行通信的特定数字标识。
通常情况下,每个网络服务都使用特定的端口来接收和发送数据。
监控是指对网络设备和服务进行持续的跟踪和评估,以确保它们正常运行。
监控结果可用于识别和解决潜在的故障和问题。
第二步:Nagios的基本工作原理Nagios通过周期性地向设备发送指定的请求,并检查响应来监控网络设备和服务。
这些请求通常是基于不同协议的数据包,而Nagios则负责收集和分析这些响应。
对于端口监控,Nagios使用的是TCP和UDP协议。
TCP(Transmission Control Protocol)是一种面向连接的协议,为数据传输提供可靠性和有序性。
UDP(User Datagram Protocol)则是一种无连接的协议,适用于时间敏感的应用。
第三步:Nagios端口机制的使用Nagios的端口机制允许管理员指定要监控的设备和服务的端口号,并设置监控的方法和频率。
以下是一些常见的使用方法:1. 端口存活性检查:管理员可以设置Nagios定期检查设备上特定端口的存活性。
如果端口处于打开状态,Nagios会发出警报。
这是一种常用的监控方法,可以帮助管理员及时发现网络设备和服务的故障。
2. 端口数据收集:Nagios还可以通过检查特定端口的响应来收集数据。
例如,管理员可以设置Nagios检查Web服务器的80端口,以确保服务器正常运行,并记录每次检查的响应时间和内容。
nagios全攻略Nagios 是一种开放源代码监视软件,它可以扫描主机、服务、网络方面存在的问题。
Nagios 与其他类似的包之间的主要区别在于,Nagios 将所有的信息简化为“工作(working)”、“可疑的(questionable)”和“故障(failure)”状态,并且 Nagios 支持由插件组成的非常丰富的“生态系统”。
这些特性使得用户能够进行有效安装,在此过程中无需过多地关心细节内容,只提供他们所需的信息即可。
在多台主机中监视和分析大量的信息——CPU 是否超载?网络接口是否满负荷?——是一项繁重的工作。
不过一个好的解决方案可能只有几步之遥!开放源代码 Nagios 项目可以非常方便地解决复杂的监视和通知需求。
了解 Nagios 的关键在于,它并不是监视和跟踪“普通的”测量数据,如 CPU 使用率,该工具将所有的信息简化为“工作”、“可疑的”和“故障”状态。
这可以帮助操作员根据预定义的和可配置的标准,重点关注最重要和最关键的问题。
Nagios 内置了报告停机时间的功能,在跟踪服务水平协议 (SLA) 的实现时,这可能是非常有用的。
正如本文稍后将要说明的,Nagios 还提供了停机自动扩大功能、服务和主机依赖关系,这篇介绍性的文章将主要讨论您可以轻松地为基本的监视需求编写小的、自定义的内容。
安装大多数Linux® 分发版中都内置了 Nagios 安装。
在这种情况下,安装工作可以很好地与 Apache Web 服务器进行集成。
要激活或者更新这种配置,您需要运行下面的命令:yum install nagios或者apt-get install nagios-text。
可以从 NagiosExchange 免费下载用于AIX® 平台的二进制文件(请参见参考资料)。
对于其他平台,可以从 下载 Nagios 的源代码(请参见参考资料)。
生成新的 Nagios 需要一些标准开发工具:∙工具o gcco makeo autoconfo automake∙可执行文件o libgdo openssl∙包(库和 Header)许多与简单网络管理协议相关的(SNMP 相关的)插件还需要 Perl 和 Net::SNMP 包。
第二章Nagios的WEB操作说明前言推荐使用Firefox来浏览Naigos的页面,同为开源软件,Firefox与Nagios 结合得很不错:1.Firefox登录Nagios页面后,当监控目标异常时,有声音告警,而且在故障没解决前,始终周期性声音告警,IE没有这个功能。
2.Firefox提供了一个插件nagios checker,如果安装了这个插件,就不需要时时刻刻登录Nagios了,只要打开Firefox就可以了。
当监控目标出错时,Firefox的插件会自动告警。
见下图插件安装及设置方法略。
由于帐户权限可能有限,本文中提供的部分功能在部分帐号上无法看到。
2.1.Nagios登录打开浏览器,输入nagios页面地址,进入Nagios首页,会看到Nagios相关版本和操作选项。
登录页面后,会看到Nagios默认页面的相关信息,左侧显示的是操作按钮选项,右侧是Nagios版本和帮助说明,我们就以Nagios页面中左侧显示的内容为参考,进行本章的划分,如下图所示。
2.2.General选项说明单击“General→Home”会显示默认页面,如上图所示,单击“General→Documentation”显示Nagios版本帮助信息,如下图:2.3.MonitoringMonitoring包括的选项如下图左侧所示:下面针对Monitoring下面的选项的功能做具体的说明。
2.3.1 Tactical Overview(总览)通过上面的介绍,相信对Nagios的登录界面有初步的认识,下面将介绍WEB 页面的Monitoring监控选项具体监控操作,需重点掌握。
单击“Monitoring Tactical Overview(基本概况)”,如下图所示:这个页面上显示了所有主机的状态信息,可以看到停机(down)、不可达(Unreachble)、UP(启动)、等待返回状态(pending)。
同时列出了所有服务的状态信息。
第 12 章 开发相关 12.1. 使用内嵌Perl 解释器12.1.1. 介绍Nagios 编译时可以选择支持内嵌Perl 解释器。
这使得Nagios 可以用更高效率来执行Perl 所写插件,因而如果严重依赖于Perl 写的插件的话可能是个好消息。
没有内嵌Perl 解释器,Nagios 将通过象外部命令一样用派生和执行的方法利用Perl 所写的插件。
当编译中选择了支持内嵌Perl 解释器时,Nagios 可以象调用库一样来执行Perl 插件。
提示嵌入式Perl 解释器可以让Nagios 执行各种Perl 脚本-不仅仅是插件。
本文档只讨论涉及到Perl 解释里执行对主机与服务检测的插件,但它同样也支持相似的Perl 脚本以用于其他类型命令(例如通知脚本、事件处理脚本等)。
Stephen Davies 在几年前发布了最初的嵌入式Perl 解释器,Stanley Hopcroft 是主要的帮助嵌入式Perl 解释器改进提升的人并且应用它的对优劣性做了批注。
他同时给出了有关如何更好地实现用嵌入式Perl 来实现Perl 插件的方法。
必须注意本文档里用的"ePN",它指示Nagios 用Perl ,或是指示了Nagios 要用嵌入式Perl 解释器来编译执行它。
12.1.2. 优点使用ePN(Nagios 编译有嵌入式Perl 解释器)的好处有:zNagios 在运行Perl 插件时将付出更少时间因为它不需要派生进程来执行插件(每次执行要调入Perl 解释器)。
嵌入式Perl 解释器可以象调用库函数一样来执行插件;z它会大大降低运行Perl 插件的系统开销并且(或者同时)可以同时运行更多的Perl 插件检测。
也就是说,可能使用其他语言并没有这些好处,语言象C/C++、Expect/TCL ,用这些语言开发插件公认地比使用Perl 语言开发插件要慢一个数量级(虽然在最终运行时间上会更快,TCL 语言是个例外);z如果不是C 程序员,仍旧可以用Perl 来做背负那些繁重的工作而不至于拖慢Nagios 的运行。
但是要注意,ePN 并不能加速插件本身(还要除去内嵌Perl 解释器的加载时间)。
如果要加速插件本身的执行,可以考虑使用Perl XSUB 包(XS)或是C ,这么做的前提是你已经确信插件Perl 程序足够优化并且保存了合理的算法(用那个Benchmark.pm 包来比较Perl 程序模块的性能的方法是没有意义的);z用ePN 是一个学习Perl 语言最好的机会。
12.1.3. 缺点使用ePN(Nagios 嵌入式Perl 解释器)比之纯粹Nagios 程序的缺点相近的,是在运行Apache 带有mod_perl(Apache 也是使用嵌入式解释器)和运行纯粹Apache 程序的两种情形对比,情况也是这样:z一个Perl 程序可能在使用纯粹Nagios 程序时运转良好但可能在使用ePN 时却可能不正常,要修改Perl 插件程序以使之运转;z 在使用ePN 时调试Perl 插件要比使用纯粹Nagios 调试插件要困难一些; z 使用ePN 的插件比纯粹Nagios 情况下要更大一些(内存占用); z 想用的一些Perl 结构体可能不能用或是用起来很困难;z不得不要关注'有多个进程在使用'和选择一种方式看起来更少交换或更少明显交互(注意用解释器执行是并发的--译者注);z要有更多的Perl 功底(但不需要过多Perl 技巧或素材-除非是使用XSUBS 的插件)。
12.1.4. 使用嵌入式Perl 解释器第 12 章 开发相关上一页下一页如果要使用嵌入式Perl解释器来运行Perl插件和Perl脚本,下面这些是需要做的:z带有嵌入式Perl解释器支持选项来编译Nagios(见下面的指令);z打开主配置文件里的enable_embedded_perl选项开关;z设置use_embedded_perl_implicitly选项以符合要求。
该选项决定默认情况下是否要使用Perl解释器来运行个别Perl插件和脚本;z偶尔要对某些Perl插件或脚本要设置或打开或关闭使用嵌入式Perl解释器。
这对于部分因带有嵌入式Perl解释的Nagios 在执行Perl插件时存在问题时很有用,见下面指令是如何完成的。
12.1.5. 编译一个Nagios带嵌入式Perl解释器如果要用嵌入式Perl解释器,首先需要编译Nagios支持它。
只需要运行源程序配置脚本时带上--enable-embedded-perl参数即可。
如果要嵌入式解释器缓存编译后的脚本,还要带上--with-perlcache参数,例子:./configure --enable-embedded-perl --with-perlcache otheroptions...一旦用新选项重新运行配置脚本,一定要重编译Nagios。
12.1.6. 指定插件使用Perl解释器自Nagios的第三版开始,可以在Perl插件或脚本中指定是否需要在嵌入式Perl解释器里运行。
这对于运行那些在Perl解释器里运行有问题的Perl脚本的处理将非常有帮助。
明确地指定Nagios是否要使用嵌入式Perl解释器来运行某个Perl脚本,把下面的东西加到你的Perl插件或脚本里...如果需要Nagios使用嵌入式Perl解释器来运行Perl脚本,在Perl程序里加入下面一行:# nagios: +epn如果不用嵌入式解释器,在Perl程序里加入下面这一行:# nagios: -epn上面的行必须出现有Perl脚本的前10行里以让Nagios检测Perl程序是否要用解释器。
提示如果没有明确地用上述方式指出该插件是否要在Perl解释器里运行,Nagios将自主决定。
它取决于use_embedded_perl_implicitly变量设置。
如果该变量值是1,全部的Perl插件与脚本(那些没明确指定的)将在Perl解释器里运行,如果值是0,那些没明确指定运行方式的插件和脚本将不会在解释器里运行。
12.1.7. 开发嵌入式Perl解释器可运行的Perl插件更多有关开发嵌入式Perl解释器里可运行Perl插件的信息可查阅这篇文档。
12.2. 开发使用内嵌式Perl解释器的Nagios插件12.2.1. 介绍Stanley Hopcroft在嵌入式Perl解释器的工作机制方面卓有成效并且给出了利用嵌入式Perl解释器方面的优点和缺点的注释,他同时还给出了如何让Perl插件更好地在Perl解释器里运行的一些提示与帮助,下面内容多来自于他的注解。
需要注意本文档里用的"ePN",它指定是带有嵌入式Perl解释器的Nagios版本,如果不是,Nagios需要重新编译以带有嵌入式Perl解释器的支持。
12.2.2. 目标受众z中级Perl开发者-那些受Perl语言强大能力的熏陶却不会利用内在语言特性或是对那些特性掌握不多的开发员;z实用主义者而不是深入研究Perl语言特性的;z如果对Perl对象、命名空间管理、数据结构和调试等并不很有兴趣,或许也就够了;12.2.3. 开发Perl插件必备知识不管是否用ePN与否,下面的内容要注意:z总是要生成一些输出内容;z加上引用'use utils'并引用些通用模块来输出($TIMEOUT %ERRORS &print_revision &支持等);z总是知道一些Perl插件的标准习惯,如:z退出时总是exit带着$ERRORS{CRITICAL}、$ERRORS{OK}等;z使用getopt函数来处理命令行;z程序处理超时问题;z当没有命令参数时要给出可调用print_usage;z使用标准的命令行选项开关(象-H 'host'、-V 'version'等)。
12.2.4. 开发ePN下的Perl插件必做内容z1、<DATA>不能使用,用下面方式替换:my $data = <<DATA; portmapper 100000 portmap 100000 sunrpc 100000 rpcbind 100000 rstatd 100001 rstat 100001 rup 100001 .. DATA%prognum = map { my($a, $b) = split; ($a, $b) } split(/\n/, $data) ;z 2、BEGIN 块并不会象你想像的执行,尽可能避免用它; z3、确保编译时非常干净,象z use strictz use perl -w (其他开关特别是[-T]将不能用) z use perl -cz4、避免使用全程块里的变量语句(my)来传递到子程序里作为变量数据。
如果子程序在插件时被多次调用这将是个致命性错误。
这样的子程序块起到一个"终止"作用,使得全程块里的变量被赋予第一个值而带入到后序子程序调用过程中导致死锁。
但如果全程变量是只读的(比如是个可并发的结构体)就不是问题,在Bekman 的"推荐替代方式"里是这样来做的:z让子程序调用没有副作用方式的参考:表 12.1. 源程序转换比对z 把全程语句变量送到子程序块里(象个对象或模块那样来处理); z 将信息以引用或别名方式送入子程序里(\$lex_var 或$_[n]);z用包内全程替换语句并用'use vars qw(global1 global2 ..)'从'use strict'分离出来。
z5、注意哪里可以得到更多信息。
一般信息是要值得怀疑的(O'Reilly 出版的书籍,加上Damien Conways 著的"Object Oriented Perl"),但真正有用的是从Stas Bekman 在/guide/里所写的mod_perl 指南,这才是好的起点。
那本书非常适用,虽然它里面没有一点关于Nagios 的东西,全是如果来写在Apache 里怎么开发利用嵌入式Perl 解释器来写Perl 程序的内容。
提倡多使用perlembed 的在线手册(manpage)。
其基础是知道Lincoln Stein 和Doug MacEachern 写的有关Perl 及嵌入Perl 的一些东西,他们所著的'Writing Apache Modules with Perl and C'一书绝对值得一读。
z6、注意在ePN 里插件有可能返回一些奇怪的值,这很有可能是由于前面4里所提到的问题所导致的;z7、调试前做点准备:z 对ePN 做个检查;z 插件里加些打印语句输出到标准错误设备STDERR(不能用标准输出设备STDOUT)来显示变量值; z 在p1.pl 里加些打印语句来显示ePN 有要执行插件时是如何看待插件的; z 在前台模式里运行ePN(可能要结合前面的一些建议);z插件里用'Deparse'模块来看一下解析命令选项在嵌入解释器实际得到的内容(见Sean M. Burke 所写的'Constants in Perl',在Perl Journal 里,写于2001年);perl -MO::Deparse <your_program>z8、还要当心ePN 把插件转换成什么了,并且如果还有错误可以调试一下转换后的内容。