NAGIOS安装配置+MUTT+MSMTP邮件报警设置

由于服务器更新,所以公司重新部署了架构,需要一个监控,因此提前在虚拟机里过了一遍,整理出安装NAGIOS监控的过程,仅供大家参考。
大环境:
两台linux主机(已经关闭了selinux和iptables功能)
192.168.1.184和192.168.1.190
192.168.1.184这台机器上安装了nagios,监控190这台机器上的服务和端口
首先,准备好nagios安装包:
下面是我的百度云,我用的是nagios4.0.8版本,系统是redhat6.7版本(其实是centos系统)(请注意:本教程不适用于Linux7系统)。
百度云盘连接:
(差别不会太大,也可以到官网下载最新的。)
一、安装nagios
首先是安装nagios所需要的环境:

yum install php-* gcc httpd -y

解压安unzip nagiosip是专门解压zip格式文件的命令,非常方便。
如果没有unzip,yum一下就可以
yum install unzip -y
创建一个叫做Nagios的
useradd nagios
cd Nagios/nagios-4.0.8 ##进入路径
./configure –prefix=/usr/local/nagios ##指定安装路径
make all ##以下几个make都是编译用的,可以直接复制,手打有时会报错
make install
make install-init
make install-commandmode
make install-config
make install-webconf
如果这里有报错,有可能是没有安装perl,yum安装一下就好了
yum install perl -y
别的报错,根据报错的提示去安装相应的缺失的包就可以了。
没有报错然后:
为nagios的网页登录创造认证密码:
htpasswd -cm /usr/local/nagios/etc/htpasswd.users nagios
password:**** ##会提示输入两次以确认
htpappwd命令的参数:
-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,直接显示密码
-m 使用MD5加密(默认)
-d 使用CRYPT加密(默认)
-p 使用普通文本格式的密码
-s 使用SHA加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户
启动服务
/etc/init.d/nagios restart ##重启nagios ,也可以用service nagios restart
/etc/init.d/httpd restart ##重启apache,service httpd restart
到这里,其实已经可以通过浏览器输入192.168.1.184/nagios来进入nagios管理界面了,说明安装成功。

编辑httpd主配置文件
vim /etc/httpd/conf/httpd.conf
把user和group后面的apache改成nagios
User apache
Group apache
改为
User nagios
Group nagios
将nagios里的cgi.cfg里的nagiosadmin替换为nagios:
vim /usr/local/nagios/etc/cgi.cfg
输入shift+:号:
%s/nagiosadmin/nagios/g
因为更改了apache和nagios的配置文件,需要重启两个服务:
/etc/init.d/httpd restart ##或者service httpd restart
/etc/init.d/nagios restart ##或者service nagios restart
解压插件包:
tar fx nagios-plugins-2.0.3.tar ##解压(安装包在我这个打包的文件中的nagios_software目录下)
cd nagios-plugins-2.0.3
./configure –prefix=/usr/local/nagios/ ##指定安装路径
make && make install ##编译安装,两个&符号表示上一个执行成功的话,接着执行下一个

到这里安装就基本完毕了,开始进行配置文件的操作。

二、配置文件
大概介绍一下nagios的目录结构:
/usr/local/nagios/etc
cgi.cfg CGI 配置文件
htpasswd.users 网页验证的用户名密码存放文件
nagios.cfg 主配置文件
resource.cfg 变量 U S E R 1 =/usr/local/nagios/libexec 插件的存放路径
/usr/local/nagios/etc/objects:
commands.cfg 命令。
contacts.cfg 定义联系人信息(邮箱地址)
localhost.cfg 定义监控项
templates.cfg 模板
timeperiods.cfg 时间段
nagios实现监控的过程:
编辑localhost.cfg文件配置监控项目,用什么命令来监控(nagios没办法直接调用插件,我们在commands.cfg中设置好nagios命令与插件的对应关系,然后nagios调用命令来监控)–>选择24x7这样一个时间段来监控 –>异常发生后,给contacts.cfg中定义的联系人发送邮件报警。

