近期计划使用Nagios做个小项目,用的还不太熟,记录下来,方便后面查阅,也给新人提供一些思路。

我的环境是这样:FreeBSD7.3跑在虚拟机上,这篇先讲环境的搭建,后面再继续如何配置。

OK,先最小化安装FB,我不太喜欢用ports安装软件,觉得编译这个过程太痛苦了,所以都不怎么安装ports,当然有个不好的,直接在线安装软件包的话呢,不一定是最新的,比如这次使用的nagios,默认装的就是3.2.0,官网已经提供了3.2.1的版本了,不过没关系,如果你有兴趣,可以考虑fb8.1,我相信里面的nagios是最新版的。

好了,先安装nagios

root用户执行:#pkg_add -r nagios

 nagios1# pkg_add -r nagios
Fetching ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-7.3-release/Latest/nagios.tbz... Done.
Fetching ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-7.3-release/All/perl-5.10.1.tbz... Done.
Removing stale symlinks from /usr/bin...
Skipping /usr/bin/perl
Skipping /usr/bin/perl5
Done.
Creating various symlinks in /usr/bin...
Symlinking /usr/local/bin/perl5.10.1 to /usr/bin/perl
Symlinking /usr/local/bin/perl5.10.1 to /usr/bin/perl5
Done.
Cleaning up /etc/make.conf... Done.
Spamming /etc/make.conf... Done.
Cleaning up /etc/manpath.config... Done.
Spamming /etc/manpath.config... Done.
Fetching ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-7.3-release/All/png-1.2.42.tbz... Done.
Fetching ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-7.3-release/All/jpeg-8.tbz... Done.
Fetching ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-7.3-release/All/freetype2-2.3.11.tbz... Done.
Fetching ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-7.3-release/All/gd-2.0.35_3,1.tbz... Done.
Fetching ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-7.3-release/All/libltdl-2.2.6b.tbz... Done.
Fetching ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-7.3-release/All/libiconv-1.13.1_1.tbz... Done.
Fetching ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-7.3-release/All/libxml2-2.7.6_1.tbz... Done.
Fetching ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-7.3-release/All/php5-5.2.12.tbz... Done.
Fetching ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-7.3-release/All/gettext-0.17_1.tbz... Done.
Fetching ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-7.3-release/All/nagios-plugins-1.4.14,1.tbz... Done.
pw: unknown group `nagios'
You need a "nagios" group.
Would you like me to create it [YES]? y
Done.
pw: no such user `nagios'
You need a "nagios" user.
Would you like me to create it [YES]? yes

**********************************************************************

Enable Nagios in /etc/rc.conf with the following line:

nagios_enable="YES"

Configuration templates are available in /usr/local/etc/nagios as
*.cfg-sample files. Copy them to *.cfg files where required and
edit to suit your needs. Documentation is available in HTML form
in /usr/local/www/nagios/docs.

If you don't already have a web server running, you will need to
install and configure one to finish off your Nagios installation.
When used with Apache, the following should be sufficient to publish
the web component of Nagios (modify the allow list to suit):

<Directory /usr/local/www/nagios>
Order deny,allow
Deny from all
Allow from 127.0.0.1
php_flag engine on
php_admin_value open_basedir /usr/local/www/nagios/:/var/spool/nagios/
</Directory>

<Directory /usr/local/www/nagios/cgi-bin>
Options ExecCGI
</Directory>

ScriptAlias /nagios/cgi-bin/ /usr/local/www/nagios/cgi-bin/
Alias /nagios/ /usr/local/www/nagios/

**********************************************************************

默认就装了这些,php也给你装好了,现在先配置好nagios,让它跑起来。

#cp -r /usr/local/etc/nagios /usr/local/etc/nagios.bak

先复制一份nagios的原始配置文件,然后去到/usr/local/etc/nagios目录下面,把全部带有.cfg-sample的文件,重命名为.cfg,如:nagios.cfg-sample重命名为:nagios.cfg,其他文件也要一样。

接下来,启动nagios:在/etc/rc.conf中加入一行:nagios_enable="yes",以便nagios开机时自动启动,好了,现在可以启动nagios了:/usr/local/etc/rc.d/nagios start

接下来我们配置lighttpd

先安装lighttpd:

#pkg_add -r lighttpd

安装完成后,lighttpd的配置文件是:/usr/local/etc/lighttpd.conf

修改里面的内容,打开以下模块支持:

server.modules = (
"mod_alias",
"mod_access",
"mod_auth",
"mod_fastcgi",
"mod_cgi",
"mod_accesslog" )

找到static-file.exclude-extensions = ( ".php", ".pl", ".fcgi"),修改为:static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi" )

找到 fastcgi module这一段,把相关的注释去掉,注意配置文件已经说明了,要相应的修改php.ini这个文件,否则无法启动lighttpd

#### fastcgi module
## read fastcgi.txt for more info
## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/var/run/lighttpd/php-fastcgi.socket",
"bin-path" => "/usr/local/bin/php-cgi" #注:原文件是"bin-path" => "/usr/local/bin/php-cgi-cgi",要做下调整
)
)
)

在文件末尾增加以下内容

#这段是增加别名支持,也叫虚拟主机吧?nagios和nagios/cgi-bin的顺序不能颠倒,否则报错,原因很简单,深度匹配原则,而且别名后面不能加斜杠,如:"/nagios/cgi-bin" => "/usr/local/www/nagios/cgi-bin"不能写成:"/nagios/cgi-bin/"这样会找不到cgi-bin这个目录

alias.url =(
"/nagios/cgi-bin" => "/usr/local/www/nagios/cgi-bin",
"/nagios" => "/usr/local/www/nagios"
)

#这里是对cgi-bin目录进行cgi解析

$HTTP["url"] =~ "^/nagios/cgi-bin" {
cgi.assign = ( "" => "" )
}

#这里是对访问进行控制,我开始的时候是取消这一部分访问控制的,但是nagios的cgi执行需要校验权限(出于安全考虑),所以建议加上吧,反正也不复杂;

#因为没有使用apache,我直接使用了明文保存密码,如果使用htpasswd加密,那么要修改auth.backend这两个字段

#nagios的cgi指定了nagiosadmin这个用户,所以建议保留这个用户(虽然修改很简单),否则你要修改nagios/cgi.cfg中的一个授权字段

#密码文件一行一个用户,格式:username:password。我这里是放在/usr/local/etc/nagios/passwd文件里面,内容:nagiosadmin:admin

$HTTP["url"] =~ "nagios" {
auth.backend = "plain"
auth.backend.plain.userfile = "/usr/local/etc/nagios/passwd"
auth.require = ( "" => (
"method" => "basic",
"realm" => "nagios",
"require" => "user=nagiosadmin"
)
)
}
 

接着去修改php.ini文件,找到 cgi.fix_pathinfo = 1这一行,取消注释

好了,还有几个步骤让lighttpd顺利的抛弃里

#touch /var/log/lighttpd.error.log
#touch /var/log/lighttpd.access.log
#chown -R www:www /var/log/lighttpd.*
#mkdir -p /var/run/lighttpd
#chown -R www:www /var/run/lighttpd/

在rc.conf中注册lighttpd

#echo 'lighttpd_enable="YES"' >> /etc/rc.conf

这时候可以启动lighttpd进行测试了:/usr/local/etc/rc.d/lighttpd start

如果有错误呢,可以查看这个文件:/var/log/lighttpd.error.log,根据错误提示信息进行相应的修改。

用浏览器访问:http://10.151.65.170/nagios

没有问题。