我的Nagios安装配置笔记
部门里负责运维的只有我一个人,所以服务器出了任何问题都得由我来处理,为了及时处理各种无法预料的问题,就借nagios搭建了一个服务器集群监控平台。
以前用的是一个php自己写的,不稳定,误报率非常高,考虑到以后集群规模会比较大,国内网络条件也不是很好,所以做了这个平台来管理,明显减少了误报,什么原因出现什么样的报警也一清二楚,很方面。总结了一下安装配置的过程,放博客上与大家分享。文中不正之处,欢迎留言指出!有任何问题也可以留言提问。
一、安装前信息收集
首先确定一下相关变量
查看apache指定的CGI目录,在Apache安装目录下的bin目录中,执行
./suexec -V
查看AP_DOC_ROOT项,这项配置的路径就是我们要将nagios安装到的目录,这个路径涉及到CGI的安全问题,在多次尝试之后我总结出来,不要尝试在编译apache时指定suexec的路径了,我这儿没用,还是干脆直接用默认的好了。此处以本机的/usr/local/apache2/htdocs/nagios为例
查看Apache使用的用户
grep ^User --after-contex=1 httpd.conf
此处以本机的www为例
二、安装过程
解压
tar xzvf nagios-$version.tar.gz
编译安装
./configure --prefix=/usr/local/apache2/htdocs/nagios --with-nagios-user=www --with-nagios-group=www --with-command-user=www --with-command-group=www --with-gd-lib=/usr/local/gd2/lib --with-gd-inc=/usr/local/gd2/include --with-init-dir=/etc/init.d --with-httpd-conf=/usr/local/apache2/conf/extra make all make install make install-commandmode make install-config make install-init
列目录
ls /usr/local/apache2/htdocs/nagios/
查看是否有bin、etc、include、libexec、sbin、share、var这几个目录,有则说明nagios已经正常安装好了。
下面安装插件
tar xzvf nagios-plugins-$version.tar.gz
编译安装
./configure --prefix=/usr/local/apache2/htdocs/nagios --with-mysql=/usr/local/mysql --with-libiconv-prefix=/usr/local make make install
列目录
ls /usr/local/apache2/htdocs/nagios/libexec
看到很多check_xxxx说明安装成功了。
到此Nagios需要安装的都安装好了,接下来就是配置了,见下页。
三、配置nagios
首先,为nagios从网络访问生成用户认证,即在打开nagios监控页面时提示登陆
/usr/local/apache2/bin/htpasswd -c /usr/local/apache2/htdocs/nagios/share/.htpasswd nagios
说明:第一次使用时需用参数-c,之后添加用户时不需要再加-c参数而可以直接添加用户。
添加对Nagios的配置
先查看启用的模块,请确保与用户验证相关的模块都启用了,比如mod_authn_file类似的几个模块。
#在<IfModule alias_module>段中,注释掉下面一行: ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" #添加下面两行: ScriptAlias /nagios/cgi-bin "/usr/local/apache2/htdocs/nagios/sbin/" Alias /nagios "/usr/local/apache2/htdocs/nagios/share/" #在<IfModule alias_module>段外添加两段针对这两个目录的权限设置 <Directory "/usr/local/apache2/htdocs/nagios/sbin"> Options ExecCGI AllowOverride none Order allow,deny Allow from all AuthName "Nagios Access" AuthType Basic AuthUserFile /usr/local/apache2/htdocs/nagios/share/.htpasswd Require valid-user </Directory> <Directory "/usr/local/apache2/htdocs/nagios/share"> Options None AllowOverride none Order allow,deny Allow from all AuthName "Nagios Access" AuthType Basic AuthUserFile /usr/local/apache2/htdocs/nagios/share/.htpasswd Require valid-user </Directory>
保存之后重启apache服务
配置/usr/local/apache2/htdocs/nagios/etc/nagios.cfg
#注释掉 cfg_file=/usr/local/apache2/htdocs/nagios/etc/localhost.cfg #注释去掉: cfg_file=/usr/local/apache2/htdocs/nagios/etc/contacts.cfg 联系人配置文件路径 cfg_file=/usr/local/apache2/htdocs/nagios/etc/timeperiods.cfg 监视时段配置文件路径 cfg_dir=/usr/local/apache2/htdocs/nagios/etc/servers 每个主机分别配置需监视的服务 #添加下面的行 cfg_file=/usr/local/apache2/htdocs/nagios/etc/hosts.cfg 主机配置文件路径
检查一下配置文件中nagios的user和group是不是www。
配置/usr/local/apache2/htdocs/nagios/etc/cgi.cfg
use_authentication=1 default_user_name=nagios authorized_for_system_information=nagiosadmin,nagios authorized_for_configuration_information=nagiosadmin,nagios authorized_for_system_commands=nagios authorized_for_all_services=nagiosadmin,nagios authorized_for_all_hosts=nagiosadmin,nagios authorized_for_all_service_commands=nagiosadmin,nagios authorized_for_all_host_commands=nagiosadmin,nagios
配置/usr/local/apche2/htdocs/nagios/etc/object/command.cfg,添加短信报警的命令,本人用的是winic的服务,如果你需要飞信之类的报警设置,可以google一下。
#host-notify-by-sms 发送短信报警 define command { command_name host-notify-by-sms command_line xxxxxxxxxxxxxxxxxxxxxxx } #service notify by sms 发送短信报警 define command { command_name service-notify-by-sms command_line xxxxxxxxxxxxxxxxxxxxxxxx }
配置/usr/local/apache2/htdocs/nagios/etc/object/contact.cfg,添加用户信息,在“{}”中可以用“;”注释,之外则用“#”进行注释
define contact{ contacy_name nagios alias nagios administrator user service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notificetion_options d,u,r service_notification_commands notify-service-by-email,notify-service-by-sms host_notification_commands notify-host-by-email,notify-host-by-sms email njutczd@gmail.com }
说明:w-warning , u-unknown,c-critical,r-recovery;d-down,u-unreachable
别忘记在contactgroup中添加这个用户
配置/usr/local/apache2/htdocs/nagios/etc/object/hosts.cfg,一个示例配置如下:
#注释 define host {< host_name 主机名 alias 主机别名 address 主机IP check_command check-host-alive contact_groups admins check_interval 5 retry_interval 1 check_period 24x7 max_check_attempts 3 notifications_enabled 1 notification_interval 2 notification_period 24x7 notification_options d,u } #定义一个主机组 define hostgroup{ hostgroup_name Linux alias Server-Linux members 主机名;主机名之间以“,”分隔 }
配置/usr/local/apache2/htdocs/nagios/etc/servers/主机名.cfg
#注释 define service { host_name 主机名 service_description check_http check_command check_http check_period 24x7 check_interval 5 max_check_attempts 3 retry_interval 1 contact_groups admins notification_interval 10 notification_period 24x7 notification_options w,u,c }
检查配置是否正确
/usr/local/apache2/htdocs/nagios/bin/nagios -v /usr/local/apache2/htdocs/nagios/etc/nagios.cfg
如果没有报错或警告,用下面的命令启动它
/etc/init.d/nagios start
用你刚刚设置的用户名和密码登陆http://IP/nagios来查看监控情况,别忘了加进开机启动,随你用什么方法。
为了监控更全面,更精确,一般我们安装nrpe来实现这样的目的,请见下页。
四、NRPE扩展
在监控端,编译安装NRPE
tar xzf nrpe-$version.tar.gz cd nrpe-$version ./configure make all make install-plugin
配置监控端的NRPE,在/usr/local/apache2/htdocs/nagios/etc/commands.cfg中,添加内容如下:
#check_nrpe!args define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
为主机添加NRPE检测项目
define service{ host_name 主机名 service_description check_nrpe_load check_command check_nrpe!check_load;“!”之后的内容为参数,即要检测的远程的内容 check_period 24x7 check_interval 5 max_check_attempts 3 retry_interval 1 contact_groups admins notification_interval 10 notification_period 24x7 notification_options w,u,c,r }
同样的检查配置是否正确,正确之后重启nagios生效
在被监控端编译安装NRPE,先确定这台服务器上apache使用的用户,这里以www为例。之后安装nagios-plugins
tar xzvf nagios-plugins-1.4.15.tar.gz cd nagios-plugins-1.4.15 ./configure --prefix=/usr/local/nagios --with-nagios-user=www --with-nagios-group=www --with-mysql=/usr/local/mysql --with-libiconv-prefix=/usr/local make && make install chown -R www:www /usr/local/nagios
安装NRPE,以独立服务的模式安装
tar xzvf nrpe-2.12.tar.gz cd nrpe-2.12 ./configure --prefix=/usr/local/nagios --with-nrpe-user=www --with-nrpe-group=www --with-nagios-user=www --with-nagios-group=www make all make install-plugin make install-daemon make install-daemon-config
为NRPE添加配置
#给allowed_hosts添加允许的IP allowed_hosts=127.0.0.1,192.168.100.3 #检查用户和组是否编译时候设置的www #编辑最后部分的命令,添加你需要的命令配置,这里的命令即在监控端配置时用的check_nrpe的感叹号之后可用的命令
配置好之后通过下面的命令来启动NRPE服务
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d然后用下面的命令看看NRPE是否生效了
ps -A | grep nrpe netstat -tulnp | grep 5666
用下面的命令看能否正常访问
/usr/local/nagios/bin/nrpe -H 127.0.0.1
如果看到返回的是NRPE的版本号那就成功了。
成功之后别忘将其加入开机启动
echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d" >> /etc/rc.local
使用防火墙的朋友需要注意,监控端和被监控端必须开放NRPE用于通信的5666端口,iptables可以用下面的命令限制只允许某IP访问5666端口
iptables -A INPUT -p tcp -s 192.168.100.3 --dport 5666 -j ACCEPT iptables -A OUTPUT -p tcp -d 192.168.100.3 --sport 5666 -j ACCEPT
关于iptables的详细用法,可以参照我另一篇博文《我的iptables总结》,里面有更详细的iptables规则介绍。
我的nagios笔记到此告一段落,后续会有更多如何配置Nagios监控的文章,与大家分享。
mark下
@freetstar:多谢支持!
从Sir坛跟过来的,向你学习
博主确实厉害,不过ke太的事也真够麻烦的,一个人累啊
@捷安特自行车:现在还好了,问题处理的差不多了,哈哈
很详细...