监控系统Nagios的搭建

Nagios服务端安装

安装nagios服务需要安装LAMP环境
systemctl stop firewalld
setenforce 0

yum install -y httpd php*
yum install gcc gcc-c++ make -y

vi /etc/httpd/conf/httpd.conf #修改以下内容:
ServerName www.aa.com:80
DirectoryIndex index.html index.php
AddType application/x-httpd-php .php

vi /etc/httpd/conf.d/php.conf #在末尾添加下面内容:
LoadModule php5_module modules/libphp5.so
在这里插入图片描述

vi /etc/php.ini #在里面修改下面的内容:
safe_mode=off //在[PHP]下插入
date.timezone = PRC //去掉注释,并在右边添加PRC

systemctl enable httpd
systemctl start httpd

vi /var/www/html/index.php //编辑网页测试文件

<?php phpinfo(); ?>

测试httpd 和php是否协同工作,在浏览器中输入192.168.80.102
在这里插入图片描述
如上图所示,表示httpd和php协同工作
到此,LAMP架构已搭建成功

配置Nagios服务器端
yum -y install
httpd httpd-devel
gcc glibc glibc-common
gd gd-devel perl-devel
perl-CPAN
fcgi perl-FCGI
perl-FCGI-ProcManager
unzip
openssl-devel

创建用户和组
groupadd nagcmd
useradd -G nagcmd nagios
usermod -a -G nagcmd apache
id -n -G apache

tar xf nagios-4.3.4.tar.gz -C /opt/
cd /opt/nagios-4.3.4/
./configure
–prefix=/usr/local/nagios
在这里插入图片描述
make all #我们会发现还需要进行下面四个安装
在这里插入图片描述
make install //安装主程序,CGI和HTML文件
在这里插入图片描述
make install-init //在/etc/rc.d/init.d安装启动脚本 初始化
在这里插入图片描述
make install-config //安装示例配置文件,安装路径是/usr/local/nagios/etc
在这里插入图片描述
make install-commandmode //对应的命令
在这里插入图片描述

cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/ #复制软件包自带的插件至nagios/libexec目录下
chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg //检查配置文件
在这里插入图片描述
/etc/init.d/nagios checkconfig //检查配置问题
在这里插入图片描述
make install-webconf //配置nagios跟apache整合
在这里插入图片描述
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
nagiosadmin是我们用来登录nagios的管理员,而cgi.cfg就是用来验证管理员身份的。
如果生成的管理员用户不是nagiosadmin,验证的时候就会失败,也就会出现错误。
解决方法:
改/usr/local/nagios/etc/cgi.cfg文件里的一个参数 use_authentication=1 将1改为0,重启nagios即可

service nagios start
在这里插入图片描述
systemctl restart httpd

测试,在浏览器中输入http://192.168.80.102/nagios/
输入之前用htpasswd 创建的用户名和密码,点击确定进入,
出现此图,表示Nagios网页界面正常
在这里插入图片描述

安装nagios-plugins插件
--------Nagios提供的各种监控功能都是通过插件来完成的。
tar xf nagios-plugins-2.2.1.tar.gz -C /opt/

cd /opt/nagios-plugins-2.2.1
./configure
–with-nagios-user=nagios
–with-nagios-group=nagcmd
–enable-perl-modules
make && make install

安装nrpe软件
-----nagios作为服务端,本地资源需要监控,同时也需要check_nrpe插件做被动检查
tar xf nrpe-3.2.1.tar.gz
cd nrpe-3.2.1
./configure
在这里插入图片描述
make all
make install-plugin //将check_nrpe插件安装到/usr/local/nagios/libexec目录下
make install-daemon
cp sample-config/nrpe.cfg /usr/local/nagios/etc/nrpe.cfg
ls /usr/local/nagios/libexec/ //检查插件安装情况,下面才算正确
在这里插入图片描述
/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg //启动nrpe.cfg
echo “/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg” >> /etc/rc.local //开机启动
chmod +x /etc/rc.d/rc.local
netstat -lnput|grep 5666
在这里插入图片描述
/usr/local/nagios/libexec/check_nrpe -H localhost //测试本地连接
在这里插入图片描述
刷新网页,点击hosts,会发现已经启动,是UP状态。
在这里插入图片描述

