- Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
- nagios本身并没有监控的功能,所有的监控是由插件完成的,插件将监控的结果返回给nagios,nagios分析这些结果以web的方式展现给我们,同时提供相应的报警功能(这个报警的功能也是由相应的插件完成的。
Nagios工作原理
Nagios的主动模式和被动模式
- 被动模式:就如同上图所显示的那样,客户端起nrpe进程,服务端通过check_nrpe插件向客户端发送命令,客户端根据服务端的指示来调用相应的插件,插件可以获取到本机的相关信息,并把获取到的结果发送给服务端。因为需要调用客户端的插件去等带客户端返回的信息,所以叫做被动模式
- 主动模式:主动模式不需要调用客户端的插件,而是通过自己的插件主动去探测客户端的相关信息。
主动模式和被动模式的区别这两种模式所擅长监控的服务也是不同的。- 主动模式:主机死活,端口,http服务,MySQL服务......
- 被动模式:客户端主机的负载,硬盘空间,内存......
Nagios可以识别4种状态返回信息,即 0(OK)表示状态正常/绿色、1(WARNING)表示出现警告/×××、2(CRITICAL)表示出现非常严重的错误/红色、3(UNKNOWN)表示未知错误/深×××。Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。
?
操作步骤
?
- 案例环境
主机 | IP | 主要软件 |
---|---|---|
Nagios监控端 | 192.168.200.131 | httpd、php、nagios、nagios-plugins、nrpe、 |
被监控端 | 192.168.200.132 | . |
?
-
下载安装包环境
# wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.1.tar.gz # wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz # wget https://sourceforge.net/projects/nagios/files/nrpe-3.x/nrpe-3.1.0.tar.gz # yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel # yum intall httpd php
-
安装
# useradd -s /sbin/nologin nagios # mkdir /usr/local/nagios # chown -R nagios.nagios /usr/local/nagios # tar -zxvf nagios-4.3.1.tar.gz -C /opt # cd /opt/nagios-4.3.1 # ./configure --prefix=/usr/local/nagios # make all # make install # make install-init # make install-commandmode # make install-config # make install-webconf //生成apache配置文件 # chkconfig --add /etc/rc.d/init.d/nagios # chkconfig --level 35 nagios on # chkconfig --list nagios # ls /usr/local/nagios 检查 是否存在etc、bin、sbin、share、var 这五个目录
-
安装插件
# tar xvzf nagios-plugins-2.2.1.tar.gz -C /opt # cd /opt/nagios-plugins-2.2.1/ # ./configure --prefix=/usr/local/nagios # make && make install
-
修改httpd配置文件
# vim /etc/httpd/conf/httpd.conf User nagios //修改 Group nagios //修改 <IfModule dir_module> DirectoryIndex index.html index.php //修改 </IfModule> ........ AddType application/x-httpd-php .php //添加
- 为了安全起见,一般情况下要让nagios 的web 监控页面必须经过授权才能访问,
-
这需要增加验证配置,即在httpd.conf 文件最后添加如下信息:
#setting for nagios ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" <Directory "/usr/local/nagios/sbin"> AuthType Basic Options ExecCGI AllowOverride None Order allow,deny Allow from all AuthName "Nagios Access" AuthUserFile /usr/local/nagios/etc/htpasswd Require valid-user </Directory> Alias /nagios "/usr/local/nagios/share" <Directory "/usr/local/nagios/share"> AuthType Basic Options None AllowOverride None Order allow,deny Allow from all AuthName "nagios Access" AuthUserFile /usr/local/nagios/etc/htpasswd Require valid-user </Directory> # systemctl restart httpd.service //重启服务
-
创建认证访问文件
# htpasswd -c /usr/local/nagios/etc/htpasswd zkc //接着输入密码
-
配置Nagois
配置文件一般在目录/usr/local/nagios/etc/ 下
- resource.cfg : 是nagios的变量定义文件 一般无需更改 $USER1$=/usr/local/nagios/libexec
- commands.cfg : 此文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可
- localhost.cfg : 用来监控本机 一般无需更改
- windows.cfg : 用来监控windows
-
templates.cfi
主要用于监控主机资源以及服务,在nagios配置中称为对象,为了不必重复定义一些监控对象,Nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用。# vim templates.cfi contact_groups ts //联系组属性改成 ts(5个) 将在后面的contacts.cfg文件中定义
-
hosts.cfg
此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息(不能有任何空格)# vim /usr/local/nagios/etc/objects/hosts.cfg define host{ use linux-server#引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。 host_name Nagios-Linux#主机名 alias Nagios-Linux#主机别名 address 192.168.200.131 #被监控的主机地址,这个地址可以是ip,也可以是域名。 } define host{ use linux-server host_name Nagios-Linux1 alias Nagios-Linux1 address 192.168.200.132 } #定义一个主机组 define hostgroup{ hostgroup_name bsmart-servers#主机组名称,可以随意指定。 alias bsmart servers#主机组别名 members Nagios-Linux#主机组成员,其中“Nagios-Linux”就是上面定义的主机。 }
?
-
services.cfg
此文件默认也不存在,需要手动创建,主要用于定义监控的服务和主机资源# vim /usr/local/nagios/etc/objects/services.cfg define service{ use local-service#引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。 host_name Nagios-Linux#指定要监控哪个主机上的服务,“Nagios-Server”在hosts.cfg文件中进行了定义。 service_description check-host-alive#对监控服务内容的描述,以供维护人员参考。 check_command check-host-alive#指定检查的命令。 }
?
-
contacts.cfg
contacts.cfg是一个定义联系人和联系人组的配置文件(不能有空格)# vim /usr/local/nagios/etc/objects/contacts.cfg define contact{ contact_name zkc#联系人的名称,这个地方不要有空格 use generic-contact#引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义 alias Nagios Admin email 651373897@qq.com } define contactgroup{ contactgroup_name ts#联系人组的名称,同样不能空格 alias Technical Support#联系人组描述 members zkc#联系人组成员,其中“zkc”就是上面定义的联系人,如果有多个联系人则以逗号相隔 }
?
-
cgi.cfg
此文件用来控制相关cgi脚本
由于nagios的web监控界面验证用户为zkc,所以只需在cgi.cfg文件中添加此用户的执行权限
在最后加入# vim /usr/local/nagios/etc/cgi.cfg default_user_name=zkc authorized_for_system_information=nagiosadmin,zkc authorized_for_configuration_information=nagiosadmin,zkc authorized_for_system_commands=zkc authorized_for_all_services=nagiosadmin,zkc authorized_for_all_hosts=nagiosadmin,zkc authorized_for_all_service_commands=nagiosadmin,zkc authorized_for_all_host_commands=nagiosadmin,zkc
?
-
nagios.cfg
# vim /usr/local/nagios/etc/nagios.cfg 将对象配置文件在Nagios.cfg文件中进行引用 cfg_file=/usr/local/nagios/etc/objects/hosts.cfg cfg_file=/usr/local/nagios/etc/objects/services.cfg command_check_interval=10s //添加 该变量用于设置nagios对外部命令检测的时间间隔
-
测试监控
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 验证配置文件 # systemctl restart nagios.service # systemctl restart httpd
-
验证:打开浏览器输入