搭建Nagios监控服务
实验环境要求:
一台Centos7系统(本次采用7.4)
一台装好mysql服务的Centos系统(本次Mysql5.7)
一台Winows主机(本次Windows7)
准备好Nagios相关安装包
关闭selinux
关闭firewalld
本机IP:192.168.1.227/24
MysqlIP:192.168.1.250/24
Windows:192.168.1.37/24
链接:https://pan.baidu.com/s/178iu5me0HxnCzTj-SJGWkw 密码:b1nj (Nagios工具包)
实验效果:
监控mysql运行状态
监控Windows系统主机运行状态
一、安装完系统后配置网络yum源,mysql源,epel
清空系统自带的yum源
[root@lnmp~]# rm -f /etc/yum.repos.d/*
1.1 配置本地yum源(这一步可以忽略,个人习惯配置好本地源)
创建光盘挂载目录
[root@lnmp~]# mkdir /mnt/cdrom
将光盘挂载到目录下
[root@lnmp~]# mount /dev/sr0 /mnt/cdrom/
查看是否挂载成功
[root@lnmp~]# vim /etc/yum.repos.d/local-base.repo
#以下内容写进配置文件中
[local]
name=local-base
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
1.2 配置网络yum源(重要)
阿里yum源下载地址
https://opsx.alibaba.com/mirror
找到Centos系统点击后面的帮助
下载完成后还要修改一下配置才能使用
[root@lnmp~]# vim /etc/yum.repos.d/CentOS-Base.repo
使用下面的命令进行全局替换,Centos7.4系统是7.4.1708其他版本请自己到官网了解
:%s/$releasever/7.4.1708/g
:%s/gpgcheck=1/gpgcheck=0/g
:wq保存退出。清除yum缓存,刷新yum
[root@lnmp~]# yum clean all && yum repolist
1.3 安装epel源
[root@lnmp~]# yum -y install epel-release
1.4 下载,上传,安装Mysql源
下载地址:
安装Centos系统上传工具
[root@lnmp~]# yum -y install lrzsz
上传Mysql源到Centos系统上
[root@lnmp~]# rz
查看是否上传成功
[root@lnmp~]# ls
mysql80-community-release-el7-1.noarch.rpm
使用rpm安装mysql源
[root@lnmp~]# rpm -ivh mysql80-community-release-el7-1.noarch.rpm
本次采用Mysql5.7做实验,所以需要修改配置文件
[root@lnmp~]# vim /etc/yum.repos.d/mysql-community.repo
关闭8.0版本的mysql源
:%s/enabled=1/enabled=0/g
关闭验证
:%s/gpgcheck=1/gpgcheck=0/g
启用5.7版本的mysql源
清除缓存,刷新缓存
[root@lnmp~]# yum clean all && yum repolist
Yum源环境准备完成
二、安装Nagios监控系统
2.1 安装并启动Apache
[root@lnmp~]# yum install -y httpd ; systemctl start httpd
2.2 解决Nagios相关依赖包
[root@lnmp~]# yum install -y gcc glibc glibc-common php gd gd-devel libpng libmng libjpegzlib
2.3 创建Nagios运行用户和组(请与我保持一直,不要搞个性化)
[root@lnmp~]# useradd nagios
[root@lnmp~]# groupadd nagcmd
[root@lnmp~]# usermod -G nagcmd nagios
[root@lnmp~]# usermod -G nagcmd apache
2.4 安装Nagios
解压Nagios包
[root@lnmp~]# unzip Nagios.zip
Archive: Nagios.zip
inflating: NSClient.-0.3.3-x64.msi
inflating: nagios-3.5.1.tar.gz
inflating: nagios-cn-3.2.3.tar.bz2
inflating: nagios-plugins-2.1.1.tar.gz
extracting: nrpe-2.15.tar.gz
inflating: pnp4nagios-0.6.26.tar.gz
extracting: vautour_style.zip
inflating: NSClient.-0.3.3-Win32.msi
解压Nagios工具包
[root@lnmp~]# tar xf nagios-3.5.1.tar.gz
切换到Nagios工具包目录下
[root@lnmp~]# cd nagios
源码编译安装,指定运行组
[root@lnmpnagios]# ./configure --with-command-group=nagcmd
查看需要安装哪些功能模块
[root@lnmpnagios]# make all
一次性安装全部功能模块
[root@lnmpnagios]# make install && make install-init && makeinstall-commandmode && make install-config && makeinstall-webconf
2.5 配置nagios账户密码
查看管理Nagios账号的密码存放位置
[root@lnmpnagios]# vim /etc/httpd/conf.d/nagios.conf
使用htpasswd设置nagiosadmin账户的密码,本机设置123456
2.6 测试Nagios
以守护进程方式启动
[root@lnmp nagios]#/usr/local/nagios/bin/nagios-d /usr/local/nagios/etc/nagios.cfg
完成Nagios安装后,接下来就是安装一下插件去采集被监控服务器的信息
三、安装nagios插件
3.1 安装mysql客户端
[root@lnmpnagios]# yum -y install mysql mysql-devel
3.2 安装检测命令脚本工具
切换到Nagios工具包解压监控脚本目录
[root@lnmp~]# tar xf nagios-plugins-2.1.1.tar.gz -C /usr/local/src/
切换到脚本目录下
[root@lnmp~]# cd /usr/local/src/nagios-plugins-2.1.1
使用源码编译安装,指定运行用户和组
[[email protected]]#./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
编译安装
[[email protected]]# make &&make install
查看命令插件目录下的内容,如果不提前安装mysql客户端会无法检测到check_mysql
重启apache和nagios
[root@lnmp~]# systemctl restart httpd;/etc/init.d/nagios restart
Reloadingsystemd: [ OK ]
Restartingnagios (via systemctl): [ OK ]
Web登录查看host信息
3.3 安装Nagios主题插件
切换到Nagios工具包解压目录下,注意执行命令后要输入一个A
[root@lnmp~]# unzip vautour_style.zip -d /usr/local/nagios/share/
Archive: vautour_style.zip
replace/usr/local/nagios/share/images/ack.gif? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
重启Nagios
[root@lnmp~]# /etc/init.d/nagios restart
Restartingnagios (via systemctl): [ OK ]
四、监控Mysql状态
特别注意:监控任何一台服务器,工作流程是定义主机,定义服务,定义命令
登录Mysql (-u“用户” -p“密码”根据自己实际环境填写)
[root@localhost~]# mysql -uroot [email protected]
创建测试库
mysql>create database nagios;
Query OK, 1 rowaffected (0.01 sec)
授权nagios库下所有表,给nagios账户,从192.168.1.227这台主机使用[email protected]这个密码登录
mysql>grant select on nagios.*to nagios@'192.168.1.227'identified by '[email protected]';
Query OK, 0 rowsaffected, 1 warning (0.01 sec)
4.1 配置Nagios服务
4.1.1 编辑配置文件添加监控服务
[root@lnmp~]# vim /usr/local/nagios/etc/nagios.cfg
# Definitions for monitoring the local (Linux) host
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
#在这两行下面添加下面两行
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/service.cfg
[root@lnmpobjects]# vim /usr/local/nagios/etc/objects/hosts.cfg
define host{
use linux-server
host_name Mysql-master #自定义主机名
address 192.168.1.250 #我的mysql服务IP
}
[root@lnmpobjects]# vim /usr/local/nagios/etc/objects/service.cfg
define service{
use local-service
host_name Mysql-master #自定义
service_description MySqlSev
check_command check_mysql #使用这个命令检测,要你的检测命令有才能使用,如果按照本次实验步骤来那就没问题
}
[root@lnmpobjects]# vim /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name check_mysql
command_line /usr/local/nagios/libexec/check_mysql -H192.168.1.250 -unagios [email protected] -d nagios
} #填写自己的mysql授权-u用户 -p输入密码 –d 指定库
4.1.2 调用check-mysql命令进行检测,有下面结果输出为正常
[root@lnmp~]# /usr/local/nagios/libexec/check_mysql -H 192.168.1.250 [email protected] -d nagios
Uptime: 1834 Threads: 1 Questions: 11 Slow queries:0 Opens: 108 Flush tables: 1 Open tables: 101 Queries per second avg:0.005|Connections=6c;;; Open_files=16;;; Open_tables=102;;;Qcache_free_memory=1031832;;; Qcache_hits=0c;;; Qcache_inserts=0c;;;Qcache_lowmem_prunes=0c;;; Qcache_not_cached=1c;;; Qcache_queries_in_cache=0;;;Queries=12c;;; Questions=8c;;; Table_locks_waited=0c;;; Threads_connected=1;;;Threads_running=1;;; Uptime=1834c;;;
4.1.3 检测配置文件是否出错
[root@lnmpobjects]# /usr/local/nagios/bin/nagios-v /usr/local/nagios/etc/nagios.cfg
表示配置文件没有异常!
4.2 重启nagios服务
[root@lnmpobjects]# /etc/init.d/nagios restart
Restartingnagios (via systemctl): [ OK ]
4.3 WEB上查看结果
有时间的可以去模拟Mysql挂掉测试状态会不会改变
五、添加Windwos系统到Nagios
5.1 上传NSClient工具到windows客户端
安装,下一步下一步安装完成
5.2 编辑配置文件
1、去掉在[modules]段里的列出模块程序的注释,除了CheckWMI.dll和RemoteConfiguration.dll;
2、最好是修改一下在[Settings]段里的'password'选项;
3、去掉在[Settings]段里的'allowed_hosts'选项注释,把Nagios服务所在主机的IP加到这一行里,或是置为空,让全部主机都可以联入;多个地址用逗号隔开
4、确认一下在[NSClient]段里的'port'选项里已经去掉注释并设置成'12489'(默认端口);
修改成
双击nsclient++.exe 启动代理服务,并设置服务和桌面交互:
查看12489端口是否在监听状态
切换到Nagios主机上编辑配置文件
[root@lnmp etc]# vim/usr/local/nagios/etc/nagios.cfg
取消windows配置的注释
[root@lnmp objects]# vim /usr/local/nagios/etc/objects/windows.cfg
definehost{
use windows-server ; Inherit default values from a template
host_name winserver ; The name we're giving to this host
alias My Windows Server ; A longer name associated with the host
address 192.168.1.37 ; IP address of the host
}
[root@lnmp objects]# vim/usr/local/nagios/etc/objects/service.cfg
#监控Windows机器的启动后运行时间。
defineservice{
use generic-service
host_name winserver
service_description Uptime
check_command check_nt!UPTIME
}
#监控Windows机器的CPU利用率
defineservice{
use generic-service
host_name winserver
service_description CPU Load
check_command check_nt!CPULOAD!-l5,80,90
}
#监控Windows机器的内存占用率
defineservice{
use generic-service
host_name winserver
service_description Memory Usage
check_command check_nt!MEMUSE!-w 80 -c90
}
#监控Windows机器的C:盘的磁盘利用率
defineservice{
use generic-service
host_name winserver
service_description C:\ Drive Space
check_command check_nt!USEDDISKSPACE!-lc -w 80 -c 90
}
[root@lnmp objects]# vim/usr/local/nagios/etc/objects/commands.cfg
definecommand{
command_name check_nt
command_line $USER1$/check_nt -H$HOSTADDRESS$ -p 12489 -s 1 -v $ARG1$ $ARG2$
}
注意:不是重新写配置,而是更改模块内容,这里的-p12489是端口;-s 1 是密码一定要和windows配置文件的密码保持一致,否则会出现下图这样的状态
[root@lnmp objects]# /etc/init.d/nagiosrestart
Restarting nagios (via systemctl): [ OK ]
WEB页面查看结果