nagios 安装配置 详解
我之前用过cacti,munin这二种服务器监测工具,下面我将详细讲解一下nagios的安装配置过程,nagios安装比较简单,但是配置是比较复杂,这篇文章只是安装配置的第一篇。都放到一篇博客里面写,文章会过长。
一,cacti,munin,nagios的比较
cacti安装比较麻烦,配置也比较复杂,不过插件还是比较多的。web界面做的比较美观。有一点我不喜欢用它,就是它用到mysql数据库,数据库这一块本来就是网站性能的瓶颈所在,测控工具还要数据库,这是我所不能接受的。想了解cacti请参考linux cacti 服务器监控 安装配置
munin是我目前为止最喜欢的一种服务器监控工具,安装配置简单,不光是单服务器,还是多服务器。还有它不要用mysql数据库。唯一要的就是web服务。想了解munin,请参考linux munin 服务器监控 安装配置
nagios是我准备要用的监控工具,它不要mysql支持,它可以提供服务器警告功能,例如当服务器down机,它会发邮件通知,或者是短消息通知,这一点就比较好了。如果管理的服务器太多,就不要整天盯着监控看了。就是配置起来比较麻烦一点。发邮件是要邮件服务器支持的,请参考前几天写的postfix安装配置。
二,安装nagios及所要的安装包
[root@localhost etc]# yum install nagios-plugin nagios nrpe fcgi-devel fcgi nagios-plugins-all
fcgiwrap下载地址 http://github.com/gnosek/fcgiwrap/tarball/master
[root@localhost download]# tar zxvf 你下载的版本.tar.gz [root@localhost download]# cd gnosek-fcgiwrap-1328862/ [root@localhost gnosek-fcgiwrap-1328862]# autoreconf -i [root@localhost gnosek-fcgiwrap-1328862]# ./configure [root@localhost gnosek-fcgiwrap-1328862]# make gcc -std=gnu99 -Wall -Wextra -Werror -pedantic -O2 -g3 fcgiwrap.c -o fcgiwrap -lfcgi [root@localhost gnosek-fcgiwrap-1328862]# cp fcgiwrap /usr/local/bin/
autoreconf -i 一下,因为里面是没有configure的,./configure的时候不用加参数的。如果./configure报以下错误configure: error: FastCGI library is missing,那是缺少了fcgi-devel这个包的。
在这里说明一下,
1,nagios-plugin这只是一个插件的外壳,里面并没有插件。
2,nagios这是服务端要装的软件
3,nrpe这是监控端要装的软件
4,nagios-plugins-all这是nagios的所有插件,你也可以选择性的装,yum list nagios-plugins*
5,fcgi-devel,fcgi,fcgiwrap是用来运行.cgi程序的
6,web服务相关的软件我都装过了,所以在上面我就没有列出来了,我用的是Nginx+php-cgi+spawn-fcgi,如果是没有装过的话,这些是要装一下的。我博客里面有,可以搜一下。
三,nagios,nrpe的配置文件
[root@localhost nagios]# tree . ├── cgi.cfg //控制cgi访问的配置文件 ├── conf.d │ └── internet.cfg //监控其他服务器的例子配置文件 ├── nagios.cfg //nagios的主配置文件 ├── nrpe.cfg //被监控服务器的配置文件 ├── objects │ ├── commands.cfg //命令定义配置文件,里面定义的命令可以被其他文件引用 │ ├── contacts.cfg //定义联系人和联系人组的配置文件,用于发邮件和短信 │ ├── localhost.cfg //本机监控的配置文件 │ ├── printer.cfg //监控打印机的配置文件 │ ├── switch.cfg //监控路由器,交换机的配置文件 │ ├── templates.cfg //配置的模块文件 │ ├── timeperiods.cfg //定义nagios时间段的配置文件 │ └── windows.cfg //定义监控windows的的配置文件 ├── passwd //用户访问控制文件 └── private └── resource.cfg //定义$USERx$的配置文件
这些配置文件我都没有改变的,这篇只是简单的安装和配置
三,启动nagios,nrpe,并查看
//启动 /etc/init.d/nrpe start spawn-fcgi -f /usr/local/bin/fcgiwrap -a 127.0.0.1 -p 9001 -F 3 -P /var/run/fastcgi-c.pid /etc/init.d/nagios start //查看 [root@localhost private]# netstat -tpnl |grep nagios [root@localhost private]# ps -e|grep nagios 2939 ? 00:00:02 nagios [root@localhost private]# ps -e|grep nrpe 2924 ? 00:00:00 nrpe [root@localhost private]# ps -e|grep fcgiwrap 2927 ? 00:00:00 fcgiwrap 2928 ? 00:00:00 fcgiwrap 2929 ? 00:00:00 fcgiwrap
四,配置Nginx
[root@localhost conf.d]# pwd /etc/Nginx/conf.d [root@localhost conf.d]# cat nagios.conf # # A virtual host using mix of IP-, name-, and port-based configuration # server { listen 10001; server_name www.test.com; index index.php; root /usr/share/nagios/html; location ~ .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { rewrite ^/nagios/images/(.*) /images/$1 break; //注释1 expires 30d; } location ~ .*\.(js|css)?$ { rewrite ^/nagios/stylesheets/(.*) /stylesheets/$1 break; //注释1 expires 1h; } location ~ .*\.cgi$ { root /usr/lib64/nagios/cgi-bin; //注释2 rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break; //注释3 fastcgi_pass 127.0.0.1:9001; fastcgi_index index.cgi; include fastcgi.conf; } }
注释1,在这里为什么我要加一个重写呢,加载css和图片的路径不对
<LINK REL='stylesheet' TYPE='text/css' HREF='/nagios/stylesheets/common.css'> <LINK REL='stylesheet' TYPE='text/css' HREF='/nagios/stylesheets/notifications.css'>
web目录 /usr/share/nagios/html;的根目录下面根本就没有nagios这个目录,css样式和图片根本加载不上,页面很丑。
注释2,/usr/lib64/nagios/cgi-bin这个目录是cgi的可执行文件
[root@localhost conf.d]# ls /usr/lib64/nagios/cgi-bin/ avail.cgi config.cgi histogram.cgi notifications.cgi showlog.cgi statusmap.cgi statuswrl.cgi tac.cgi cmd.cgi extinfo.cgi history.cgi outages.cgi status.cgi statuswml.cgi summary.cgi trends.cgi
注释3,当是cgi文件时,root路径是发生改变的,并且上面我是把这个root直接指定到cgi-bin这个目录,在/usr/share/nagios/html/config.inc.php过个文件里面,有下面这个配置,又是带目录的,所以我又加了一个重写,
$cfg['cgi_base_url']='/nagios/cgi-bin';
Nginx配置好后,重新加载一下配置/etc/init.d/nginx reload
这样我们就可以能过url来访问了 http://www.test.com:10000,看下图