Nagios是一款Linux上成熟的监视系统运行状态和网络信息的开源IT基础设施监视系统。Nagios能监视所指定的本地或远程主机服务,同时提供异常通知、事件处理等功能。与商业IT管理系统,如IBM Tivoli、HP OpenView/Operations等相比,Nagios具有成本低廉、结构简单、可维护性强等诸多优点,越来越受IT运维人员和系统管理员的青睐。
本博客是基于Centos、apache环境搭建Nagios的。
一、安装Nagios
1.安装前的准备
(1)创建Nagios用户和用户组
useradd -s /sbin/nologin nagios
mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios
(2)开启系统的sendmail服务
在Nagios监控服务器上开启sendmail服务的作用是让Nagios在检测到故障时可以发送报警邮件。
可以按如下需求配置sendmail服务
vim /etc/mail.rc
set from=fromUser smtp=smtp服务器 smtp-auth-user=用户名 smtp-auth-password=密码 smtp-auth=login
2.安装Nagios
tar xvzf nagios-4.1.1.tar.gz
cd nagios
./configure --prefix=/usr/local/nagios
make all
make install
make install-init
make install-commandmode
make install-config
chkconfig --add nagios
chkconfig --level 35 nagios on
chkconfig --list nagios
3.安装Nagios插件
Nagios提供的各种功能基本上是通过插件来完成的,而Nagios核心只提供了很少的监控功能。Nagios插件可以在www.nagios.org下载。
tar xvzf nagios-plugins-2.1.1.tar.gz
cd nagios-plugins-2.1.1
./configure --prefix=/usr/local/nagios
make
make install
4.配置apache
vim /etc/httpd/conf/httpd.conf
修改用户和用户组
User nagios
Group nagios
找到
DirectoryIndex index.html
修改为
DirectoryIndex index.html index.php
AddType application/x-httpd-php .php
增加验证配置
#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>
创建Apache目录验证文件
htpasswd -c /usr/local/nagios/etc/htpasswd 用户名
New password:(输入密码)
Re-type new password:(确认密码)
重启Apache服务
二、配置Nagios
(1)hosts.cfg文件
此文件在默认情况下不存在,需要手动创建。hosts.cfg主要用来指定被监控的主机地址及相关属性信息。
define host {
use linux-server
host_name web
alias turtletl-web
address 115.29.39.145
}
define host {
use linux-server
host_name turtletl
alias turtletl.com
address www.turtletl.com
}
define hostgroup {
hostgroup_name sa-server
alias sa server
members web,turtletl
}
此文件创建了115.29.39.145和turtletl.com两个远程主机和一个主机组。
(2)services.cfg文件
此文件在默认情况下也不存在,需要创建。services.cfg文件主要用于定义监控服务和主机资源。
########################### web #################################
define service {
use local-service
host_name web
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service {
use local-service
host_name web
service_description SSH
check_command check_ssh
}
define service {
use local-service
host_name web
service_description SSHD
check_command check_tcp!22
}
define service {
use local-service
host_name web
service_description http
check_command check_http
}
########################### turtletl ############################
define service {
use local-service
host_name turtletl
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service {
use local-service
host_name turtletl
service_description SSH
check_command check_ssh
}
define service {
use local-service
host_name turtletl
service_description SSHD
check_command check_tcp!22
}
define service {
use local-service
host_name turtletl
service_description http
check_command check_http
}
这里对这两个主机设置了4个监控服务。
(3)contacts.cfg文件
contacts.cfg是一个定义联系人和联系人组的配置文件,当监护的主机或服务出现故障时,Nagios会通过指定的通知将信息发送给指定的联系人或使用者。
define contact{
contact_name turtle ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias turtle Admin; Full name of user
email 邮箱 ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******>>
}
# CONTACT GROUPS
# We only have one contact in this simple configuration file, so there is
# no need to create more than one contact group.
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members turtle
}
(4)cgi.cfg文件
在cgi.cfg文件中添加此用户的执行权限就可以。
default_user_name=turtle
authorized_for_system_information=turtle
authorized_for_configuration_information=turtle
authorized_for_system_commands=turtle
authorized_for_all_services=turtle
authorized_for_all_hosts=turtle
authorized_for_all_service_commands=turtle
authorized_for_all_host_commands=turtle
(6)nagios.cfg文件
将上面添加的文件在nagios.cfg文件中配置
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
三、Nagios的运行和维护
1.验证Nagios配置文件的正确性
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
2.启动与停止Nagios
(1)启动Nagios
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
(2)关闭nagios
kill <nagios_pid>
(3)重启nagios
kill -HUP <nagios_pid>