1.安装nagios
前提:nagios使用web监控界面,所有需要安装web服务器(sudo apt-get install apache2 )
sudo apt-get install nagios3 nagios-plugins nagios-images (如果没有安装邮件服务,则会自动安装Postfix。)
安装过程会创建一个用户 nagiosadmin ,并要求设置改用户的密码(登录界面:192.168.1.10/nagios3 )
nagios3的配置文件位于/etc/nagios3/目录下,其插件的配置文件位于/etc/nagios-plugins/目录下
2.配置
2.1权限设置
2.1.1将默认的账号nagiosadmin替换成ng3admin:
sudo sed -i 's/nagiosadmin/ng3admin/g' /etc/nagios3/cgi.cfg ;验证失败
2.1.2密码修改
sudo htpasswd /etc/nagios3/htpasswd.users nagiosadmin
2.1.3添加账号(比如账号xiebo)
sudo htpasswd /etc/nagios3/htpasswd.users xiebo
2.1.4登录监控界面
http://192.168.1.10/nagios3/
2.2启用外部命令
默认情况下,出于安全考虑,nagios在默认配置中禁用了外部命令(指web服务通过CGI来对nagios进行的操作,比如临时禁用对某个服务的监控,立即执行对某个服务的状态检查等。)。
如需要开启外部命令,则可以按照下列步骤启用它。修改nagios.cfg,将check_external_commands改为1:
sudo vi /etc/nagios3/nagios.cfg
[...]
check_external_commands=1
[...]
执行下面的命令修改权限:
sudo service nagios3 stop
sudo dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw
sudo dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
(如果不适用dpkg-statoverride,单单用chown/chmod修改权限的话,在软件包升级apt-get upgrade时,权限会被覆盖掉。)
sudo service nagios3 start
3.nagios监控设置
3.1 Nagios3的主配置文件是/etc/nagios3/nagios.cfg,其他的配置文件都会被其调用。(其实都可以放在一个文件中,但为了条理清楚,管理方便而分开的)
默认情况下,nagios3在安装的时候回创建一个/etc/nagios3/conf.d目录,并在该目录下创建一些配置文件。这些文件的配置内容,大多是nagios在安装的过程中自动检测得结果。他们的作用是:
contacts_nagios2.cfg ---定义了联系人,用于发送通知;
extinfo_nagios2.cfg ---要监控的主机和服务的扩展信息(比如为主机定义的图标等)
generic-host_nagios2.cfg ---主机定义模块
generic-service_nagios2.cfg ---服务定义模块
host-gateway_nagios2.cfg --要监控的默认网关的定义
hostgroup_nagios2.cfg --对监控的主机进行分组(比如servers,wireless,switches等等)
localhost_nagios2.cfg ---本机监控定义
services_nagios2.cfg -- 要监控的各个主机上的各种服务
timeperiods——nagios2.cfg ---对监控,通知的时间段定义
(该目录下的所有.cfg文件都会被nagios读取,所以,完全可以在该目录下创建自己的配置文件)
3.2 联系人设置 (系统发生故障时发送通知给联系人)
sudo vi /etc/nagios3/conf.d/contacts_nagios2.cfg
前提:nagios使用web监控界面,所有需要安装web服务器(sudo apt-get install apache2 )
sudo apt-get install nagios3 nagios-plugins nagios-images (如果没有安装邮件服务,则会自动安装Postfix。)
安装过程会创建一个用户 nagiosadmin ,并要求设置改用户的密码(登录界面:192.168.1.10/nagios3 )
nagios3的配置文件位于/etc/nagios3/目录下,其插件的配置文件位于/etc/nagios-plugins/目录下
2.配置
2.1权限设置
2.1.1将默认的账号nagiosadmin替换成ng3admin:
sudo sed -i 's/nagiosadmin/ng3admin/g' /etc/nagios3/cgi.cfg ;验证失败
2.1.2密码修改
sudo htpasswd /etc/nagios3/htpasswd.users nagiosadmin
2.1.3添加账号(比如账号xiebo)
sudo htpasswd /etc/nagios3/htpasswd.users xiebo
2.1.4登录监控界面
http://192.168.1.10/nagios3/
2.2启用外部命令
默认情况下,出于安全考虑,nagios在默认配置中禁用了外部命令(指web服务通过CGI来对nagios进行的操作,比如临时禁用对某个服务的监控,立即执行对某个服务的状态检查等。)。
如需要开启外部命令,则可以按照下列步骤启用它。修改nagios.cfg,将check_external_commands改为1:
sudo vi /etc/nagios3/nagios.cfg
[...]
check_external_commands=1
[...]
执行下面的命令修改权限:
sudo service nagios3 stop
sudo dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw
sudo dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
(如果不适用dpkg-statoverride,单单用chown/chmod修改权限的话,在软件包升级apt-get upgrade时,权限会被覆盖掉。)
sudo service nagios3 start
3.nagios监控设置
3.1 Nagios3的主配置文件是/etc/nagios3/nagios.cfg,其他的配置文件都会被其调用。(其实都可以放在一个文件中,但为了条理清楚,管理方便而分开的)
默认情况下,nagios3在安装的时候回创建一个/etc/nagios3/conf.d目录,并在该目录下创建一些配置文件。这些文件的配置内容,大多是nagios在安装的过程中自动检测得结果。他们的作用是:
contacts_nagios2.cfg ---定义了联系人,用于发送通知;
extinfo_nagios2.cfg ---要监控的主机和服务的扩展信息(比如为主机定义的图标等)
generic-host_nagios2.cfg ---主机定义模块
generic-service_nagios2.cfg ---服务定义模块
host-gateway_nagios2.cfg --要监控的默认网关的定义
hostgroup_nagios2.cfg --对监控的主机进行分组(比如servers,wireless,switches等等)
localhost_nagios2.cfg ---本机监控定义
services_nagios2.cfg -- 要监控的各个主机上的各种服务
timeperiods——nagios2.cfg ---对监控,通知的时间段定义
(该目录下的所有.cfg文件都会被nagios读取,所以,完全可以在该目录下创建自己的配置文件)
3.2 联系人设置 (系统发生故障时发送通知给联系人)
sudo vi /etc/nagios3/conf.d/contacts_nagios2.cfg
define contact{ #
contact_name root #联系人
alias Root #别名
service_notification_period 24x7 #24*7不间断的时间都愿意接收nagios发出来的通知(服务,主机的通知)
host_notification_period 24x7
service_notification_options w,u,c,r #服务通知选项;
host_notification_options d,r #主机通知选项;
service_notification_commands notify-service-by-email #邮件方式
host_notification_commands notify-host-by-email
email xiebo@mapgoo.net #通知的接收者
}
其中: service_notification_options针对“服务"的通知选项;w=Warning,服务状态为警告时;u=Unknown,未知;c=Critical,危急;r=Recoveries,恢复正常;f=Flapping,服务频繁重启时;n=None,不发送通知;
define contactgroup{ #联系人组
contactgroup_name admins
alias Nagios Administrators
members root #成员
}
host_notification_options 针对“主机”的通知选项;d=Down,主机宕机时;u=Unreachable,主机无法联系时;r=Recoveries,恢复正常;f=Flapping,频繁重启;n=None,不发送通知。
3.3主机设置
可以创建自己的主机配置文件,只需要放在/etc/nagios3/conf.d/目录下,就会被nagios3加载。
sudo vi /etc/nagios3/conf.d/hosts.cfg
define host{
3.4主机组设置
主机分组后,在nagios监控界面上看起来会比较直观,不容易乱。
use generic-host #所使用的模块(这里就是generic-host_nagios2.cfg)
host_name localhost #定义一个叫localhost的主机
alias localhost_xiebo #别名
address 127.0.0.1 #地址
#parents baidu ;定义一个父主机(可以没有)
}
主机分组后,在nagios监控界面上看起来会比较直观,不容易乱。
sudo vi /etc/nagios3/ conf.d/hostgroups_nagios2.cfg
# A simple wildcard hostgroup
3.5 服务设置
使用nagios不单单用来监控主机,更重要的是用它来监控主机上各种服务。
服务的配置比较复杂,因为不同的服务牵扯到各种不同的监控命令。nagios能否支持相应的服务要看是否安装了相应的插件;在/usr/lib/nagios/plugins/目录下面是已经安装的所有插件;他们的配置文件则位于/etc/nagios-plugins/config/目录下。
一般来讲,这些插件可以满足日常需求,不过万一没有你需要的可以到下面的网站去找: www.nagiosplugins.org
vi /etc/nagios3/conf.d/services_nagios2.cfg
define service{
远程监控linux
4.用NRPE进行远程监控 (这样就不需要再每台机器上安装nagios,也能获取敏感信息,比如剩余硬盘空间,进程数量,负荷等等)
NRPE是Nagios Remote Plugin Executor的简称,可以让nagios在远程机器上执行本地检查命令。也就是说,安装NRPE Server的机器,虽然没有安装nagios,也和安装了差不多--远程的nagios可以像检测本机一样,对它进行只有本机上才能进行的各种检测。
4.1安装nagios-nrpe-server:
sudo apt-get install nagios-nrpe-server
修改/etc/nagios/nrpe.cfg 设置nagios服务器的IP地址,并定义检测命令和参数:
vi /etc/nagios/nrpe.cfg
[...]
#把allowed_hosts改为nagios服务器的IP地址
allowed_hosts=192.168.1.10
[...]
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
4.2 重启nagios-nrpe-server服务
sudo service nagios-nrpe-server restart
4.3在安装nagios3的服务器上将安装nrpe服务的主机配置进去
vi /etc/nagios3/conf.d/142.cfg
说明:要在被检查的主机上(NRPE服务器上)执行什么样的检测,就在主机的/etc/nagios/nrpe.cfg文件中定义相关的命令,然后在nagios服务上用nrpe调用即可。
check_nrpe_larg命令是由nagios-nrpe-plugin软件包提供,所以需要安装对应的软件包:
sudo apt-get install nagios-nrpe-plugin
重启nagios3服务: sudo service nagios3 restart
远程监控windowsserver
5. 通过使用NSClient++,你也可以利用Nagios监控Windows Server
5.1 windows下下载安装对应的 NSClient++版本 ( http://nsclient.org/nscp/downloads )
5.2 windows下配置NSClient++ (C:\Program Files\NSClient++\nsclient.ini)
5.3 nagios服务器上的配置
5.3.1ubuntu中默认是没有windows.cfg文件,需要手动建立相应的配置文件;在安装nagios时,系统会自动安装相应的模板文件复制一份在相应的位置。
cp /usr/share/doc/nagios3-common/examples/template-object/windows.cfg /etc/nagios3/objects/windows.cfg
(文件夹如果不存在,自己手动创建)
5.3.2 修改nagios配置文件以启用windows的监控配置(/etc/nagios3/nagios.cfg)
cfg_file=/etc/nagios3/objects/windows.cfg
5.3.3 配置/etc/nagios-plugins/config/nt.cfg
# 'check_nt' command definition
define host{
# A simple wildcard hostgroup
define hostgroup {
hostgroup_name all
alias All Servers
members * # “*”表示所有主机
}
# A list of your web servers
define hostgroup {
hostgroup_name http-servers
alias HTTP servers
members localhost , Web_server1 #一个组中如果有多个分组用逗号隔开
}
使用nagios不单单用来监控主机,更重要的是用它来监控主机上各种服务。
服务的配置比较复杂,因为不同的服务牵扯到各种不同的监控命令。nagios能否支持相应的服务要看是否安装了相应的插件;在/usr/lib/nagios/plugins/目录下面是已经安装的所有插件;他们的配置文件则位于/etc/nagios-plugins/config/目录下。
一般来讲,这些插件可以满足日常需求,不过万一没有你需要的可以到下面的网站去找: www.nagiosplugins.org
vi /etc/nagios3/conf.d/services_nagios2.cfg
define service{
use generic-service ; 要使用的模板(/etc/nagios3/conf.d/generic-server_nagios2.cfg)
host_name localhost ;针对的主机
service_description Disk Space ;对监控的服务的描述
check_command check_all_disks!20%!10% ;检查命令
}
define service {
use generic-service
define service {
use generic-service
hostgroup_name ssh-servers ;针对的“主机组”的名称
service_description SSH
check_command check_ssh
notification_interval 0 ; 通知的时间间隔,设置为0,表示只通知一次;如果设置为60,表示每60分钟通知一次。
}
远程监控linux
4.用NRPE进行远程监控 (这样就不需要再每台机器上安装nagios,也能获取敏感信息,比如剩余硬盘空间,进程数量,负荷等等)
NRPE是Nagios Remote Plugin Executor的简称,可以让nagios在远程机器上执行本地检查命令。也就是说,安装NRPE Server的机器,虽然没有安装nagios,也和安装了差不多--远程的nagios可以像检测本机一样,对它进行只有本机上才能进行的各种检测。
4.1安装nagios-nrpe-server:
sudo apt-get install nagios-nrpe-server
修改/etc/nagios/nrpe.cfg 设置nagios服务器的IP地址,并定义检测命令和参数:
vi /etc/nagios/nrpe.cfg
[...]
#把allowed_hosts改为nagios服务器的IP地址
allowed_hosts=192.168.1.10
[...]
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
command[check_all_disks]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -e #新增此行
[..]
4.2 重启nagios-nrpe-server服务
sudo service nagios-nrpe-server restart
4.3在安装nagios3的服务器上将安装nrpe服务的主机配置进去
vi /etc/nagios3/conf.d/142.cfg
define host{
use generic-host
host_name 142_wan
alias 142_linux
address 192.168.1.142
parents gateway
}
#disk space
define service{
use generic-service
host_name 142_wan
service_description Disk Space
check_command check_nrpe_larg!check_all_disks ;check_all_disks对应被监控文件
nrpe.cfg中的命令
}
#current users
define service{
use generic-service
host_name 142_wan
service_description Current Users
check_command check_nrpe_larg!check_users
}
#total processes
define service{
use generic-service
host_name 142_wan
service_description Total Processes
check_command check_nrpe_larg!check_total_procs
}
#currrent load
define service{
use generic-service
host_name 142_wan
service_description Current Load
check_command check_nrpe_larg!check_load
}
说明:要在被检查的主机上(NRPE服务器上)执行什么样的检测,就在主机的/etc/nagios/nrpe.cfg文件中定义相关的命令,然后在nagios服务上用nrpe调用即可。
check_nrpe_larg命令是由nagios-nrpe-plugin软件包提供,所以需要安装对应的软件包:
sudo apt-get install nagios-nrpe-plugin
重启nagios3服务: sudo service nagios3 restart
远程监控windowsserver
5. 通过使用NSClient++,你也可以利用Nagios监控Windows Server
5.1 windows下下载安装对应的 NSClient++版本 ( http://nsclient.org/nscp/downloads )
5.2 windows下配置NSClient++ (C:\Program Files\NSClient++\nsclient.ini)
将 [modules]部分的所有模块前面的注释都去掉,除了CheckWMI.dll and RemoteConfiguration.dll这两个
|
在[Settings]部分设置'password'选项来设置密码,作用是在nagios连接过来时要求提供密码.这一步是可选的,我这里方便起见跳过它,不要密码.
|
将[Settings]部分'allowed_hosts'选项的注释去掉,并且加上运行nagios的监控主机的IP.我改为如下这样allowed_hosts=127.0.0.1/32,192.168.0.111 以逗号相隔.这个地方是支持子网的,如果写成192.168.0.0/24则表示该子网内的所有机器都可以访问.如果这个地方是空白则表示所有的主机都可以连接上来.注意是[Settings]部分的,因为[NSClient]部分也有这个选项.
|
必须保证[NSClient]的'port'选项并没有被注释,并且它的值是'12489',这是NSClient的默认监听端口,windows防火墙中要确保开放这个端口 |
5.3 nagios服务器上的配置
5.3.1ubuntu中默认是没有windows.cfg文件,需要手动建立相应的配置文件;在安装nagios时,系统会自动安装相应的模板文件复制一份在相应的位置。
cp /usr/share/doc/nagios3-common/examples/template-object/windows.cfg /etc/nagios3/objects/windows.cfg
(文件夹如果不存在,自己手动创建)
5.3.2 修改nagios配置文件以启用windows的监控配置(/etc/nagios3/nagios.cfg)
cfg_file=/etc/nagios3/objects/windows.cfg
5.3.3 配置/etc/nagios-plugins/config/nt.cfg
# 'check_nt' command definition
define command {
command_name check_nt
command_line /usr/lib/nagios/plugins/check_nt -H '$HOSTADDRESS$' -p 12489 -v '$ARG1$' -s xiebo
}
# 'check_nscp' command definition
define command {
command_name check_nscp
command_line /usr/lib/nagios/plugins/check_nt -H '$HOSTADDRESS$' -p 12489 -v '$ARG1$' '$ARG2$' -s xiebo
}
5.3.4 配置/etc/nagios3/objects/windows.cfg
define host{
use generic-host ; Inherit default values from a template
host_name winserver37 ; The name we're giving to this host
alias My Windows Server 37 ; A longer name associated with the host
address 192.168.1.37 ; IP address of the host
parents gateway
}
define service{
define service{
use generic-service
host_name winserver37
service_description NSClient++ Version
check_command check_nt!CLIENTVERSION ;查看windows服务器上NSClient++的版本
}
注释:check_command的命令还有:
check_nt!UPTIME 监控 windows 服务器运行的时间
check_nscp!CPULOAD!-l 5,80,90 监控 Windows 服务器的 CPU 负载 , 如果 5 分钟超过 80% 则是 warning, 如果 5 分钟超过 90% 则是 critical
check_nscp!MEMUSE!-w 98 -c 99 监控 Windows 服务器的内存使用情况 , 如果超过了98 % 则是 warning, 如果超过 99% 则是 critical.
check_nscp!USEDDISKSPACE!-l c -w 80 -c 90 监控 Windows 服务器 C:\ 盘的使用情况 , 如果超过 80% 已经使用则是 warning, 超过 90% 则是 critical ( 注 :-l 后面接的参数用来指定盘符)
check_nscp!SERVICESTATE!-d SHOWALL -l W3SVC 监控 Windows 服务器的 W3SVC 服务的状态 , 如果服务停止了 , 则是 critical
5.3.5 重启nagios服务 service nagios3 restart
6.邮件报警通知
6.1 sendEmail安装
apt-get install sendEmail
6.2 sendEmail用法
/usr/bin/sendEmail -f 发件人邮件 -t 收件人邮件 -s smtp.163.com -u "邮件主题" -xu 用户名 -xp 密码 -m 邮件内容
eg: /usr/bin/sendEmail -f 1213@163.net -t 8611@qq.com -s mail.163.net -u "from nagios by xbo" -xu 1213@163.net -xp 1314520china -m justatest
注释: -f 表示发送者的邮箱
-t 表示接收者的邮箱 (接收邮件和发送邮件,尽量不要用同一个邮箱帐号,容易出错)
-s 表示SMTP服务器的域名或者ip
-u 表示邮件的主题
-xu 表示SMTP验证的用户名
-xp 表示SMTP验证的密码
-m 表示邮件的内容
6.3 修改配置文件 / etc/nagios3/commands.cfg
将邮件通知方式改成sendEmail
define command{
注释: -f 表示发送者的邮箱
-t 表示接收者的邮箱 (接收邮件和发送邮件,尽量不要用同一个邮箱帐号,容易出错)
-s 表示SMTP服务器的域名或者ip
-u 表示邮件的主题
-xu 表示SMTP验证的用户名
-xp 表示SMTP验证的密码
-m 表示邮件的内容
6.3 修改配置文件 / etc/nagios3/commands.cfg
将邮件通知方式改成sendEmail
define command{
command_name notify-service-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/sendEmail -f 1213@163.net -t 861859381@qq.com -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -s mail.mapgoo.net -xu 1213@163.net -xp 1314520china -m "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **"
}
}