Nagios
Nagios 是一个开源的服务器、服务和网络监控程序。它监控指定的主机和服务,并在出现任何问题、错误或需要改进时向您发出警报。本文将介绍 Nagios 的安装和配置。
特性
Nagios 的一些功能 包括
- 监控网络服务(SMTP、POP3、HTTP、NNTP、PING 等)
- 监控主机资源(处理器负载、磁盘使用情况等)
- 简单的插件设计,允许用户轻松开发自己的服务检查
- 并行服务检查
- 能够通过“父”主机定义网络主机层次结构,从而检测和区分已宕机和无法访问的主机
- 在服务或主机出现问题并得到解决时(通过电子邮件、寻呼机或用户定义的方法)发送联系人通知
- 能够定义在服务或主机事件发生时运行的事件处理程序,以实现主动问题解决
- 自动日志文件轮换
- 支持实现冗余监控主机
- 可选的 Web 界面,用于查看当前网络状态、通知和问题历史记录、日志文件等
以下安装和配置测试使用了 nagios 3.2.0-1、Apache Web 服务器 2.2.14-2 和 PHP5 5.3.1-3,由 awayand 完成。
Web服务器
根据 官方文档,Web 服务器并非必需,但如果您希望使用任何 CGI 功能,则需要 Web 服务器(推荐 Apache)、其 PHP(php-apache)以及 gd 库。本次安装假定已具备这些条件。
安装
安装前,最好确保已安装必要的先决条件,例如,如果您使用的是 nginx,那么:nginx、php、php-fpm、fcgiwrap 可能会是一个不错的开始。
安装 nagiosAUR 包。
用户可能还想安装 monitoring-plugins。安装后,请务必稍后编辑 /etc/nagios/resource.cfg 以反映新的路径。
#$USER1$=/usr/share/nagios/libexec $USER1$=/usr/lib/monitoring-plugins
Nagios 配置
复制示例配置文件
# for samples in /etc/nagios/{cgi.cfg.sample,resource.cfg.sample,nagios.cfg.sample,objects/commands.cfg.sample,objects/contacts.cfg.sample,objects/localhost.cfg.sample,objects/templates.cfg.sample,objects/timeperiods.cfg.sample} ; do cp $samples ${samples%.*} ; done
将所有刚复制的属于 root 的文件和目录的所有者/组更改为 nagios/nagios。
# chown -R nagios:nagios /etc/nagios
如果您安装了 apache-tools,请创建 htpasswd.users 文件,并包含一个用户名(例如 nagiosadmin)。您将被提示添加密码。
# htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
反之,如果您不想安装 apache-tools,则可以运行以下命令
# echo -e "nagiosadmin:`perl -le 'print crypt("your_password","salt")'`" > /etc/nagios/htpasswd.users
您也可以添加其他用户,但在 Nagios 中使用该用户之前,您需要编辑 /etc/nagios/cgi.cfg。您可以将“nagiosadmin”替换为所需的用户名,或者用逗号分隔添加:nagiosadmin,yourusername,yournextusername 等。
如果安装的 nagios-plugins 的所有者/组是 root:root,则需要执行以下操作
# chown -R nagios:nagios /usr/share/nagios
Nagios 配置完成后,就可以配置 Web 服务器了。
Apache配置
如果使用 Apache HTTP Server 作为 Web 服务器,请编辑 /etc/httpd/conf/httpd.conf,并在文件末尾添加以下内容
LoadModule php5_module modules/libphp5.so Include "conf/extra/nagios.conf" Include "conf/extra/php5_module.conf"
如果您计划使用 Nagios CGI 脚本,则需要取消注释以下内容
LoadModule cgi_module modules/mod_cgi.so
复制配置文件
# cp /etc/webapps/nagios/apache.example.conf /etc/httpd/conf/extra/nagios.conf
将 Apache 用户 http 添加到 nagios 组,否则在使用 Nagios 时会收到以下错误:“无法打开命令文件 '/var/nagios/rw/nagios.cmd' 进行更新!”
# usermod -G nagios -a http
如果您仍然收到此错误,则可能需要更改该文件的权限。
# chmod 666 /var/nagios/rw/nagios.cmd
Nginx 配置
除了 php 和 php-fpm,您应该安装 fcgiwrap,否则 CGI 脚本将无法运行。
使用 nginx 时,您还需要确保 php-fm 和 fcgiwrap 服务/套接字已启动。
- 启动或重启
php-fpm.service以启用 php-fpm。 - 启动或重启
fcgiwrap.socket以启用 fcgiwrap。
示例配置
server {
server_name nagios.yourdomain.tld;
root /usr/share/nagios/share;
listen 80;
index index.php index.html index.htm;
access_log nagios.access.log;
error_log nagios.error.log;
auth_basic "Nagios Access";
auth_basic_user_file /etc/nagios/htpasswd.users;
# Fixes frames not working
add_header X-Frame-Options "ALLOW";
location ~ \.php$ {
try_files $uri = 404;
fastcgi_index index.php;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
include fastcgi.conf;
}
location ~ \.cgi$ {
root /usr/share/nagios/sbin;
rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
include fastcgi.conf;
fastcgi_pass unix:/run/fcgiwrap.sock;
}
# Fixes the fact some links are expected to resolve to /nagios, see here.
location /nagios {
alias /usr/share/nagios/share;
}
}
Lighttpd 配置
适用于 lighttpd 的示例
$HTTP["url"] =~ "^/nagios" {
alias.url = (
"/nagios/cgi-bin" => "/usr/share/nagios/sbin",
"/nagios" => "/usr/share/nagios/share"
)
$HTTP["url"] =~ "^/nagios/cgi-bin" {
cgi.assign = ( "" => "" )
}
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/etc/nagios/htpasswd.users"
auth.require = ( "" => (
"method" => "basic",
"realm" => "nagios",
"require" => "user=nagiosadmin"
)
)
}
请注意,必须允许 mod_setenv、mod_cgi、mod_alias 和 mod_auth。
PHP 配置
编辑 /etc/php/php.ini,在 open_basedir 指令中包含 /usr/share/nagios。
示例配置
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps:/etc/webapps:/usr/share/nagios
最后步骤
- 启动或重启
nagios.service以启用 Nagios。 - 启动或重启您的 Web 服务器:Apache 为
httpd.service,Nginx 为nginx.service,lightttpd 为lighttpd.service。
现在您应该可以通过浏览器使用上面使用 htpasswd 创建的用户名和密码访问 Nagios 了。
https:///nagios
监控 Arch Linux 主机
您需要 monitoring-plugins 以及 nrpe,或者使用 check_by_ssh 和无密码 SSH 来监控您的主机。
nrpe
nrpe 配置在 /etc/nrpe/nrpe.cfg 中完成,有趣的监控文件将在 /usr/share/nagios/libexec/ 中。安装后 nrpe.cfg 大部分是空的,请不要忘记编辑它。
check_by_ssh
在监控系统上,切换到运行 Nagios/Icinga/等程序的那个用户账户,运行 ssh-keygen。在要监控的 Arch 系统上创建一个同名用户,并设置一个临时密码,例如:
# useradd -m -d /home/icinga -s /bin/bash -p icinga icinga.
从监控系统运行此命令(其中 client_ipaddress 是客户端的 IP 地址)
$ ssh-copy-id client_ipaddess
回到客户端,清除临时密码。
# passwd -d icinga.
验证您是否可以从服务器登录,使用
$ ssh icinga@client_ipaddres
许多非 Arch 系统将监控插件安装到 /usr/lib/nagios/plugins,但 Arch 将它们安装到 /usr/lib/monitoring-plugins/。可能需要创建 /usr/lib/nagios 目录,并从该目录将 ../monitoring-plugins 符号链接到 plugins。
这是从命令行作为监控系统的用户运行的命令调用的一个示例
$ /usr/lib/nagios/plugins/check_by_ssh -E -H 192.168.100.11 -C "/usr/lib/nagios/plugins/check_disk -w 10 -c 5 --path=/ --units=GB"
参见
- nagios.org 官方网站
- Nagios Plugins 官方插件的家
- wikipedia.org 维基百科文章
- NagiosExchange 插件、附加组件、Nagios 邮件列表概览
- 分支
- Icinga 于 2009 年 分叉 了 Nagios。
- Naemon 于 2014 年 分叉 了 Nagios;另见 Naemon FAQ:为何分叉?