一
简 介
Nagios是一款开源免费的网路监视工具,可以监控的设备:Windows,Linux,Unix,Router,Switch,具有报警功能,是一个网络监控系统。
它可以监视你指定的主机和服务,并在那些设备“变坏”和“变好”的时候通知管理员。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
Nagios Core 原先设计在Linux下运行,当然,它在其他的Unix系统下应该也能进行工作。
二
组件和插件
2.1 说明
针对于Nagios,我们需要配合许多组件和插件来工作.Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。
安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如:check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。也可以去网上下载。
2.2 下载网站
//Nagios界面很不美观,可以更换主题;
//Nagios插件;
//各类拓展组件官方网站,包括脚本;
//监控插件或脚本。
三
优 点
四
运行原理
4.1 原理
Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。
启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。在大规模生产环境中,如果需要浏览历史数据,需要结合数据库。
4.2 获取数据的方式
4.3 通过NRPE来远端管理服务
Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。
通过SSL,check_nrpe 连接远端机子上的NRPE daemon。
NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,..etc)。
最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。
Nagios 依次读取队列中的信息,再把结果显示出来。
五
所需软件
六
部署nagios
6.1 准备环境
[root@Bob10 ~]# yum install -y gcc glibc glibc-common gd gd-devel libpng libmng libjpegzlib #安装依赖
[root@Bob10 ~]# yum install -y httpd mysql-server mysql php php-mysql mysql-devel #安装lamp环境,在使用check_mysql插件时需要使用mysql客户端和mysql-devel
[root@Bob10 ~]# service httpd restart
[root@Bob10 ~]# chkconfig httpd on
[root@Bob10 ~]# service mysqld restart
[root@Bob10 ~]# chkconfig mysqld on
[root@Bob10 ~]# ll /root/nagios/ #准备软件包
total 9204
-rw-r--r-- 1 root root 1763584 May 31 2016 nagios-3.5.1.tar.gz
-rw-r--r-- 1 root root 2677352 May 31 2016 nagios-plugins-2.1.1.tar.gz
-rw-r--r-- 1 root root 419695 May 31 2016 nrpe-2.15.tar.gz
-rw-r--r-- 1 root root 2013184 Oct 30 2016 NSClient.-0.3.3-Win32.msi
-rw-r--r-- 1 root root 2541568 Oct 30 2016 NSClient.-0.3.3-x64.msi
6.2 安装nagios
1)配置用户
[root@Bob10 ~]# useradd nagios
[root@Bob10 ~]# groupadd nagcmd
[root@Bob10 ~]# usermod -G nagcmd nagios
[root@Bob10 ~]# usermod -G nagcmd apache
2)安装
[root@Bob10 ~]# tar -xf /root/nagios/nagios-3.5.1.tar.gz -C /usr/local/src/
[root@Bob10 ~]# cd /usr/local/src/nagios/
[root@Bob10 nagios]# ./configure --with-command-group=nagcmd #指定用户组
[root@Bob10 nagios]# make install #安装生成/usr/local/nagios/,其中/usr/local/nagios/share即nagiosWEB访问界面的站点目录
[root@Bob10 nagios]# make install-init #安装生成/etc/rc.d/init.d/nagios 启动脚本
[root@Bob10 nagios]# make install-commandmode #设定相应nagios工作目录的权限
[root@Bob10 nagios]# make install-config #安装生成/usr/local/nagios/etc下的nagios相关配置文件
[root@Bob10 nagios]# make install-webconf #安装Nagios的WEB配置文件到Apache的conf.d目录下
[root@Bob10 nagios]# make install-exfoliation
[root@Bob10 nagios]# make install-classicui
3)查看
[root@Bob10 nagios]# ll /usr/local/nagios/ # 查看安装路径
total 24
drwxrwxr-x 2 nagios nagios 4096 Jun 10 16:55 bin #Nagios执行程序所在目录
drwxrwxr-x 3 nagios nagios 4096 Jun 10 16:56 etc #nagios配置文件所在目录,初始安装只有几个*.cfg文件
drwxrwxr-x 2 nagios nagios 4096 Jun 10 16:55 libexec #监控所用命令,需要安装了nagios-plugins插件了才会有,检测命令,不装是空的
drwxrwxr-x 2 nagios nagios 4096 Jun 10 16:55 sbin #Nagios的Cgi文件所在目录,外部命令所需要的文件存放目录
drwxrwxr-x 10 nagios nagios 4096 Jun 10 16:55 share #访问界面目录
drwxrwxr-x 5 nagios nagios 4096 Jun 10 17:01 var #日志文件,pid文件等
[root@Bob10 ~]# ll /etc/init.d/nagios
-rwxr-xr-x 1 root root 5310 Jun 10 16:56 /etc/init.d/nagios #其实就是在/etc/rc.d/init.d/nagios.在make install-config的时候,生成了Nagios的相关配置文件
[root@Bob10 ~]# ll /usr/local/nagios/etc/ #查看配置文件,包括以后安装了plugin等软件后,配置文件也会放入此目录
total 64
-rw-rw-r-- 1 nagios nagios 11669 Jun 10 16:56 cgi.cfg
-rw-rw-r-- 1 nagios nagios 44710 Jun 10 16:56 nagios.cfg
drwxrwxr-x 2 nagios nagios 4096 Jun 10 16:56 objects
-rw-rw---- 1 nagios nagios 1340 Jun 10 16:56 resource.cfg #定义了很多资源变量的调用.在make install-webconf的时候,已经把web-conf的相配置文件放入了/etc/httpd/conf.d/下面
[root@Bob10 ~]# vim /etc/httpd/conf.d/nagios.conf
26 Alias /nagios "/usr/local/nagios/share" #配置了一个别名,直接引用了/usr/local/nagios/share目录
28 <Directory "/usr/local/nagios/share">
29 # SSLRequireSSL
30 Options None
31 AllowOverride None
32 Order allow,deny
33 Allow from all
34 # Order deny,allow
35 # Deny from all
36 # Allow from 127.0.0.1
37 AuthName "Nagios Access"
38 AuthType Basic
39 AuthUserFile /usr/local/nagios/etc/htpasswd.users #网页用户名密码路径,在打开http://192.168.1.63/nagios是需要的用户名密码路径
40 Require valid-user
41
[root@Bob10 ~]# vim /usr/local/nagios/etc/nagios.cfg #看一下配置文件
log_file=/var/log/nagios/nagios.log #日志位置
cfg_file=/etc/nagios/objects/commands.cfg #这个文件定义了很多命令
cfg_file=/etc/nagios/objects/contacts.cfg #定义联系人,怎么联系
cfg_file=/etc/nagios/objects/timeperiods.cfg #定义了时间段
cfg_file=/etc/nagios/objects/templates.cfg #模板(联系人,主机,时间)
cfg_file=/etc/nagios/objects/localhost.cfg #监控本机相关配置文件
#cfg_file=/etc/nagios/objects/windows.cfg #windows,默认不监控
#cfg_file=/etc/nagios/objects/switch.cfg #交换机路由器监控,默认不监控
#cfg_file=/etc/nagios/objects/printer.cfg #打印机监控,默认不监控
#cfg_dir=/etc/nagios/servers #定义了服务合集(多个使用)
#cfg_dir=/etc/nagios/printers #定义了打印机合集(多个使用)
#cfg_dir=/etc/nagios/switches #定义了交换合集(多个使用)
#cfg_dir=/etc/nagios/routers #定义了路由合集(多个使用)
resource_file=/etc/nagios/private/resource.cfg 资源变量配置文件,包括$USER1$变量(一个路径)等
status_update_interval=10 #状态更新时间,单位s
log_rotation_method=d #日志滚动,默认天
service_check_timeout=60 #服务检查超时时间
host_check_timeout=30 #主机检查超时时间
[root@Bob10 ~]# vim /usr/local/nagios/etc/cgi.cfg #此配置文件的优先级比nagios.cfg高
15 main_config_file=/usr/local/nagios/etc/nagios.cfg #主配置文件
24 physical_html_path=/usr/local/nagios/share #物理路径
36 url_html_path=/nagios #在URL后面加上/nagios才能访问
78 use_authentication=1 #使用认证
88 use_ssl_authentication=0 #不使用ssl
119 authorized_for_system_information=nagiosadmin #认证用户
4)配置
[root@Bob10 ~]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin #创建用户名密码文件,nagios 默认使用nagiosadmin来管理,如果使用其他用户名,对应的配置文件也要修改
[root@Bob10 ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg #在nagios的目录下,bin目录下有一个nagios命令,这个命令可以帮助我们对配置文件的检查工作以及指定相关配置文件.-v=--verify-config 验证配置文件是否有误.
[root@Bob10 ~]# service httpd restart #重启httpd
[root@Bob10 ~]# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg #指定配置文件,以守护进程的方式启动
5)测试
[root@Bob10 ~]# elinks 192.168.1.63/nagios#但是现在还没有做任何深入配置,所以现在只是可以登录而已!
6.3 安装Nagios-plugins插件
1)介绍
Nagios-plugins含有丰富的检测命令插件,安装完成之后放在了/usr/local/Nagios/libexec下面。
2)安装
[root@Bob10 ~]# tar -xf /root/nagios/nagios-plugins-2.1.1.tar.gz -C /usr/local/src/
[root@Bob10 ~]# cd /usr/local/src/nagios-plugins-2.1.1/
[root@Bob10 nagios-plugins-2.1.1]# ./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
[root@Bob10 nagios-plugins-2.1.1]# make
[root@Bob10 nagios-plugins-2.1.1]# make install
[root@Bob10 ~]# cd /usr/local/nagios/libexec/ #刚才安装的插件都在这个目录下
[root@Bob10 libexec]# ./check_mysql -h #查看插件的使用方法
[root@Bob10 ~]# /etc/init.d/nagios restart
[root@Bob10 ~]# elinks 192.168.1.63/nagios #浏览器测试:登陆之后,点击hosts,可以看到,默认监控的是本机,说明环境没有什么问题
七
nagios监控本机服务
监控本机nfs状态:
1)搭建nfs服务
[root@Bob10 ~]# vim /etc/exports #创建一个共享
1 /tmp *(rw)
[root@Bob10 ~]# /etc/init.d/nfs restart #启动服务
[root@Bob10 ~]# showmount -e 192.168.1.63 #检测NFS目前是否正常
2)配置监控
[root@Bob10 ~]# cp -ar /usr/local/nagios/etc/objects/localhost.cfg /usr/local/nagios/etc/objects/localhost.cfg.bak #备份配置文件
[root@Bob10 ~]# vim /usr/local/nagios/etc/objects/localhost.cfg #修改配置文件
158 define service{ #添加监控的服务
159 use local-service
160 host_name localhost
161 service_description NFS
162 check_command check_tcp!2049 #在使用check命令之前,要确保下/usr/local/nagios/libexec/ 目录下有没有你需要的check命令,如果有,直接调用,如果没有,检测端口来代替,检测格式:check_tcp!端口号
163 }
[root@Bob10 ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg #检查配置文件是否有误
[root@Bob10 ~]# service httpd restart
[root@Bob10 ~]# service nagios restart
[root@Bob10 ~]# elinks 192.168.1.63/nagios #测试,浏览器的service里面多了一个nfs服务
[root@Bob10 ~]# service nfs stop#停止nfs服务。
[root@Bob10 ~]# elinks 192.168.1.63/nagios#我们可以再去网页看状态,般没回立马又显示出来状态,需要一段时间,最好最快的方法就是手动强制刷新,否则你需要等待,强制刷新,点击NFS后有一个Re-schedule the next check of this service,强制刷新。
八
nagios监控远程主机服务
8.1 步骤
定义主机,定义服务,定义命令。
8.2 监控远程mysql主机
1)远程主机上部署mysql
[root@Bob11 ~]# yum install -y mysql-server mysql
[root@Bob11 ~]# service mysqld restart
mysql> grant select on *.* to nagios@'192.168.XX.XX'; #创建授权用户
2)配置nagios服务器
[root@Bob10 ~]# vim /usr/local/nagios/etc/nagios.cfg #修改主配置文件
35 # Definitions for monitoring the local (Linux) host
36 cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
37 cfg_file=/usr/local/nagios/etc/objects/hosts.cfg #添加此行
38 cfg_file=/usr/local/nagios/etc/objects/service.cfg #添加此行
[root@Bob10 ~]# vim /usr/local/nagios/etc/objects/hosts.cfg #定义主机
1 define host{
2 use linux-server
3 host_name Bob11
4 address 192.168.xx.11
5 }
[root@Bob10 ~]# vim /usr/local/nagios/etc/objects/service.cfg #定义服务
1 define service{
2 use local-service
3 host_name Bob11
4 service_description MySqlSev
5 check_command check_mysql
6 }
[root@Bob10 ~]# vim /usr/local/nagios/etc/objects/commands.cfg #定义命令
241 # 'check_mysql' command definition
242 define command{
243 command_name check_mysql
244 command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u nagios # $USER1$这个变量是在/usr/local/nagios/etc/cgi.cfg中定义的.$USER1$对应的就是/usr/local/nagios/libexec,
245 }
[root@Bob10 ~]# /usr/local/nagios/libexec/check_mysql -H 192.168.xx.11 -u nagios #检查check_command命令是否正确
Uptime: 1848 Threads: 1 Questions: 6 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.3|Connections=4c;;; Open_files=16;;; Open_tables=8;;; Qcache_free_memory=0;;; Qcache_hits=0c;;; Qcache_inserts=0c;;; Qcache_lowmem_prunes=0c;;; Qcache_not_cached=0c;;; Qcache_queries_in_cache=0;;; Queries=6c;;; Questions=6c;;; Table_locks_waited=0c;;; Threads_connected=1;;; Threads_running=1;;; Uptime=1848c;;;
[root@Bob10 ~]# service httpd restart
[root@Bob10 ~]# service nagios restart
3)注意
所有的check_command字段中的所使用的命令,必须在command.cfg中定义好才能使用,而command.cfg中的command_line中使用的命令,必须在/usr/local/Nagios/libexec/目录下存在,安装plugins会生成.手动检测command.cfg的命令有效性。
服务器要安装了mysql客户端软件,然后再重新编译安装下plugins 才会生成check_mysql。
原创文章,作者:筱凯,如若转载,请注明出处:https://www.jingyueyun.com/ask/816.html