在客户端上

yum install -y perl-devel perl-CPAN openssl-devel

tar xf nagios-plugins-2.2.1.tar.gz
tar xf nrpe-3.2.1.tar.gz

useradd -M nagios

cd nagios-plugins-2.2.1
./configure
–with-nagios-user=nagios
–with-nagios-group=nagios
–enable-perl-modules

make && make install

cd …/nrpe-3.2.1
./configure
在这里插入图片描述
make all
make install-plugin
make install-daemon
mkdir /usr/local/nagios/etc/
cp sample-config/nrpe.cfg /usr/local/nagios/etc/nrpe.cfg
ls /usr/local/nagios/libexec/
在这里插入图片描述
/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg //启动
echo “/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg” >> /etc/rc.local //写入到开机启动项

chmod +x /etc/rc.d/rc.local
netstat -lnput|grep 5666 在这里插入图片描述
/usr/local/nagios/libexec/check_nrpe -H localhost
在这里插入图片描述
cd /usr/local/nagios/etc/
vi nrpe.cfg

allowed_hosts=127.0.0.1,::1,192.168.80.181 //允许服务端连接

---------修改以下行--------
298 command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
299 command[check_load]=/usr/local/nagios/libexec/check_load -r -w .15,.10, .05 -c .30,.25,.20
300 command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
301 command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
302 command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
以上意思依次是:
定义命令check_users,当登录系统用户超过5个warning,超过10个报critical错误
定义命令check_load,当一分钟超过15个进程等待;5分钟超过10个进程等待;15分钟超过5进程等待则提升至Waining状态;当一分钟超过30个进程等待;5分钟超过25个进程等待;15分钟超过20进程等待则提升至Critical状态
定义命令check_sda1,当/dev/sda1空闲容量少于20%报warning,低于10%状态变为critical
定义命令check_ zombie_procs,当僵尸进程超过5个警告,超过10个提示critical错误,并显示进程状态
定义命令check_total_procs,当总进程超过150个警告,超过200提示critical,这两个阀值根据服务器性能做相应调整
定义命令check_mem,当服务器内存使用超过90%警告,超过95%提示critical
定义命令check_swap,当交换分区空闲空间低于20%警告,低于10%提升状态critical
注:由于nrpe和nagios-plugins都没有提供check_mem插件,我们必须自己创建check_mem.pl的perl脚本用于监控服务器的内存。

pkill -9 nrpe
/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_total_procs //测试本地命令执行情况
在这里插入图片描述
在服务器端
/usr/local/nagios/libexec/check_nrpe -H 192.168.80.103
在这里插入图片描述
/usr/local/nagios/libexec/check_nrpe -H 192.168.80.103 -c check_sda2
在这里插入图片描述
cd /usr/local/nagios/etc
grep nagiosadmin cgi.cfg //检查配置文件中相关授权的用户组默认只有nagiosadmin
在这里插入图片描述
sed -i ‘s/nagiosadmin/nagiosadmin,nagios/g’ cgi.cfg //增加nagios组授权,重新检查如下图:
在这里插入图片描述
mkdir /usr/local/nagios/etc/conf
vi nagios.cfg
cfg_dir=/usr/local/nagios/etc/conf //配置子配置文件目录
在这里插入图片描述
vi objects/commands.cfg //在最后新增
define command{
command_name check_nrpe
command_line $ USER1$/check_nrpe -H $ HOSTADDRESS$ -c $ ARG1$
}
在这里插入图片描述
vi objects/contacts.cfg //修改电子邮箱
email 1424474980@qq.com;
在这里插入图片描述
cd /usr/local/nagios/etc/conf
vi mysql_host103.cfg //定义主机和主机组

