Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的状态,交换机等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。
Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。
启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。
Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有 nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以 通过运行./check_xxx –h 来查看其使用方法和功能。
Nagios可以识别4种状态返回信息,即 0(OK)表示状态正常/绿色、1(WARNING)表示出现警告/×××、2(CRITICAL)表示出现非常严重的错误/红色、3(UNKNOWN)表 示未知错误/深×××。Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。
nagios-plugins是nagios官方提供的一套,nagios监控的功能其实都是通过执行插件程序来实现的。
nagios.cfg Nagios 主配置文件resource.cfg 变量定义文件,又称为资源文件,在些文件中定义变量,以便由其他配置文件引用,如$USER1$objects objects 是一个目录,在此目录下有很多配置文件模板,用于定义Nagios 对象objects/commands.cfg 命令定义配置文件,其中定义的命令可以被其他配置文件引用objects/contacts.cfg 定义联系人和联系人组的配置文件objects/localhost.cfg 定义监控本地主机的配置文件objects/templates.cfg 定义主机和服务的一个模板配置文件,可以在其他配置文件中引用objects/timeperiods.cfg 定义Nagios 监控时间段的配置文件监控主机:172.25.85.2 server2.example.com
被监控主机:172.25.85.3 server3.example.com
server2:
添加用户:
tar jxf nagios-cn-3.2.3.tar.bz2 yum install gd-devel-2.0.35-11.el6.x86_63.rpm groupadd nagcmd useradd -M -d /usr/local/nagios -G nagcmd nagios (-M 不指定用户家目录 -m指定用户家目录) usermod -G nagcmd apache ##添加nagcmd用户组,用以通过web页面提交外部控制命令 cd nagios-cn-3.2.0 ./configure --with-command-group=nagcmd make all make install make install-init make install-commandmode make install-config make install-webconf ##安装web配置文件 vim /etc/httpd/conf.d/nagios.conf cat /usr/local/nagios/etc/htpasswd.usersnagiosadmin:gCWSDnqEHR45c
htpasswd /usr/local/nagios/etc/htpasswd.users nagiosadmin
##(htpasswd 用于创建和更新储存用户名,和用于用户密码认证)
cat /usr/local/nagios/etc/htpasswd.users
nagiosadmin:AYGVkVYuX2mDs
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg ##检查配置文件
/etc/init.d/httpd start
/etc/init.d/nagios starthttp://172.25.85.2/nagios/ 2. server2: 安装nagios-plugins tar zxf nagios-plugins-1.4.14.tar.gz cd nagios-plugins-1.4.14 yum install mysql-devel openssl-devel ./configuremake
make install cd /usr/local/nagios/libexec chown nagios.nagios * -R /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg /etc/init.d/nagios reloadhttp://172.25.85.2/nagios/
3.server2:
修改配置文件:
vim /usr/local/nagios/etc/nagios.cfg##注销掉cfg_file= 这一行
cd /usr/local/nagios/etc/objects
cp localhost.cfg hosts.cfg -p vim hosts.cfgdefine host{ use linux-server host_name server2.example.com alias Manager# parents MainSwitch address 172.25.85.2 icon_p_w_picpath server.gif statusmap_p_w_picpath server.gd2 2d_coords 500,200 3d_coords 500,200,100 }# HOST GROUP DEFINITION################################################################################ Define an optional hostgroup for Linux machinesdefine hostgroup{ hostgroup_name linux-servers ; The name of the hostgroup alias Linux Servers ; Long name of the group members * ; Comma separated list of hosts that belong to this group }cp localhost.cfg services.cfg chown nagios.nagios services.cfg vim services.cfg
define servicegroup{ servicegroup_name 系统负荷检查 alias 负荷检查 members server2.example.com,进程总数,server2.example.com,登录用户数,server2.example.com,根分区,server2.example.com,交换空间利用率 }define service{ use local-service ; Name of service template to use host_name * service_description PING check_command check_ping!100.0,20%!500.0,60% }define service{ use local-service ; Name of service template to use host_name server2.example.com service_description 根分区 check_command check_local_disk!20%!10%!/ }define service{ use local-service ; Name of service template to use host_name server2.example.com service_description 登录用户数 check_command check_local_users!20!50 }define service{ use local-service ; Name of service template to use host_name server2.example.com service_description 进程总数 check_command check_local_procs!250!400!RSZDT }define service{ use local-service ; Name of service template to use host_name server2.example.com service_description 系统负荷 check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0 }define service{ use local-service ; Name of service template to use host_name server2.example.com service_description 交换空间利用率 check_command check_local_swap!20!10 }define service{ use local-service ; Name of service template to use host_name server2.example.com service_description SSH check_command check_tcp!22!1.0!10.0 notifications_enabled 0 }define service{ use local-service ; Name of service template to use host_name server2.example.com service_description HTTP check_command check_http notifications_enabled 0 }/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg /etc/init.d/nagios reload 172.25.85.2/nagios/ server2: cd /usr/local/nagios/libexec ./check_disk -w 20 -c 10 ./check_disk -w 20 -c 10 -p / cd /usr/local/nagios/etc/objects vim services.cfg在定义根分区最后加入:
max_check_attempts 24. server3: yum install mysql-server -y /etc/init.d/mysqld start mysql_secure_installation mysql -p
mysql> create database nagdb;mysql> grant select on nagdb.* to nagios@'172.25.85.2' identified by "redhat";server2: cd /usr/local/nagios/libexec ./check_mysql -H 172.25.85.3 -u nagios -p redhat mysql -h 172.25.85.3 -u nagios -predhat ##可以登陆 server3: /etc/init.d/mysqld stop server2: mysql -h 172.25.85.3 -u nagios -predhat server2: cd /usr/local/nagios/etc/objects vim commands.cfg
define command{ command_name check_mysql command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ }
vim services.cfg
最后一行加上:
define service{ use local-service ; Name of service template to use host_name server3.example.com service_description MYSQL check_command check_mysql!nagios!redhat notifications_enabled 0 }
vim hosts.cfg
添加一个hostdefine host{ use linux-server host_name server3.example.com alias Manager# parents MainSwitch address 172.25.85.3 icon_p_w_picpath server.gif statusmap_p_w_picpath server.gd2 2d_coords 400,100 3d_coords 400,100,100 }/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg /etc/init.d/nagios reloadhttp://172.25.85.2:/nagios/5. server3: tar zxf nrpe-2.15.tar.gz tar zxf nagios-plugins-2.1.1.tar.gz useradd -M -d /usr/local/nagios nagios cd /root/nagios-plugins-2.1.1 yum install openssl-devel xinetd -y ./configure make make install cd /usr/local/nagios/ chown nagios.nagios . -R cd /root/nrpe-2.15 ./configure make all make install-plugin make install-daemon make install-daemon-config make install-xinetd cd /etc/xinetd.d/ vim nrpe修改:
only_from = 172.25.85.2 ##监控主机
vim /etc/services
在最后添加:nrpe 5666/tcp
vim /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=172.25.85.2
/etc/init.d/xinetd start
cd /usr/local/nagios/libexec/ scp check_nrpe root@172.25.85.2:/usr/local/nagios/libexec/ server2: cd /usr/local/nagios/libexec/ chown nagios.nagios check_nrpe ./check_nrpe -H 172.25.85.3 ##检测nrpe是否可用成功显示nrpe版本号 ./check_nrpe -H 172.25.85.3 -c check_disk cd /usr/local/nagios/etc/objects vim commands.cfgdefine command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }vim services.cfg
添加在mysql后面:
define service{ use local-service ; Name of service template to use host_name server3.example.com service_description 根分区 check_command check_nrpe!check_disk }define service{ use local-service ; Name of service template to use host_name server3.example.com service_description 登陆用户数 check_command check_nrpe!check_users }
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios reloadhttp://172.25.85.2:/nagios/6. 虚拟机联网:网桥方式:适合宽带网络
server2:
yum install mail -y ip addr add 172.25.254.185/24 dev eth1 ip route show route -ncat /etc/resolv.conf
nameserver 192.168.11.182物理机:
ip addr show
NAT方式:适合无线 先将虚拟机的ip 改为动态分配 ##server2和server3都要修改 然后修改虚拟机的虚拟网络接口为NAT方式
重启虚拟机
注意:
[重启虚拟机后两台虚拟机的ip 会变化,之前所作的和ip 相关的操作需要重新做。
重启之后:server2 172.25.85.2 变成了 192.168.122.196
server3 172.25.85.3 变成了 192.168.122.202]
server2:
vim /usr/local/nagios/etc/objects/contacts.cfg vim /usr/local/nagios/etc/objects/templates.cfg ##186行/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios reloadsu - nagios ##试着给qq邮箱发送邮件,看虚拟机通网了没
登录邮箱设置白名单:nagios@server2.example.com
检测: server3: /etc/init.d/mysqld stop172.25.85.2/nagios/ 7.110云告警: ##步骤可参考官网登陆one!ert->配置-> 选择配置类生成了一个key
配置->通知策略->关闭server3上的mysqldserver2:cd /usr/local/nagiostar zxf alert-agent-4.1.3.1-linux-x64.tar.gz -C /usr/local/nagios/libexecsu - nagios
-bash-4.1$ cd /usr/local/nagios/libexec/alert-agent
-bash-4.1$ cd nagios-plugin/-bash-4.1$ cp nagios /usr/local/nagios/libexec/-bash-4.1$ cp 110monitor.cfg /usr/local/nagios/etc/objects/cd /usr/local/nagios/etc/objectsvim contacts.cfgvim 110monitor.cfg
vim /usr/local/nagios/etc/nagios.cfg
date_format=iso8601
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios reload告警:cd /usr/local/nagios/var
tail -f nagios.log