Nagios安装配置
目录
Nagios是一个开源的系统和网络监控程序,它检测主机和服务,当异常发生和解除时能提醒用户。在此,我把自己在服务器上折腾的过程小记一下……
简介
Nagios作为一款开源的监控软件,历史可谓源远流长。它可以进行各种网络服务的监控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH),主机资源监控(CPU load、disk usage、system logs),也包括Windows主机(使用NSClient++ plugin),同时还可以指定自己编写的Plugin通过网络收集数据来监控任何情况(温度、警告……),可以通过配置Nagios远程执行插件远程执行脚本。
Nagios Core,作为nagios的核心组件,搭建监控平台必不可少;同时,它也包含了一个基本的web界面,可以方便用户进行查看。
Nagios Plugins,包含了监控各种指标的插件,例如CPU负载,内存使用,网络PING等。
NRPE,也即是Nagios Remote Plugin Executor,它属于nagios的一个addon,默认情况下不需要安装。但如果我们搭建的Nagios监控平台需要对其他远程主机进行监控,那么NRPE必不可少,其主要包含了check_nrpe 插件(安装在监控平台),NRPE daemon程序(运行在需要监控的主机,负责执行check_nrpe发送过来的命令并将结果返回监控平台)。
安装
在这里,我们安装的是Nagios 4,Ubuntu 14.04官方源只提供了nagios 3的版本,因此我们将从源码进行安装。
Prerequisites
- 安装PHP运行环境
- 安装Nginx
- 安装依赖的库:
$ sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev php5-fpm spawn-fcgi fcgiwrap
Nagios Core
到官网下载最新的软件源码包,然后解压编译安装:
$ tar xvf nagios-*.tar.gz $ cd nagios-* # 配置这里,如果你需要使用postfix,可以添加 --with-mail=/usr/sbin/sendmail (不过我在这里配置了后续发送邮件出错,修改为默认的mail。。。) $ ./configure --with-nagios-group=nagios --with-command-group=nagcmd $ make all $ sudo make install $ sudo make install-commandmode $ sudo make install-init $ sudo make install-config # 另外我们也可以为web界面安装其他的主题 # - This installs the Exfoliation theme for the Nagios web interface $ make install-exfoliation # - This installs the classic theme for the Nagios web interface $ make install-classicui
因为我们需要通过web界面来向nagios请求执行命令,因为我们需要将 web server 的用户(www-data)添加到 nagcmd 用户组:
$ sudo usermod -G nagcmd www-data
设置开机启动:
$ sudo update-rc.d -f nagios defaults
Nagios Plugins
到官网下载最新的软件源码包,然后解压编译安装:
$ tar xvf nagios-plugins-*.tar.gz $ cd nagios-plugins-* $ ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl $ make $ sudo make install
配置
修改监控通知email,/usr/local/nagios/etc/objects/contacts.cfg :
define contact { …… # 修改email为你的邮箱 email xxxxx@xx.com }
修改监控email的发送命令, /usr/local/nagios/etc/objects/commands.cfg:
define command{ command_name notify-host-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOS TSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -a "From:Nagios@chenjiehua.me" -s "* * $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$ } define command{ command_name notify-service-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHos t: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | / usr/bin/mail -a "From:Nagios@chenjiehua.me" -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CO NTACTEMAIL$ }
检查配置文件有没有错误:
$ sudo /opt/nagios/nagios/bin/nagios -v /etc/nagios/nagios.cfg # 一切ok之后,重启服务 $ sudo service nagios restart
配置nginx访问,添加nginx配置文件 /etc/nginx/sites-enabled/nagios:
server { listen 80; server_name xxxxx.com; index index.html index.htm index.php; root /usr/local/nagios/share; auth_basic "Restricted Access!"; auth_basic_user_file /home/ubuntu/htpasswd.users; location / { try_files $uri $uri/ index; } location /nagios { alias /usr/local/nagios/share; } location ~ ^/nagios/(.*\.php)$ { alias /usr/local/nagios/share/$1; include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; } location ~ \.cgi$ { root /usr/local/nagios/sbin/; rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break; fastcgi_param AUTH_USER $remote_user; fastcgi_param REMOTE_USER $remote_user; include fastcgi_params; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; } }
添加nagios web访问限制:
$ htpasswd -b /home/ubuntu/htpasswd.users nagiosadmin xxxpasswordxxx
重启一下nginx,应该就可以看到Nagios的运行情况了。
监控其他主机(NRPE)
目前Nagios只监控了localhost的一些相关参数指标,如果我们需要监控其他主机,那么就需要安装nrpe了。为了方便起见,我们简称上面配置的Nagios监控平台服务器为Agent,被监控的主机为Remote。
Agent配置
首先,在Agent上面安装nrpe-plugin,下载最新版本,然后解压编译安装:
$ tar xvf nrpe-*.tar.gz $ cd nrpe-* $ ./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu $ make all # 作为监控平台的服务器只需要安装 nrpe-plugin 就行了,无需安装daemon $ sudo make install-plugin
安装完成后,我们就可以在 /usr/local/nagios/libexec 这个目录下面看到多了一个 check_nrpe 的可执行文件,然后进行配置。
添加 check_nrpe 命令:
$ sudo vim /usr/local/nagios/etc/objects/commands.cfg # 在文件末尾添加 define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
修改 /usr/local/nagios/etc/nagios.cfg:
$ sudo vim /usr/local/nagios/etc/nagios.cfg # 取消这一行的注释 #cfg_dir=/usr/local/nagios/etc/servers sudo mkdir /usr/local/nagios/etc/servers
添加服务器配置文件,假设Remote为remotehost,添加/usr/local/nagios/etc/servers/remotehost.cfg:
define host { use linux-server host_name remotehost alias My web server address 10.132.234.52 max_check_attempts 5 check_period 24x7 notification_interval 30 notification_period 24x7 }
添加了上面的内容,Nagios只会监控该服务器是否启动(up?down),我们继续添加:
# PING define service { use generic-service host_name remotehost service_description PING check_command check_ping!100.0,20%!500.0,60% } # SSH define service { use generic-service host_name remotehost service_description SSH check_command check_ssh notifications_enabled 0 }
正常情况下,PING和SSH即使Remote没有运行NRPE daemon也可以进行监控,因为它们不许要登录到Remote获取数据。
添加一个CPU负载的监控:
define service{ use generic-service host_name remotehost service_description CPU Load check_command check_nrpe!check_load }
修改完成后,记得重启Nagios服务: sudo service nagios restart
Remote配置
Remote机器上面需要安装的软件有:Nagios-Plugins,NRPE daemon。Plugins的安装跟上面的类似,这里不重复了;NRPE 的安装与配置:
- 从源码安装:
# 接上面Agent的安装 $ sudo make install-daemon $ sudo make install-daemon-config
- apt安装:
# 就为了图个省心方便 ^_^ $ sudo apt-get install nagios-plugins nagios-nrpe-server
修改nrpe配置文件,/etc/nagios/nrpe.cfg:
# 添加Agent的ip地址 allowed_hosts=127.0.0.1,10.132.224.168
重启服务,测试是否正常:
$ sudo service nagios-nrpe-server start # 在Agent上执行check_nrpe命令测试 $ /usr/local/nagios/libexec/check_nrpe -H remotehost_ip NRPE v2.15
显示NRPE的版本号,则表示安装正常。
监控项配置
在 Remote 的 /etc/nagios/nrpe.cfg 中,我们可以看到许多相关命令:
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10 command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20 command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1 command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200
参考:
http://www.tokiwinter.com/installing-nagios-under-nginx-on-ubuntu-14-04-lts/
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/toc.html
评论