define host{
use linux-server
host_name mysql //监控平台上显示的名称 可写IP地址
alias www.ab.com //监控平台上显示的名称
address 192.168.80.103 //被控端地址
}
define hostgroup{ 定义主机组
hostgroup_name testgroup
alias mysql
members mysql
}
在这里插入图片描述

vi mysql_service102.cfg //使用的check_command要在commands.cfg中定义过

define service{
host_name mysql
service_description check-host-alive
check_command check-host-alive 用什么命令去检测
max_check_attempts 3 nagios对主机的最大检查次数,也就是nagios在检查发现某主机异常时,并不马上判断为异常状况
check_interval 2 nagios对主机的检查时间间隔,这里是2分钟。
retry_interval 2 重试检查时间间隔,单位是分钟
check_period 24x7 这里的check_period告诉nagios检查主机的时间段
notification_interval 300 在主机出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间。单位是分钟;
notification_period 24x7 主机故障时,发送通知的时间范围,其中“workhours”在timeperiods.cfg中进行了定义;
notification_options w,u,c,r 定义主机在什么状态下可以发送通知给使用者,d即down,表示宕机状态;
#contact_groups admins 指定联系人组,这个“admins”在contacts.cfg文件中定义。
process_perf_data 1 其值可以为0或1,其作用为是否启用Nagios的数据输出功能; 如果将此项赋值为1,那么Nagios就会将收集的数据写入某个文件中,以备提取。
}
define service{
host_name mysql
service_description check-procs 检测进程数
check_command check_nrpe!check_total_procs
max_check_attempts 3
check_interval 2
retry_interval 2
check_period 24x7
notification_interval 300
notification_period 24x7
notification_options w,u,c,r
#contact_groups admins
process_perf_data 1
}
define service{
host_name mysql
service_description check-load
check_command check_nrpe!check_load
max_check_attempts 3
check_interval 2
retry_interval 2
check_period 24x7
notification_interval 300
notification_period 24x7
notification_options w,u,c,r
#contact_groups admins
process_perf_data 1
}
define service{
host_name mysql
service_description check-ssh
check_command check_ssh
max_check_attempts 3
check_interval 2
retry_interval 2
check_period 24x7
notification_interval 300
notification_period 24x7
notification_options w,u,c,r
#contact_groups admins
process_perf_data 1
}

/etc/init.d/nagios checkconfig //检查语法错误
在这里插入图片描述
刷新监控网页,得到下图:
在这里插入图片描述
在这里插入图片描述

配置图表
yum -y install gcc cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel //安装rrdtool编译时,所需要的基础库。

yum -y install perl-ExtUtils-MakeMaker

tar xf rrdtool-1.4.5.tar.gz -C /opt/

cd rrdtool-1.4.5

./configure --prefix=/usr/local/rrdtool

make

make install

tar xf pnp4nagios-0.6.26.tar.gz -C /opt/

./configure --with-nagios-user=nagios
–with-nagios-group=nagios
–with-rrdtool=/usr/local/rrdtool/bin/rrdtool
–with-perfdata-dir=/usr/local/nagios/share/perfdata
–with-perl_lib_path=/usr/local/nagios/perl/lib/perl5/x86_64-linux-thread-multi
在这里插入图片描述
make install
在这里插入图片描述
make install-webconf
make install-config
make install-init

cd /usr/local/pnp4nagios/etc/

mv misccommands.cfg-sample misccommands.cfg
mv rra.cfg-sample rra.cfg
mv nagios.cfg-sample nagios.cfg
在这里插入图片描述
cd pages/
mv web_traffic.cfg-sample web_traffic.cfg

cd …/check_commands/
mv check_all_local_disks.cfg-sample check_all_local_disks.cfg
mv check_nrpe.cfg-sample check_nrpe.cfg
mv check_nwstat.cfg-sample check_nwstat.cfg
在这里插入图片描述
systemctl enable npcd
systemctl start npcd
ps aux | grep npcd
在这里插入图片描述
vi /usr/local/nagios/etc/nagios.cfg
process_performance_data=1 //在811行,将0改成1

