Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机,路由器等网络设备,打印机等。
在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

网络监视工具        NAGIOS
 
定义
Nagios是一个监视系统运行状态和网络信息的监视系统。
Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。
Nagios可运行在Linux/Unix平台之上,
同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等。

功能介绍
Nagios 可以监控的功能有:
1、监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);
2、监控主机资源(处理器负荷、磁盘利用率等);
3、简单地插件设计使得用户可以方便地扩展自己服务的检测方法;
4、并行服务检查机制;
5、具备定义网络分层结构的能力,
用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
6、当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);
7、可以定义一些处理程序,使之能够在服务或者主机发生故障时起到预防作用;
8、自动的日志滚动功能;
9、可以支持并实现对主机的冗余监控;
10、可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;
11、可以通过手机查看系统监控信息;
12、可指定自定义的事件处理控制器;

系统需求
Nagios所需要的运行条件是机器必须可以运行Linux(或是Unix变种)并且有C语言编译器。
你必须正确地配置TCP/IP协议栈以使大多数的服务检测可以通过网络得以进行。
你需要但并非必须正确地配置Nagios里的CGIs程序,而一旦你要使用CGI程序时,
你必须要安装以下这些软件...一个WEB服务(最好是Apache)

系统安装
1.安装基础支持套件和添加用户
nagios需要一些基础支持套件才能运行,如apache,gcc,glibc,gd库等。
添加一个名为nagios的用户用以专门跑nagios
设置密码
添加nagcmd用户组,用以通过web页面提交外部控制命令
将nagios用户加入nagcmd组
将apache用户加入nagcmd组
2.安装nagios
这时nagios基本已经安装完成,默认安装后的配置文件用于启动nagios是没有问题的。
修改nagiosadmin这行其中的邮件地址为你的email地址,以将报警邮件发到你的邮箱
安装nagios的web接口
设置登陆web界面时HTTP验证的账号密码
3. 安装nagios-plugins
nagios-plugins是nagios官方提供的一套插件程序,
nagios监控主机的功能其实都是通过执行插NAGIOS件程序来实现的。
4.安装nagios-snmp-plugins
nagios-snmp-plugins是一套用Perl编写的通过SNMP方式监控主机的插件程序。
配置这些插件的使用时需要配置cpan,CPAN是Comprehensive Perl Archive Network的缩写.。
它是一个巨大的Perl软件收藏库,收集了大量有用的Perl模块(modules)及其相关的文件。
这里主要是使用Perl-Net-SNMP模块。有两种方式安装:
A)通过CPAN来安装
B) 手工安装
首先去官方网站下载以下几个模块
Crypt::DES
Digest::MD5
Digest::SHA1
Digest::HMAC
Net::SNMP
下载后对于每个模块依次按照下面的方式安装
表示模块名,具体请按上面提到的模块替换
注意:Net::SNMP模块必须在最后安装。至此Net::SNMP手动安装完毕
执行nagios-snmp-plugins安装脚本,执行之后会将插件命令安装到/usr/local/nagios/libexec下
5.其他设置
至此nagios基本已经安装完毕,但这时还不能马上启动nagios,需要以下设置。
将nagios添加到服务中
设置服务为自启动
检测nagios的配置是否正确,在后面配置nagios过程中我们为了检测配置的是否正确需要不断执行该命令来检查配置文件。
#service nagios start 启动nagios
需要注意的是,Centos默认打开了selinux并且运行于强制安全模式,
这将导致在打开nagios的web界面时会出现Internet Server Error的错误。
查看是否运行于强制模式,
结果为1表示是更改selinux运行于宽容模式
但是这个设置重启后就会失效,
如需要重启后保持该设置需要修改/etc/sysconfig/selinux,
将其中的SELINUX= enforcing更改为SELINUX= permissive并重启系统。
当然你也可以改成disable禁用selinux。
也可以不更改selinux的运行模式,解决办法为:
6.实现MSN报警
要实现MSN报警需要使用phpmsnclass,这是一个用php实现的msn机器人程序。
下载phpmsnclass,此文件为7zip压缩格式,
需要安装7zphpmsnclass需要php支持,安装php,
这里为了方便就直接完成LAMP环境的安装
安装mysql数据库,后面安装cacti需要
由于安全原因请将mysql设置为只监听在127.0.0.1上,
并删除mysql库中默认的除了外的所有用户,相关设置请见以前的关于postfix安装中的设置。
安装php相关模块
msn报警有2种方式,一种是直接使用php进行登陆验证发送消息,另外一个是以msn机器人的形式发送,将消息存储在目录内。
这里采用第二种。
下面把msnbot.php, config.php和msn.class.php拷贝到/var/spool/msnbot/
这个机器人的工作原理是如果要发送消息,
就调用php生成消息文件到 /var/spool/msnbot/spool目录中,
发送程序检查到该目录有新文件就会模拟msn登陆和发信将信息发送出去。
在配置文件中设置MSN的账号和密码(以后报警通过这个MSN发出)
加上执行权限
在启动函数里执行的php文件前要加上php (php后有空格)
启动MSN机器人
下面发个消息测试一下
如果成功接收到信息说明配置正确,此步骤到此结束,后面的能让Nagios使用MSN进行报警的功能需要到Nagios里设置了。
如果需要支持离线消息即当你在离线状态下也能接收到机器人的信息,需要使用MSNP15协议,修改相关发信的php文件将声明新类的地方new MSN的第一个参数改为MSNP15
系统配置
nagios目录结构比较清晰,安装后下面一共有bin etc libexec sbin share var几个目录,其中配置文件都存放在etc目录下,bin下存放的是nagios的相关命令,
sbin下存放的是通过web方式外部执行的cgi,libexec存放的是所有插件,
而var则存放的是log和pid文件等。而实现监控都是依靠执行插件来实现的。
要实现监控,需要在nagios中定义一个service,在这个service中指定监控对象和监控命令以及报警机制等。Nagios的配置关系可以按照下图来做说明:
nagios的配置也比较清晰明了,etc目录下默认有objects目录和一些配置文件,其中objects里放的是主配置文件nagios.cfg包含进去的配置文件。
在nagios.cfg中既可以指定单独包含一个cfg,也可以指定一个包含目录,即该目录下所有的cfg文件都会包含进来。
首先我们配置下主配置文件,为了目录的清晰我们自己建立一些目录来存放相关的配置文件,
比如建立commands目录存放命令,建立services目录存放服务,建立hosts目录存放主机,在nagios.cfg文件中找到cfg_file的部分,下面是一个示例,实际部署的时候可以按照你自己的情况去设置:
NAGIOS cfg_file=/usr/local/nagios/etc/objects/commands.cfg 包含配置文件,
下同
这里先说明一下,监控都是依靠插件去完成的,
举个例子说明,如我们要监控60.222.111.83这台服务器的虚拟内存,当达到70%的时候状态为警告,达到90%的时候为严重。这个依靠这个插件来完成。
-
其中-H参数表示主机地址,-C参数表示SNMP团体名称,-2表示使用SNMP v2协议,-w为warning(警告)状态的阈值,-c表示为critical(严重)状态的阈值
要用nagios实现监控某主机,就是要实现用nagios调用这样的命令即可。
配置resource.cfg,文件内容:
[root@localhost etc]# cat resource.cfg |grep -v '#'| sed /^$/d //查看resource.cfg配置
$USER1$=/usr/local/nagios/libexec
$USER7$=-C mypublic -2
这里其实是定义两个变量$USER1$和$USER7$,因为在后面定义command的时候插件的路径是绝对路径,
为了节省输入直接可以用$USER1$代替/usr/local/nagios/libexec。
而SNMP插件的命令行中的参数需要设置SNMP相关的信息,
为节省输入这里用$USER7$来代替-C mypublic -2。
大家可对照上面检测60.222.111.83的虚拟内存的例子结合来加以理解。
下面我们来定义一个command用以监控,仍然以在nagios中实现监控60.222.111.83这台主机的虚拟内存为例说明。
为了目录结构的清晰,我们将command的定义都放到commands目录下。
在commands下建立一个cfg后缀的文件
其中的$USER1$和$USER7$即为我们在上面的resource.cfg中定义的两个变量,
$HOSTADDRESS$为我们在下面要定义的主机。
这样我们完成对一个service的定义,定义监控对象我们这里是定义了3个组,
即属于这3个组的所有主机都会检测虚拟内存(注意:组必须在其他文件中事先定义好)。
当然你也可以用host_name针对主机作为检测对象(多主机用逗号分隔)。
监控周期和报警周期我们设置的都是24x7,这个会在后面去定义。
定义报警状态中的w表示warning,u表示unknown,c表示critial,r表示recovery(即恢复后是否发送通知);
报警选项一般生产环境下设置w,c,r即可。
最后我们看到实现监控的主体部分
check_command check_snmp_storage!-m "^Virtual Memory$"!70!90
定义实现这个检测的命令,check_snmp_storage即为我们上面在commands里定义的命令名,
!表示带入的参数,这里有三个!表示带入三个参数到command里,每个参数之间用!分隔,这里表示第一个参数为-m “^Virtual Memory$”,第二个参数为70,第三个参数为90。
这里的$ARG1$即表示参数1,$ARG2即表示参数2,$ARG3$即表示参数3
而$HOSTADDRESS$是我们定义的检测对象,它的值就是我们的主机IP地址;$USER1$和$USER7$为在resource.cfg里的定义。
而这个命令就是我们实现监控83的虚拟内存的命令!
设置3个参数是为了灵活的针对不同主机的调用,如果你对不同的主机设置的阈值不同,只需要对不同的主机定义不同的service即可,command是可以通用的!
而这里的参数1也是为了实现不同的功能而设置的,这个脚本还可以检测物理内存,
如果我们把参数1的值设置为”^Phisical Memory$”就可以针对物理内存进行检测!
定义command的时候参数的个数的设定是你可以根据需要设置的。
只需要在后面service中能将参数值代到command中最终能实现你要检测的命令即可。
到此为止你可以感受到nagios的灵活性了吧。
到这里我们基本实现了nagios的监控功能,下面我们继续来看看其他设置。
在定义host的时候我们有个主机模板的设置,这个设置的定义在object/template.cfg中定义的,这是一个系统自带的配置文件,关于我们所使用的Windows-Server的模板定义内容为:
上面我在该配置文件中增加了notify-service-by-msn和notify-service-by-msn的两种报警命令
而关于报警的周期设置在objects下的timeperiods.cfg中,如我们上面在service里定义的7x24的报警周期设置内容为
通过这里我们可以灵活设置报警时间以和报警方式结合,如周末和休息时间设置报警为发送短信和邮件,工作时间设置为发送邮件和MSN报警方式。
定义了4种报警命令,后面两种msn报警是我添加的;邮件报警是使用系统自带的sendmail来发送邮件的(注意要启动sendmail服务),而msn报警是使用我们上面所配置的msn机器人发送的报警信息。
至此,整个nagios的监控和报警机制了解完毕。注意我们在配置过程中的任何改动都记得要去通过/usr/local/nagios/bin/nagios –c /usr/local/nagios/etc/nagios.cfg以检查配置文件是否正确,如果正确则可以重启nagios加载新配置(service nagios restart)
第三部分 安装cacti
Cacti的运行需要AMP(Apache + MySQL + PHP), RRDTool , net-snmp , AMP环境我们在上面已经配置。
安装rrdtool,rrdtool不能直接通过yum安装,可以加入Dag RPM Repository以便让yum能找到rrdtool
安装cacti
下面开始导入数据库,mysql数据库的基本安全配置这里不做说明,请参考以前的postfix邮件安装文档中的mysql设置部分。
mysql>create databasecacti; // 创建一个数据库供cacti使用
mysql>usecacti;
Mysql>source /usr/local/cacti/cacti.sql // 导入mysql数据库
Mysql>grant all privileges oncacti.* tocacti@localhostidentified by ‘cactipass’;
添加一个数据库账号cacti密码为cactipass 用以访问cacti库
Mysql>flush privileges; //刷新权限信息
Apache设置
#vi /etc/http/conf.d/cacti.conf //编辑cacti站点的配置文件,文件内容如下:
Alias /cacti "/usr/local/wwwroot/cacti"
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
修改cacti的配置文件
修改其中的数据库连接信息,设置好数据库主机地址,用户,密码信息。
至此安装完成,访问根据提示安装cacti(ip换成你对应的主机ip地址)
接下来安装cacti的插件管理
复制相关文件到cacti下
第四部分 整合cacti和nagios
整合cacti和nagios是利用了cacti的一个插件nagios for cacti,它的原理是将nagios的数据通过ndo2db导入到mysql数据库(cacti的库中),然后cacti读取数据库信息将nagios的结果展示出来。
1.安装ndoutils
首先需要安装ndoutils以将nagios的数据能导入到mysql数据库中。
修改nagios主配置文件
添加以下内容
check_external_commands=1
command_check_interval=-1
event_broker_options=-1
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg
process_performance_data=1
添加的内容至此结束
2.安装php-json
npc展示部分用到json,需要在php中安装php-json的支持,centos 5下的php 版本默认是5.1.6 不带json支持,无法简单地通过yum install php5-json方式来安装。
#cd ~/downloads
编译前初始化php环境
重启apache
为了验证是否成功可使用phpinfo查看是否已支持json
3.安装npc
启用cacti的插件功能,以admin用户登陆cacti,在console中的user management里对admin的用户权限进行编辑,勾选上Plugin Management,然后到插件管理中心安装并启用NPC即可。至此完成nagios和cacti的整合。

