Nagios是最强大的网络监控系统之一,在业界广泛使用。它可以主动监控任何网络,并在检测到任何问题时生成音频/电子邮件警告和警报。检查类型和警报计时器是完全可自定义的。
Nagios的另一个令人难以置信的功能是它可以监控主机和服务,例如,它可以监控IP地址和TCP / UDP端口号。为了解释一下,让我们假设有一个我们想要监控的Web服务器。Nagios可以通过在服务器的IP /名称上运行ping来检查服务器是否在线,并且可以将其设置为在服务器的往返时间(RTT)增加的情况下提供警告。此外,Nagios还可以检查TCP端口80(Web服务器)是否可访问,例如,服务器是否在线但Apache / IIS没有响应。
还有基于Nagios的第三方监控工具,例如Centreon,FAN,op5
Monitor,它们在接口,自动化和技术支持方面补充了独立的Nagios引擎。
本教程介绍如何在Linux上安装和配置Nagios。
在Debian或Ubuntu上安装Nagios
在基于Debian的系统上,由于apt-get,安装本身就是一个非常简单的过程。
root @ mrtg:〜#apt-get install nagios3
邮件服务器设置可以在Nagios安装期间完成。它也可以在以后需要时配置。
注意: Nagios需要有效的SMTP配置才能发送电子邮件通知。
可以看出,Nagios支持多种电子邮件传送选项。最常见的选项是Internet站点,服务器将电子邮件直接发送给收件人。另一个广泛使用的选项是使用smarthost或中继服务器,其中服务器将电子邮件发送到中间邮件服务器,后者又负责将邮件传递给收件人。
接下来,必须在下一步中包含服务器的域名。
最后,设置Nagios管理员用户'nagiosadmin'的密码。此值也可以在以后更改。
在CentOS或RHEL上安装Nagios
yum用于安装。之后设立repoforge库,运行百胜如下。
[root @ mrtg~] #yum install nagiosnagios-plugins
监测要求
在本教程中,我们要监视以下内容。
每隔3分钟检查一次所有Linux服务器。
所有Cisco路由器将每3分钟检查一次。
所有电子邮件提醒都应发送到地址sentinel@example.tst。
在发出任何警报之前,Nagios将验证3次以确保问题是真实的。
如果任何设备的RTT超过100毫秒和/或数据包丢失超过20%,将生成电子邮件警报。
本教程的其余部分将指导您在Linux上配置Nagios。
Ubuntu上的Nagios配置
了解Nagios配置文件的位置非常重要。下表显示了基于Debian的系统上Nagios配置文件的位置。
在/ etc / nagios的-插件
用于监控的可自定义脚本
在/ etc / nagios3
用于添加主机,服务,定义检查和计时器的配置文件
/ usr / lib中/的nagios /插件
用于监视的可执行文件
以下步骤是相互关联的。定义主机,主机组和向主机组添加服务。
添加主机模板
定义了定义如何处理类型主机的模板。我们使用随安装提供的文件作为示例。
首先,为Linux设备定义主机模板
root @ mrtg:〜#cd /etc/nagios3/conf.d
root @ mrtg:/etc/nagios3/conf.d/#cpgeneral-host_nagios2.cfg linux-server.cfg
编辑linux-server.cfg如下。粗体字的部分被修改。
root @ mrtg:/etc/nagios3/conf.d/#vimlinux-server.cfg
define host{
name linux-server
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
check_command example-host-check ; the script to be used while checking
check_interval 3 ; the interval betweenconsecutive checks
max_check_attempts 3 ; number of rechecking before generatingemail alerts
notification_interval 0
notification_period 24x7
notification_options d,u,r
contact_groups admins ; the group where emails will be sent
register 0
}
接下来,为Cisco设备定义主机模板。
root @ mrtg:/etc/nagios3/conf.d/#cplinux-server.cfg cisco-device.cfg
修改cisco-device.cfg如下。粗体字部分已修改。
root @ mrtg:/etc/nagios3/conf.d/#vimcisco-device.cfg
# The highlighted parts are modified
define host{
name cisco-device
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
check_command example-host-check ; the script to be used while checking
check_interval 3 ; the interval between consecutivechecks
max_check_attempts 3 ; number of recheckingbefore generating email alerts
notification_interval 0
notification_period 24x7
notification_options d,u,r
contact_groups admins ; the group where emails will be sent
register 0
}
添加主机
现在已定义主机模板,添加了要监视的实际主机。同样,默认提供的文件用作样本。
root @ mrtg:/etc/nagios3/conf.d/#cplocalhost_nagios2.cfg example.cfg
root @ mrtg:/etc/nagios3/conf.d/#vimexample.cfg
# Host 1
define host{
use linux-server ; Name of host template to use
host_name our-server ; The hostname to be used bynagios
alias our-server
address 172.17.1.23 ; The IP address of the host
}
# Host 2
define host{
use cisco-device ; Name of host template to use
host_name our-router ; The hostname to be used bynagios
alias our-router
address 172.17.1.1 ; The IP address of the host
}
主机组定义
为了便于在有多个主机时进行管理,建议将类似类型的主机组合在一起。
root @ mrtg:/etc/nagios3/conf.d/#vimhostgroups_nagios2.cfg
definehostgroup {
hostgroup_name linux-server ; the name of the host group
alias Linux Servers
members our-server ; comma separated list of members
}
definehostgroup {
hostgroup_name cisco-device ; the name of the host group
alias Cisco Devices
members our-server ; comma separated list of members
}
服务定义
首先,命令example-host-check定义为延迟警告值为100 ms,丢包率为20%。延迟和100%丢包的临界值为5000毫秒。发送一个IPv4 ping请求。
root @ mrtg:〜#vim /etc/nagios-plugins/config/ping.cfg
define command {
command_name example-host-check
command_line / usr / lib / nagios / plugins / check_ping -H'$HOSTADDRESS $'-w 100,20%-c 5000,100%-p 1 -4
}
然后,该命令与主机组关联。
root @ mrtg:/etc/nagios3/conf.d/#vimservices_nagios2.cfg
define service {
hostgroup_name linux-server
service_description Linux Servers
check_command example-host-check
use generic-service
notification_interval 0 ; set > 0 if youwant to be renotified
}
define service {
hostgroup_name cisco-device
service_description Cisco Devices
check_command example-host-check
use generic-service
notification_interval 0 ; set > 0 if youwant to be renotified
}
联系定义
发送电子邮件所需的地址已添加到Nagios。
root @ mrtg:/etc/nagios3/conf.d/#vimcontacts_nagios2.cfg
define contact{
contact_name root
alias Root
service_notification_period 24x7
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 root@localhost, sentinel@example.tst
}
最后,启动空运行以检查是否存在任何配置错误。如果没有错误,可以(重新)安全地启动Nagios。
root @ mrtg:〜#nagios -v /etc/nagios3/nagios.cfg
root @ mrtg:〜#service nagios3 restart
CentOS / RHEL上的Nagios配置
以下显示了基于Redhat的系统上Nagios配置文件的位置。
的/ etc /的nagios /对象
用于添加主机,服务,定义检查和计时器的配置文件
/ usr / lib中/的nagios /插件
用于监视的可执行文件
添加主机模板
创建模板以定义需要为特定类型的主机执行的操作。随安装提供的文件已修改。
[root @ mrtg objects] #cd / etc / nagios /objects /
[root @ mrtg objects] #vim templates.cfg
Finally, a dry run is initiated to checkwhether there are any configuration errors. If there are no errors, Nagios canbe (re)started safely.
root@mrtg:~#nagios –v/etc/nagios3/nagios.cfg
root@mrtg:~# service nagios3 restart
Nagios Configuration on CentOS/RHEL
The following shows the locations of Nagiosconfiguration files on Redhat-based systems.
/etc/nagios/objects
Configuration files to add hosts, services,define checks and timers
/usr/lib/nagios/plugins
Executable files used for monitoring
Adding Host Template
A template is created to define what needsto be done for a specific type of host. The files provided with theinstallation is modified.
[root@mrtg objects]# cd/etc/nagios/objects/
[root@mrtg objects]# vim templates.cfg
define host{
name linux-server
use generic-host
check_period 24x7
check_interval 3
retry_interval 1
max_check_attempts 3
check_command example-host-check
notification_period 24x7
notification_interval 0
notification_options d,u,r
contact_groups admins
register 0
}
define host{
name cisco-router
use generic-host
check_period 24x7
check_interval 3
retry_interval 1
max_check_attempts 3
check_command example-host-check
notification_period 24x7
notification_interval 0
notification_options d,u,r
contact_groups admins
register 0
}
添加主机和主机组
默认情况下提供的配置文件用作示例。主机和主机组添加在同一文件中。
[root @ mrtg objects] #cp localhost.cfgexample.cfg
[root @ mrtg objects] #vim example.cfg
#Adding Linux server
define host{
use linux-server
host_name our-server
alias our-server
address 172.17.1.23
}
#Adding Cisco Router
define host{
use cisco-router
host_name our-router
alias our-router
address 172.17.1.1
}
# HOST GROUP DEFINITION
define hostgroup{
hostgroup_name linux-servers
alias Linux Servers
members our-server
}
define hostgroup{
hostgroup_name cisco-router
alias cisco-router
members our-router
}
服务定义
定义了一个名为example-host-check的服务,其延迟警告值为100 ms,数据包丢失警告值为20%。延迟的临界值为5000 ms,数据包丢失的临界值为100%。只传输一个IPv4 ping请求。
[root @ mrtg objects] #vim commands.cfg
define command {
command_name example-host-check
command_line $ USER1 $ / check_ping -H $ HOSTADDRESS $ -w 100.0,20%-c 5000.0,100%-p 1 -4
}
联系定义
将发送警报的电子邮件地址添加到Nagios中。
[root @ objects objects] #vim contacts.cfg
定义联系人{
contact_name nagiosadmin
使用通用联系人
别名Nagios Admin
电子邮件nagios @ localhost,sentinel @ example.tst
}
最后,我们准备启动Nagios服务。建议进行干运行以找出配置错误。
[root @ mrtg~] #nagios -v /etc/nagios/nagios.cfg
[root @ mrtg~] #service nagios restart
[root @ mrtg~] #chkconfig nagios on
配置后访问Nagios
现在您已准备好使用Nagios。在Ubuntu
/ Debian的情况下打开URL http:// IP /
nagios3或在CentOS / RHEL的情况下打开http:// IP / nagios,例如http://172.17.1.23/nagios3,可以访问Nagios。需要对用户“nagiosadmin”进行身份验证才能访问该页面。