Nagios
Nagios 是一个开源的主机、服务和网络监控程序。它监控指定的主机和服务,并在出现任何正在 developing 的问题、错误或改进时向您发出警报。本文描述了 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
将您刚刚复制的所有文件的所有者/组设置为 nagios/nagios
# chown -R nagios:nagios /etc/nagios
如果您已安装 apache-tools,则使用用户名 (例如 nagiosadmin) 创建 htpasswd.users 文件。系统将提示您添加密码。
# 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 服务器 作为 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 服务/套接字已启动
配置示例
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 服务器:
httpd.service
用于 Apache,nginx.service
用于 Nginx,以及lighttpd.service
用于 lightttpd。
现在您应该能够使用您上面使用 htpasswd 创建的用户名和密码通过 Web 浏览器访问 nagios
https://127.0.0.1/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
在监控系统上,su 到 Nagios/Icinga/whatever 运行的用户帐户,运行 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 插件 官方插件的主页
- wikipedia.org 维基百科文章
- NagiosExchange Nagios 插件、附加组件、邮件列表概述
- 分支
- Icinga 在 2009 年 fork 了 Nagios
- Naemon 在 2014 年 fork 了 Nagios;另请参阅 Naemon FAQ:为什么要 fork?