nagios简介
Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
Nagios原名为NetSaint,由Ethan Galstad开发并维护至今。NAGIOS是一个缩写形式: "Nagios Ain't Gonna Insist On Sainthood" Sainthood 翻译为圣徒,而"Agios"是"saint"的希腊表示方法。Nagios被开发在Linux下使用,但在Unix下也工作得非常好。
主要功能:
1.网络服务监控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH,mysql)
2.主机资源监控(CPU load、disk usage、system logs),也包括Windows主机(使用NSClient++ plugin)可以指定自己编写的Plugin通过网络收集数据来监控任何情况(温度、警告……)可以通过配置Nagios远程执行插件远程执行脚本
3.远程监控支持SSH或SSL加通道方式进行监控简单的plugin设计允许用户很容易的开发自己需要的检查服务,支持很多开发语言(shell scripts、C++、Perl、ruby、Python、PHP、C#等)包含很多图形化数据Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)
4.可并行服务检查能够定义网络主机的层次,允许逐级检查,就是从父主机开始向下检查
当服务或主机出现问题时发出通告,可通过email, pager, sms 或任意用户自定义的plugin进行通知
5、能够自定义事件处理机制重新激活出问题的服务或主机
• 自动日志循环
• 支持冗余监控
• 包括Web界面可以查看当前网络状态,通知,问题历史,日志文件等
Nagios工作原理
Nagios的功能是监控服务和主机,但自身并没有该功能,所有的监控、检测功能都是通过插件来完成。
Nagios周期性调用插件检测服务器状态,并维持一个队列,所有插件返回状态信息都进入队列,Nagios每次从队首开始读取信息,并把状态通过web显示。
Nagios提供了许多插件,利用这些插件可以监控服务状态。安装完成后,在nagios主目录下/libexec放有nagios自带所有插件,如check_disk检查磁盘空间插件,check_load检查CPU负载等等。每一个插件可运行./check_xxx –h 查看其使用方法和功能
工作原理图如下:
插件:
Nagios安装与配置
环境:centos7
一.nagios相关软件安装
环境准备
安装基础编译环境软件
yum install php gcc glibc glibc-common unzip gd gd-devel –y
解决perl编译问题
echo "export LC_ALL=C" >> /etc/profile
解决时间同步问题
crontab -e
/10 * /bin/sh /usr/sbin/ntpdate.sh >/dev/null 2>&1
[root@centos7 ~]# cat /usr/sbin/ntpdate.sh
#!/bin/bash
ntpdate 182.92.12.11
1.创建nagios用户及相关的组
useradd -m nagios
passwd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apache
2.Nagios服务端安装
下载nagios服务端软件及插件
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.2.1.tar.gz
wget https://nagios-plugins.org/download/nagios-plugins-2.1.2.tar.gz
3. 源码编译安装nagios以及相关插件
tar zxf nagios-4.2.1.tar.gz
cd nagios-4.2.1
./configure --with-command-group=nagcmd
没有提示任何错误出现以下画面说明配置成功
接下来安装提示进行编译
make all
编译安装并初始化配置文件
make install
make install-init
make install-config
make install-webconf
make install-commandmode
4、配置邮件联系人信息
配置文件在目录 /usr/local/nagios/etc 下,通过这些基础配置信息可以直接启动 Nagios,现在唯一需要更改的是联系人信息,可以编辑 /usr/local/nagios/etc/objects/contacts.cfg ,将联系人邮件地址换成你自己的。
若系统中需通过安装sedmail来发送邮件
yum install sendmail sendmail-cf
5.为nagios创建登录web界面的密码
htpasswd -c /usr/local/nagios/etc/htpasswd.users admin
6. 编译安装nagios插件
tar zxf nagios-plugins-2.1.2.tar.gz
cd nagios-plugins-2.1.2
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
7. 设置nagios服务开机自启并启动ngios
设置开机自启
systemctl enable nagios
chkconfig --list |grep nagios
nagios 0:off 1:off 2:on 3:on 4:on 5:on 6:off
启动nagios服务
systemctl start nagios
检查是否启动成功
systemctl start nagios
ps -ef |grep nagios
检查nagios主配置文件语法是否正确
[root@centos7 ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
只需要看;
Total Warnings: 0
Total Errors: 0
接下来在浏览器输入 http://服务器ip地址/nagios登陆nagios,用户名和密码为第五步用htpasswd设置的,
二.验证nagios服务端的监控功能,如实现监控服务器对被监控服务器磁盘负载情况的监控。
本环境针对本机配置
1.下载安装nrpe
wget https://jaist.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
tar zxf nrpe-2.15.tar.gz
cd nrpe-2.15
./configure
make all
make install-plugin
make install-daemon
2.在nagios-client以同样的方式安装nigios-plugins插件和nrpe即可,详细安装步骤参考上文。
3. server-client端配置
1)加入可以监控当前client的nagios-server端的ip地址如下
allow_hosts=127.0.0.1
如果是其他的服务器修改为具体ip即可,比如:
sed -i 's/allowed_hosts=127.0.0.1/allowed_hosts=192.168.97.197/g' /usr/local/nagios/etc/nrpe.cfg
可用vi编辑nrpe的配置文件/usr/local/nagios/etc/nrpe.cfg修改大约在79行(说明:原文这里按照配置没找到,需要使用find查找下)
这里用sed命令修改,检查是否修改成功
2)/usr/local/nagios/etc/nrpe.cfg文件结尾添加要监控的插件
圈圈部分为默认监控的插件,如果需要监控其他内容,可添加并安装相关的插件,本实验监控的是磁盘负载check_load,已包含在默认监控的内容里面了
4) 启动nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
设置开机自启
echo “/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d” >> /etc/rc.local
检查服务是否启动成功
[root@centos7 bin]# netstat -lnt |grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN
tcp6 0 0 :::5666 :::* LISTEN
[root@centos7 bin]# lsof -i :5666
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nrpe 57805 nagios 4u IPv4 3737184 0t0 TCP *:5666 (LISTEN)
nrpe 57805 nagios 5u IPv6 3737185 0t0 TCP *:5666 (LISTEN)
nrpe端口和进程都存在说明nrpe启动成功。
提示:重启nrpe 可以先用killall杀掉nrpe进程再启动即可
4. Nagios-server端配置。
1)创建host.cfg主机文件添加被监控的主机
这里使用lohosthost.cfg作为模板取前51行作为host.cfg的模板
head -51 /usr/local/nagios/etc/objects/localhost.cfg > /usr/local/nagios/etc/objects/hosts.cfg
用vi编辑hosts.cfg改为以下内容
授权
chwon -R nagios.nagios /usr/local/nagios/etc/objects/hosts.cfg
2)创建services.cfg监控服务文件添加要监控的服务
touch /usr/local/nagios/etc/objects/services.cfg
chown -R nagios.nagios /usr/local/nagios/etc/objects/hosts.cfg
编辑 /usr/local/nagios/etc/objects/services.cfg文件输入如下内容
vi /usr/local/nagios/etc/objects/services.cfg
define service {
use generic-service ;使用templates.cfg模板的监控参数
host_name nagios-client ;被监控服务端的主机名
service_description check load
check_command check_nrpe!check_load ;要监控的服务命令
}
注意:默认使用templates.cfg模板监控的参数,若不需要,可自行定义
3)在commands.cfg 中加入check_nrp插件配置
编辑/usr/local/nagios/etc/objects/commands.cfg 在文件结尾添加以下内容
define command{
command_name check_nrpe
command_line $USER1$check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
4) 检查nagios主配置文件并重启
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
重启
/etc/init.d/nagios reload
Reloading nagios configuration (via systemctl): [ OK ]
5) 客户端测试是否有监控的主机及服务
打开浏览器出现了以下画面并没有成功监控到主机以及相关的服务,之前配置登录名admin没有足够的权限来访问cgi
解决方法:
把cgi.cfg的nagiosadmin全部替换成admin(我们之前设置的登录名)
sed -i 's/nagiosadmin/admin/g' /usr/local/nagios/etc/cgi.cfg
检查语法并重启nagios
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
重启
/etc/init.d/nagios reload
Reloading nagios configuration (via systemctl): [ OK ]
打开浏览器访问
可以看到被监控的主机的相关信息
4.排错
如果有什么问题请查看nagios的错误日志
[root@centos7 bin]# tail -100 /usr/local/nagios/var/nagios.log
[1543289398] Nagios 4.2.1 starting... (PID=37613)
[1543289398] Local time is Tue Nov 27 11:29:58 CST 2018
[1543289398] LOG VERSION: 2.0
[1543289398] qh: Socket '/usr/local/nagios/var/rw/nagios.qh' successfully initialized
[1543289398] qh: core query handler registered
[1543289398] nerd: Channel hostchecks registered successfully
[1543289398] nerd: Channel servicechecks registered successfully
[1543289398] nerd: Channel opathchecks registered successfully
[1543289398] nerd: Fully initialized and ready to rock!
[1543289398] wproc: Successfully registered manager as @wproc with query handler
[1543289398] wproc: Registry request: name=Core Worker 37617;pid=37617
[1543289398] wproc: Registry request: name=Core Worker 37616;pid=37616