Nagios 是一个用来监控主机、服务和网络的开放源码软件。 Nagios 本身并不做任何检测主机 (host) 和服务 (Service) 的工作,而是完全依赖于一些插件 (Plugin) 来完全这些工作 . 插件可以是一些程序或脚本 (scripts) 。每当 Nagios 需要检测主机或某个服务的状时,并执行这些插件,然后根据返回的结果来判断其是否处于正常状态。
一、安装:
官方文档: http://www.nagios.org/docs/
官方文档中详细描述了 nagios 的安装。
1 、创建用户和组 :
sudo /usr/sbin/useradd -m nagios
sudo passwd nagios
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
2 、安装
从下列网址下载 nagios 及其插件
http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.6.tar.gz
http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.11.tar.gz
解压后进入 nagios 目录
用 root 用户执行:
./configure –with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
要通过 apache 查看 web 界面,执行以下命令:
make install-webconf
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
进入 nagios 的插件目录:
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
这样, nagios 和 nagios 的插件就安装完成了。执行下面这条命令使 naigos 自动启动
ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
3 、访问 http://localhost/nagios/ 就可以查看 nagios 的监控状态了,点击左侧的 Service
发现 nagios 监测了一个 host(localhost) 和一些 service
二、配置
安装好 nagios 后,配置文件在 /usr/local/nagios/etc 下面, nagios.cfg 的主配置文件,这里可以指定一些 log 信息,引用哪些配置文件等,我这里几乎没做任何修改。
主要修改是在 /usr/local/naigos/etc/objects 目录下的配置文件
1 、 contacts.cfg
这个配置文件主要用来修改联系人信息,如 email 地址等 ,当 service 或 host 有问题时发送邮件时会用到。
2 、 commands.cfg
这个配置文件主要是定义了一些命令
如
define command{
command_name check-host-alive
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
}
3 、 localhost.cfg
这个就是在 nagios 的监控页面上看到的 localhost 的配置文件
在这个配置文件里,首先定了一个 host(A host definition is used to define a physical server, workstation, device, etc.)
define host{
use linux-server
host_name localhost
alias localhost
address 127.0.0.1
contacts nagiosadmin
}
这里可以指定 ip 地址 ,contacts 等。
接下来定义了一个 hostgroup(Host Groups are groups of one or more hosts)
然后就是一些预定义的 Service(Service are one of the central objects in the monitoring logic ) 也就是我们要监视服务器上的哪些资源。如
define service{
use local-service
host_name localhost
service_description Root Partition
check_command check_local_disk!20%!10%!/
}
这个 Service 表示要临控根分区,当可用空间小于 20% ,发出“警告”信息,当小于 10% 时,发出“严重 (critical)” 信息
service_description 是对这个 service 的描述。 check_command 是要执行的命令, 当 nagios 要检测这个 Service 是否正常时,会调用这个命令。
check_local_disk!20%!10%!/ 解析:
check_local_disk 是定义在 commands.cfg 里面的一条命令,在 commands.cfg 中,它的定义如下:
define command{
command_name check_local_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}
$USER1$ 为 nagios 的内部变量在 resource.cfg 中定义,此处值为 /usr/local/nagios/libexec ,
表示 nagios pulugins 按装目录,在 /usr/local/nagios/libexec 里,可以看到一系列命令,每一个命令都可以终端里执行:如 ./check_disk -h 会显示 check_disk 这条命令的帮助信息
./check_mysql -H 127.0.0.1 -u root -p password 会显示 mysql 的连接情况
Uptime: 30457 Threads: 39 Questions: 1801488 Slow queries: 7 Opens: 115 Flush tables: 1 Open tables: 64 Queries per second avg: 59.149
在 define command 的 command line 中, $ARG1$ 表示第一个参数, $ARG2$ 表示第二个参数,以此类推,在调用时 check_local_disk!20%!10%!/ , 20% 为第一个参数, 10% 为第二个参数, / 为第三个参数