简介: Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等. Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等 适合于:对大量的服务器进行监控,判断其负载或服务是否正常,发生异常能通过邮件、短信报警。 特别注意:流量监控不是他的强项,流量监控建议使用cacti.可以绘制非常直观的图形 Nagios 可以监控的功能: 1、监控网络服务(SMTP、POP3、HTTP、NNTP、PING等); 2、监控主机资源(处理器负荷、磁盘利用率等); 3、简单地插件设计使得用户可以方便地扩展自己服务的检测方法; 4、并行服务检查机制; 5、具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态; 6、当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式); 7、可以定义一些处理程序,使之能够在服务或者主机发生故障时起到预防作用; 8、自动的日志滚动功能; 9、可以支持并实现对主机的冗余监控; 10、可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等 一、在RHEL6.0部署Nagios用来监控mysql服务器: nagios 主机:192.168.10.1 mysql 主机: 192.168.10.2 操作步骤: 1.安装编译所需的软件包(若mysql-devel包不安装,会没有check_mysql插件): yum –y install httpd php-* gd-* mysql-devel
2.创建运行nagios服务的用户
useraddnagios——创建nagios服务运行用户 usermod -G nagios apache ——赋予apache用户对nagios目录具有写权限 3.源码编译安装nagios:
tar jxf nagios-cn-3.2.3.tar.bz2 cd nagios-cn-3.2.3 ./configure --enable-embedded-perl
编译并安装nagios及相关操作: [iyunv@nagios nagios-cn-3.2.3]# make all [iyunv@nagios nagios-cn-3.2.3]# make install [iyunv@nagios nagios-cn-3.2.3]# make install-init [iyunv@nagios nagios-cn-3.2.3]# make install-commandmode [iyunv@nagios nagios-cn-3.2.3]# make install-config [iyunv@nagios nagios-cn-3.2.3]# make install-webconf
注解信息: make install——安装主程序,CGI和HTML文件 make install-init——在/etc/rc.d/init.d安装启动脚本 make install-commandmode——配置目录权限 make install-config——安装示例配置文件 make install-webconf——安装nagios的web接口,会在/etc/httpd/conf.d目录中创建nagios.conf文件。
在rhel 6 32位系统中安装nagios-cn-3.2.3.tar.bz2要先执行make clean操作,然后再执行./configure和make all等操作,否则执行makeall时会报错:
查看默认安装目录/usr/local/nagios下是否存在etc、bin、sbin、share、var、这五个目录,用于验证是否安装成功:
注解: bin:nagios执行程序所在的目录,nagios文件即为主程序。 etc:nagios配置文件目录,当make install-config完以后etc下面就会出现默认的配置文件。 sbin:nagios CGI文件所在目录,这里存放的是一些外部命令执行程序。 share:nagios网页文件目录,存放一些html文件。 var:nagios日志文件、pid等文件目录。
4.安装nagios-plugins插件: nagios监控主机的功能是通过执行插件程序来实现的。nagios-plugins是nagios官方提供的一套插件程序,源码安装nagios-plugins: [iyunv@nagios nagios-plugins-1.4.15]# tar zxf nagios-plugins-1.4.15.tar.gz [iyunv@nagios nagios-plugins-1.4.15]# cd nagios-plugins-1.4.15 [root@nagios.nagios-plugins-1.4.15]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-extra-opts --enable-libtap --enable-perl-modules [iyunv@nagios nagios-plugins-1.4.15]# make && make install
编译并安装nagios-plugins插件:
查看/usr/local/nagios/libexec目录,所有安装后的插件都存放在这里:
Nagios安装到此完成,配置随后进行。 配置知识储备: contact:联系人 timeperiod:监控时间段,7X24小时不间断或其他时间设置等 Host:被监控主机,所需要监控的服务器,也可以监控本机; command:监控命令,nagios发出的哪些指令来执行某个监控,可以自定义; Service:被监控的服务,eg:80端口是否开启,swap空间使用情况等等。。
【多个被监控主机可以定义为一个主机组,多个联系人可以被定义为一个联系人组】 5.修改nagios的主配置文件nagios.cfg:
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg ——新建hosts.cfg文件,存放主机与主机组定义 cfg_file=/usr/local/nagios/etc/objects/services.cfg ——新建services.cfg文件,存放服务与服务组定义 #cfg_file=/usr/local/nagios/etc/objects/localhost.cgf ——加“#”注释localhost.cfg 将localhost.cfg文件注释掉,添加有关hosts.cfg和services.cfg文件定义。 cfg_file=/usr/local/nagios/etc/objects/localhost.cfg cfg_file=/usr/local/nagios/etc/objects/hosts.cfg cfg_file=/usr/local/nagios/etc/objects/services.cfg
注解: 在/usr/local/nagios/etc/objects目录下存放一些以.cfg为后缀的文件 其他配置文件以实际情况来进行配置 在/usr/local/nagios/etc/objects目录下创建hosts.cfg和services.cfg两.cfg文件:
6.创建hosts.cfg文件: vi/usr/local/nagios/etc/objects/hosts.cfg
内容如下: define host{ use linux-server address 127.0.0.1//监听本机 icon_image web.gif statusmap_image web.gd2 2d_coords 100,300 3d_coords 100,300,100 check_command check-host-alive max_check_attempts 5 check_period 24x7 contact_groups admins notification_interval 10 notification_period 24x7 notification_options d,u,r } define hostgroup{ hostgroup_name linux-servers alias linux server members * }
注解信息: define host{ use linux-server——定义使用的模板 host_name nagios——被监控主机的名称 alias nagios ——别名 address 127.0.0.1——被监控主机的IP地址(本机为例) check_command check-host-alive ——监控的命令check-host-alive,命令来自commands.cfg,用来监控主机是否存活 max_check_attempts 5 ——检查失败后重试的次数 check_period 24x7——检查的时间段24x7,来自timeperiods.cfg中定义 notification_interval 10——提醒的间隔,每隔10分钟提醒一次 notification_period 24x7——提醒的周期, 24x7:来自timeperiods.cfg中定义 contact_groups admins——联系人组(不是必须的)上面在contactgroups.cfg中定义的admins notification_options d,u,r——指定在什么情况下提醒 } 通过简单的复制修改就可以定义多个主机了.后面我们会加上被监控主机mysql 7.创建services.cfg文件(文件中可以添加host.cfg中的定义模块): vi /usr/local/nagios/etc/objects/services.cfg
内容如下: define service { use local-service host_name nagios service_groups systemcheck service_description host cunhuoyufou check_command check-host-alive } define service { use local-service host_name nagios service_groups systemcheck service_description hostusers check_command check_local_users!1!50 } define servicegroup { servicegroup_name systemcheck alias systemcheck }
注解: check_local_users!1!50——监测远程主机当前的登录用户数量,如果大于1个用户则报warning,如果大于50则报critical; 校验nagios配置文件的正确性: /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
显示如下表示配置文件没有错误:
8.nagios监控页面访问用户和密码: 默认安装好nagios后会在apache安装目录中的conf.d目录存在一个nagios.conf文件,文件中定义了有关访问nagios的web页面的定义。 在httpd.conf文件使用Include conf.d/*.conf配置项将nagios.conf文件的定义包含到httpd.conf文件中。 执行htpasswd命令添加一个访问nagios页面的授权用户
9.启动httpd和nagios服务并设置开机自动启动 [iyunv@nagios ~]# service nagios start——启动nagios服务 [iyunv@nagios ~]# service httpd start——启动httpd服务 [iyunv@nagios ~]# chkconfig httpd on——将nagios设为开机自启动 [iyunv@nagios ~]# chkconfig nagios on
注意:如果开启了selinux 需要如下配置: chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/ chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
10.访问nagios监控页面,输入授权访问nagios的用户及密码:http://IP/nagios :
监控mysql服务运行 mysql主机上运行mysql服务: 安装mysql的服务器软件包,用yum方式解决依赖包。(rpm搭建mysql需要用到的软件包perl-DBD-MySQL和 mysql-server) [iyunv@mysql ~]# yum -y install mysql-server
1.启动mysqld服务并设置为开机自动启动 [iyunv@mysql ~]# service mysqld start [iyunv@mysql ~]# chkconfigmysqld on
2.在mysql服务器上创建监控检测帐户: mysql> create database nagdb; mysql> grant select on nagdb.* to nagdb@'192.168.10.1'; mysql> flush privileges;
3.在nagios主机上检测是否可以连接mysql主机上的mysql服务(需要在mysql主机设置防火墙允许3306端口的通信):
[iyunv@nagios ~]# /usr/local/nagios/libexec/check_mysql -H 192.168.10.2 -u nagdb -d nagdb
注意:若没有check_mysql插件,是因为没有安装mysql-devel包,只需在mysql-devel包安装后重新安装一下nagios-plugins: 4.在nagios主机上添加对mysql服务监控的定义: [iyunv@nagios ~]# vim /usr/local/nagios/etc/objects/hosts.cfg define host{ use linux-server host_name mysqlhost alias mysqlserver address 192.168.10.2 icon_image web.gif statusmap_image web.gd2 2d_coords 100,300 3d_coords 100,300,100 check_command check-host-alive max_check_attempts 5 check_period 24x7 contact_groups admins notification_interval 10 notification_period 24x7 notification_options d,u,r }
[iyunv@nagios ~]# vim /usr/local/nagios/etc/objects/services.cfg: define service { use local-service host_name mysqlhost service_groups mysqlgroup service_description mysqlservice check_command check_mysql contact_groups admins notification_interval 10 notification_period 24x7 notification_options w,u,r,c } define servicegroup { servicegroup_name mysqlgroup alias mysqlservices }
vi /usr/local/nagios/etc/objects/commands.cfg 添加如下行: define command{ command_name check_mysql command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u nagdb -d nagdb }
(check_mysql命令必须存在于/usr/local/nagios/libexec目录中):
5.重新检查配置文件是否存在配置错误: /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
无报错,重新加载nagios服务 [iyunv@nagios ~]# service nagios reload
有时会出现访问报错如下:
排除此类问题:修改/usr/local/nagios/etc/cgi.cfg文件值:
6.访问ngios的web页面:如下所示,能通过监控发现MYSQL服务运行正常:
Nagios前期搭建部署工作到此结束,使用插件实现更强大的功能尽快送上,共同进步!!!
|