备注:随笔中内容来源于网上资料整理,仅供参考。

NAGIOS(网络监视工具)的更多相关文章

  1. 3款Linux网络监视工具

    1 iftop: 如果你想看到现在你的带宽到底是哪些应用在使用,并且各个应用占据了多少带宽的时候,可以用iftop显示出来.使用的参数如下: -h                  display t ...

  2. 20个Linux系统监视工具

    需要监视Linux服务器的性能?试试这些内置的命令和一些附加的工具吧.大多数Linux发行版都集成了一些监视工具.这些工具可以获取有关系统活动的信息的详细指标.通过这些工具,你可以发现产生系统性能问题 ...

  3. Linux系统监视工具

    转自      http://bbs.51cto.com/thread-971896-1.html # 1: top – 查看活动进程的命令TOP工具能够实时显示系统中各个进程的资源占用状况.默认情况 ...

  4. [转]Oracle10g数据库自动诊断监视工具(ADDM)使用指南

    第一章 ADDM简介                 在Oracle9i及之前,DBA们已经拥有了很多很好用的性能分析工具,比如,tkprof.sql_trace.statspack.set even ...

  5. 盘点6个Kubernetes监视工具

    导读:监控可帮助您确保Kubernetes应用程序平稳运行并排除可能出现的任何问题.Prometheus是一种流行的开源监视工具,许多公司都使用它来监视其IT基础结构.但是,还有许多其他监视工具可用. ...

  6. 网络排查工具MTR介绍

    开源Linux 回复"读书",挑选书籍资料~ 常用的 ping,tracert,nslookup 一般用来判断主机的网络连通性,其实 Linux 下有一个更好用的网络连通性判断工具 ...

  7. [No00006B]方便的网络下载工具wget 可下载网站目录下的所有文件(可下载整个网站)

    wget是linux下命令行的下载工具,功能很强大,它能完成某些下载软件所不能做的,比如如果你想下载一个网页目录下的所有文件,如何做呢?网络用户有时候会遇到需要下载一批文件的情况,有时甚至需要把整个网 ...

  8. TCP/UDP网络性能测试工具 - Netperf (zz) ..网络测试工具

    在构建或管理一个网络系统时,我们更多的是关心网络的可用性,即网络是否连通,而对于其整体的性能往往考虑不多. 除了netperf以外.       还有很多其它的网络性能测试工具.       如db, ...

  9. 网络性能测试工具iperf详细使用图文教程

      Iperf是一个网络性能测试工具.Iperf可以测试TCP和UDP带宽质量.Iperf可以测量最大TCP带宽,具有多种参数和UDP特性. Iperf可以报告带宽,延迟抖动和数据包丢失.利用Iper ...