//将833、834行的#注释去掉,并修改nagios为pnp4nagios
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata

//将858、859的#注释去掉
host_perfdata_file_mode=a
service_perfdata_file_mode=a

//将869、870的#注释去掉,并修改为下面:
host_perfdata_file_processing_interval=15
service_perfdata_file_processing_interval=15

//将879、880的#注释去掉
host_perfdata_file_processing_command=process-host-perfdata-file
service_perfdata_file_processing_command=process-service-perfdata-file

//在848下面添加以下内容:
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET:: T I M E T TIMET TIMET\tHOSTNAME:: H O S T N A M E HOSTNAME HOSTNAME\tHOSTPERFDATA:: H O S T P E R F D A T A HOSTPERFDATA HOSTPERFDATA\tHOSTCHECKCOMMAND:: H O S T C H E C K C O M M A N D HOSTCHECKCOMMAND HOSTCHECKCOMMAND\tHOSTSTATE:: H O S T S T A T E HOSTSTATE HOSTSTATE\tHOSTSTATETYPE:: H O S T S T A T E T Y P E HOSTSTATETYPE HOSTSTATETYPE

service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET:: T I M E T TIMET TIMET\tHOSTNAME:: H O S T N A M E HOSTNAME HOSTNAME\tSERVICEDESC:: S E R V I C E D E S C SERVICEDESC SERVICEDESC\tSERVICEPERFDATA:: S E R V I C E P E R F D A T A SERVICEPERFDATA SERVICEPERFDATA\tSERVICECHECKCOMMAND:: S E R V I C E C H E C K C O M M A N D SERVICECHECKCOMMAND SERVICECHECKCOMMAND\tHOSTSTATE:: H O S T S T A T E HOSTSTATE HOSTSTATE\tHOSTSTATETYPE:: H O S T S T A T E T Y P E HOSTSTATETYPE HOSTSTATETYPE\tSERVICESTATE:: S E R V I C E S T A T E SERVICESTATE SERVICESTATE\tSERVICESTATETYPE:: S E R V I C E S T A T E T Y P E SERVICESTATETYPE SERVICESTATETYPE

vi /usr/local/nagios/etc/objects/commands.cfg //末尾新增以下内容:
define command{
command_name process-service-perfdata-file
command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/service-perfdata
}
define command{
command_name process-host-perfdata-file
command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/host-perfdata
}
//并将下面内容注释添加注释:
在这里插入图片描述
vi /usr/local/nagios/etc/objects/templates.cfg //添加下面内容:
action_url /pnp4nagios/index.php/graph?host=$ HOSTNAMEKaTeX parse error: Expected 'EOF', got '&' at position 1: &̲srv=SERVICEDESC$
action_url /pnp4nagios/index.php/graph?host=$ HOSTNAME$&srv=_ HOST_
在这里插入图片描述

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg //检查配置文件
/etc/init.d/nagios checkconfig //检查配置问题
在这里插入图片描述
service nagios restart
service httpd restart

浏览器测试图表:192.168.80.102/pnp4nagios
在这里插入图片描述
rm -rf /usr/local/pnp4nagios/share/install.php
在这里插入图片描述
重新登录192.168.80.102/nagios,点击service或hosts
在这里插入图片描述
配置邮件报警--------
配置mailx使能发送邮件

vi /usr/local/nagios/etc/objects/commands.cfg //在末尾添加:

#‘notify-host-by-email’ command definition
define command{
command_name notify-host-by-email
}

#‘notify-service-by-email’ command definition
define command{
command_name notify-service-by-email
}

yum install mailx senmail* -y
vi /etc/mail.rc

set bsdcompat
set from=你的邮箱账号
set smtp=smtp.163.com
set smtp-auth-user=你的邮箱账号
set smtp-auth-password=你的邮箱密码
set smtp-auth=login
在这里插入图片描述
//发送一封邮件:
echo “andrew” | mail -s “andrew” 19956455202@163.com

登录你的邮箱你会收到一封邮件
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值