三、远程监控
notification_options w,c,u,r中的通知选项:
d down宕机
u unknown未知情况
r recovery主机状态或服务状态恢复
w warning警告
c critical严重警告
编辑localhost.cfg文件
在这里我先将原先的配置文件备份
cd /usr/local/nagios/etc/objects/
cp -p localhost.cfg localhost.cfg.bak
编辑:
vim /usr/local/nagios/etc/objects/localhost.cfg(之前的一些版本是services.cfg)
将其中的内容全部删除之后编辑(按键dd可以删除):
define host{ ##定义监控主机
host_name RESS_1.190 ##定义主机名
alias one ##别名,随便取
address 192.168.1.190 ##ip地址
check_command check-host-alive ##对应的命令(check-host-alive是自带的已经定义好了的命令,在/usr/local/nagios/etc/objects/commands.cfg中,表示检查主机存活)
check_period 24x7 ##监控时间
check_interval 3 ##间隔次数
max_check_attempts 3 ##最大尝试次数
contact_groups admins ##在哪个连接组中(admins在../objects/contacts.cfg文件中有定义,你也可以自顶一个群组,例如:nagios)
notification_period 24x7 ##通知时间
notification_options d,u,r ##这里不能加,c严重警告否则会报错
notification_interval 60 ##间隔多久通知
}
define service{ ##定义服务
host_name RESS_1.190 ##定义服务主机
service_description Apache ##服务描述
check_command check_http ##对应的命令(commands.cfg中)
check_period 24x7 ##监控时间类型
check_interval 3 ##监控间隔,单位:次
retry_check_interval 1 ##重试间隔
max_check_attempts 3 ##最大尝试次数
contact_groups admins ##在哪个组
notification_period 24x7 ##通知时间
notification_options w,c,u,r ##通知选项
notification_interval 60 ##间隔时间(秒)
}
之后重启apache服务和nagios服务:
/etc/init.d/httpd restart ##或者service httpd restart
/etc/init.d/nagios restart ##或者service nagios restart
再进入192.168.1.184/nagios中点击左边的hosts和services查看定义的监控项是否已经成功,显示绿色的up,说明成功了。
这里写图片描述
如果显示的是灰色的pending,说明是在等待同步中,稍等一会刷新一下浏览器页面就显示绿色的up了。
这里写图片描述
四、邮件报警
在这里我用的阿里云邮箱,然后使用的工具是mutt+msmtp,安装包也在上面的百度云里。
大概要实现的是:发邮件过程:客户端–>aliyun.com邮件服务器–>邮箱
其中msmtp 用来发送邮件, mutt用来写邮件
各个厂商的邮件服务器的都可以在网上查到,例如163的是smtp.163.com,阿里云的是smtp.aliyun.com等,最好从网上查一下准确的域名。

安装mutt/msmtp
yum install mutt -y ##安装
tar fx msmtp-1.4.30.tar.bz2 ##解压
cd msmtp-1.4.30 ##进入解压后的目录
./configure –prefix=/usr/local/msmtp ##这里我指定了一下安装目录,也可以直接./configure运行
make && make install ##编译安装,两个&符号表示前一个命令执行成功且正确之后执行后面一条命令
安装成功之后,会在/etc下生成一个文件Muttrc
vim /etc/Muttrc
在最后插入这几句: ##引号也是有的
set from=”**@aliyun.com” ##输入你的邮箱
set realname=”nagios” ##在给你发邮件的时候会出现的名字,可以随便取
set sendmail=”/usr/local/msmtp/bin/msmtp” ##这里因为我指定了msmtp的安装路径,所以对应的是这个路径,如果是./configure安装的,应该是在/usr/local/bin/msmtp,请自行检查一下,不要出错

在/usr/local/msmtp/etc 下创建一个目录etc,然后进入这个目录创建文件msmtprc并且编辑这个文件
mkdir etc
vim /usr/local/msmtp/etc/msmtprc

account         default                                     
host            smtp.aliyun.com                     ##aliyun的邮件服务器域名
port            25                                  ##端口号,smtp的是25
from            *******@aliyun.com                  ##填写从哪个邮箱发送
tls             off                                 ##安全传输协议
auth            login                               ##权限
user            ********@aliyun.com                 ##邮箱
password        ********                            ##你输入的这个邮箱的密码
logfile         /tmp/msmtp.log                      ##日志文件存放路径,可以随意指定

可以用这条命令检查一下邮件能不能发送:

echo "This is a test mail" | mutt -s 'Test' ******@aliyun.com

之后修改nagios的部分配置文件,首先是contacts.cfg
vim /usr/local/nagios/etc/object/contacts.cfg
在34行(有可能是附近的行数)的email后面的nagios@localhost改成*@aliyun.com(与上面的文件中的相同)
保存退出
再更改commands.cfg命令
vim /usr/local/nagios/etc/object/commands.cfg
在26行(可能不准确)附近有两个定义的命令,叫做
**# ‘notify-host-by-email’ command definition
**# ‘notify-service-by-email’ command definition
这两个模块中的/bin/mail改为/usr/bin/mutt这里写代码片
这里要调用mutt这个命令,所以要写绝对路径,如果不知道mutt这个命令的位置,可以用
which mutt
查看mutt的绝对路径,直接复制过去就可以。改成之后是这样的:

define command{
        command_name    notify-host-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mutt -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
        }

重启nagios服务:
service nagios restart

之后可以停用一下190机器上的apache服务进行测试:
service httpd stop
邮件有可能不是第一时间发送过去的,是根据localhost.cfg文件中定义的时间间隔来发送的,因为是测试环境,可以把哪些间隔时间、重试时间都调成1,这样的话会比较快一些收到,不过更改配置文件,一定要记得重启服务。实际的生产环境建议根据服务器的资源分配情况来进行调整。
这里写图片描述
好了,以上就是本次nagios的介绍。本博客仅供参考。
其中还有自定义命令和nrpe没有介绍到,以后有机会在写了。也可以参考别人的优秀博客。

猜你喜欢

转载自blog.csdn.net/rains755/article/details/81904998
今日推荐