随机推荐

  1. 《图解设计模式》读书笔记1-1 Iterator模式

    目录 迭代器模式的类图 类图的解释 迭代器模式的代码 解释 原因 思想 迭代器模式的类图 类图的解释 名称 说明 Aggregate 集合接口,有提供迭代器的方法 Iterator 迭代器接口,提供迭 ...

  2. MySQL 对比数据库的表结构

    有时候,需要对比一下测试环境和生产环境中,数据库的表结构是否有所差异.有两个常用的工具. AmpNmp.DatabaseCompare GUI 界面,支持多种数据库(MySQL.SQL Server. ...

  3. WPF数据模板中绑定事件不触发问题

    今天比较闲,做一个练手的项目,结果在xaml中写了一个用户的数据模板后,在其中的某个Canvas上绑定了一个鼠标左击的事件,结果调试的时候,无论怎么点击都不跳到断点那里,百思不得其解. 之后尝试不绑定 ...

  4. 2016/7/26-apache配置文件:http.conf配置详解

    引用地址http://blog.chinaunix.net/uid-21807675-id-1814871.html Apache的配置文件http.conf参数含义详解 Apache的配置由http ...

  5. flask为blueprint增加error_handler

    对整个app增加errorhandler,只需如下: @portal_page.errorhandler(404) def page_not_found(error): cats = Category ...

  6. 【五一qbxt】day7-2 选择客栈

    停更20天祭qwq(因为去准备推荐生考试了一直在自习qwq) [noip2011选择客栈] 这道题的前置知识是DP,可以参考=>[五一qbxt]day3 动态规划 鬼知道我写的是什么emm 这道 ...

  7. P3806 【模板】点分治1(题解)(点分治)

    P3806 [模板]点分治1(题解)(点分治) 洛谷题目传送门 #include<iostream> #include<cstdlib> #include<cstdio& ...

  8. python学习第三十二天函数的闭包

    python函数中嵌套另外一个函数,另外一个函数形成一个封闭的环境,里面的那个函数叫做函数的闭包,函数的闭包好处可以保护函数里面的变量,下面讲述函数闭包的实例和用法 1,函数闭包的实例 a='cat' ...

  9. JDK8之ArrayList源码

    ArrayList三个构造器 /** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10; // ...

  10. avaScript —— 常用正则表达式

    用户名 /^[a-z0-9_-]{3,16}$/ 密码 /^[a-z0-9_-]{6,18}$/ 十六进制值 /^#?([a-f0-9]{6}|[a-f0-9]{3})$/ 电子邮箱 /^([a-z0 ...