简 介
Nagios Core 原先设计在Linux下运行,当然,它在其他的Unix系统下应该也能进行工作。
组件和插件
https://exchange.nagios.org/directory/Addons /监控插件或脚本。
优 点
1)监控网路服务状态(HTTPD,FTP,SSH,MySql……)。 2)监控主机资源(处理器符合,硬盘利用率……)。 3)拓展,根据自己的需求实现拓展检测功能(插件开发)。 4)自动日志回滚。 5)具备定义网络分层结构的能力,用“parent”主机定义来表达网络主机间的关系。 6)警告,基于状态的警告:OK,Warning(警告),critical(关键),unknown(未知)。 7)可以支持并实现对主机的冗余监控。 8)WEB界面。
运行原理

4.2 获取数据的方式
主动发送 NRPE插件 SNMP NSClient++
Nagios 依次读取队列中的信息,再把结果显示出来。
所需软件
1)lamp环境(可以不需要mysql); 2)nagios-3.5.1.tar.gz #Nagios核心文件,Nagios服务文件,不建议用最新,很多插件没做好; 3)nagios-plugins-2.1.1.tar.gz #Nagios 插件,用于存放脚本和命令; 4)NSCP-0.5.0 #也就是Nsclient++,用来监控Windows,分为64为何32位版本; 5)nrpe-2.15.tar.gz #代理服务,用于监控非Nagios服务器的服务器本地私有信息代理; 6)vautour_style.zip #主题包;
部署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
[root@Bob10 ~]# useradd nagios
[root@Bob10 ~]# groupadd nagcmd
[root@Bob10 ~]# usermod -G nagcmd nagios
[root@Bob10 ~]# usermod -G nagcmd apache
[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
[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 </Directory>
[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 #认证用户
[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 #指定配置文件,以守护进程的方式启动

6.3 安装Nagios-plugins插件
[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监控本机服务
[root@Bob10 ~]# vim /etc/exports #创建一个共享
1 /tmp *(rw)
[root@Bob10 ~]# /etc/init.d/nfs restart #启动服务
[root@Bob10 ~]# showmount -e 192.168.1.63 #检测NFS目前是否正常
[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服务


nagios监控远程主机服务
[root@Bob11 ~]# yum install -y mysql-server mysql
[root@Bob11 ~]# service mysqld restart
mysql> grant select on *.* to nagios@'192.168.XX.XX'; #创建授权用户
[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

本文作者:李帅帅(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




