Nagios是一个流行的电脑系统和网络监控程序,它检测主机和服务,当异常发生和解除时能提醒用户。它是基于GPLv2开发的开源软件,可免费得到及使用。php
nagios的功能是监控服务和主机,可是其自身并不包括这些功能,全部的监控、检测功能都是经过各类插件来完成的。启动nagios后,它会周期性的自动调用插件去检测服务器状态,同时nagios会维持一个队列,全部插件返回的状态信息都进入队列,nagios每次都从队首读取信息,进行处理后,再把状态结果经过web显示出来。这就是被动模式,常常用于监控主机的系统资源,好比系统负载、磁盘使用率、内存使用率、网络状态、系统进程数等等。另外一种是主动模式,主要是nagios服务器主动去获取数据,经常使用于探测URL的监控和服务的状态监控。相比于主动模式中服务器主动去被监控机上轮询获取监控数据的方式,这样作的一个很大优点就是将除去数据处理的其余工做都放在了被监控机上面(包括数据的传输),就避免了被监控机数量大时一次轮询时间过长而致使监控反应延迟,这也是被动模式能承担更大监控量的关键。nagios提供了许多插件,利用这些插件能够方便的监控不少服务状态。安装完成后,在nagios主目录下的/libxec里放有nagios自带的可使用的全部插件。html
本次项目主要介绍如何部署nagios,如何对nagios进行配置,使其可以对指定的主机进行监控操做linux
本次项目只对被监控端作简单测试,因此被监控端不需安装nagios插件。 角色 |
IP地址 | 所用软件 |
---|---|---|
监控端 | 172.16.10.34 | nagios-4.4.二、nagios-plugins-2.2.1 |
被监控端 | 172.16.10.20 | |
被监控端 | 172.16.10.23 |
由于nagios监控系统的网页须要动态网页支持,因此须要安装httpd和php软件,或者直接在lamp环境下安装,因此实验前要准备好虚拟机环境,对于lamp架构的搭建,在这里就很少赘述。ios
yum install -y \ -- gcc \ -- glibc \ -- glibc-common \ -- gd \ -- gd-devel \ -- xinetd \ -- openssl-devel
useradd -s /sbin/nologin nagios
mkdir /usr/local/nagios chown -R nagios.nagios /usr/local/nagios
tar -zxvf nagios-4.4.2.tar.gz -C /opt cd /opt/nagios-4.4.2 ./configure --prefix=/usr/local/nagios make all make install make install-init make install-commandmode make install-config
ls /usr/local/nagios
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
vim /etc/httpd/conf/httpd.conf User nagios Group nagios //修改原用户名apache为nagios <IfModule dir_module> DirectoryIndex index.html index.php //增长index.php </IfModule> AddType application/x-httpd-php .php //插入该句
为了安全起见,通常状况下要让nagios 的web 监控页面必须通过受权才能访问,这须要增长验证配置,即在httpd.conf 文件最后插入以下信息:web
vim /etc/httpd/conf/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>
htpasswd -c /usr/local/nagios/etc/htpasswd chen
配置nagois 通常在目录/usr/local/nagios/etc/下shell
主要用于监控主机资源以及服务,在nagios配置中称为对象,为了避免必重复定义一些监控对象,Nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于屡次引用。contact_groups 联系组属性改为 np 将在后面的contacts.cfg文件中定义apache
vim /usr/local/nagios/etc/object/templates.cfg contact_groups np //文中有五处都需修改
resource.cfg是nagios的变量定义文件 通常无需更改vim
此文件默认是存在的,无需修改便可使用,固然若是有新的命令须要加入时,在此文件进行添加便可centos
此文件默认不存在,须要手动建立,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 172.16.10.20 //被监控的主机地址,这个地址能够是ip,也能够是域名。 } define hostgroup{ //定义一个主机组 hostgroup_name bsmart-servers //主机组名称,能够随意指定。 alias bsmart servers //主机组别名 members Nagios-Linux //主机组成员,其中“Nagios-Linux”就是上面定义的主机。 }
用来监控本机 通常无需更改
此文件默认也不存在,须要手动建立,主要用于定义监控的服务和主机资源
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是一个定义联系人和联系人组的配置文件,注意书写格式。
vim /usr/local/nagios/etc/objects/contacts.cfg define contact{ contact_name chen //联系人的名称,这个地方不要有空格 use generic-contact //引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义 alias Nagios Admin email 46****06@qq.com //填入真实可用邮箱,也可不写 } define contactgroup{ contactgroup_name np //联系人组的名称,一样不能空格 alias Technical Support //联系人组描述,言简意赅,能懂什么意思就行 members chen //联系人组成员,其中“chen”就是上面定义的联系人,若是有多个联系人则以逗号相隔 }
此文件用来控制相关cgi脚本,因为nagios的web监控界面验证用户为chen,因此只需在cgi.cfg文件中添加此用户的执行权限
default_user_name=chen authorized_for_system_information=nagiosadmin,chen authorized_for_configuration_information=nagiosadmin,chen authorized_for_system_commands=chen authorized_for_all_services=nagiosadmin,chen authorized_for_all_hosts=nagiosadmin,chen authorized_for_all_service_commands=nagiosadmin,chen authorized_for_all_host_commands=nagiosadmin,chen //配置文件末尾插入
将对象配置文件在Nagios.cfg文件中进行引用
vim /usr/local/nagios/etc/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 httpd。service systemctl restart nagios.service
该网站设置了登录验证,因此在访问网站是输入以前设置的用户名和密码便可登录网站。
http://172.16.10.34/nagios/
此文件默认不存在,须要手动建立,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 172.16.10.20 //被监控的主机地址,这个地址能够是ip,也能够是域名。 } define host{ use linux-server host_name Nagios-Linu alias Nagios-Linu address 172.16.10.23 } define hostgroup{ //定义一个主机组 hostgroup_name bsmart-servers //主机组名称,能够随意指定。 alias bsmart servers //主机组别名 members Nagios-Linux,Nagios-Linu //主机组成员,其中“Nagios-Linux”就是上面定义的主机。 }
systemctl restart httpd。service systemctl restart nagios.service