nagios监控服务
nagios相关说明
传统监控服务器的对比
Cacti:
收集数据、图形展示
偏重网络流量
SNMP、OID、SNMP Agent
Nagios:
偏重主机、服务的状态
Agent
脚本
Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常发出邮件或短信报警第
一时间通知网站运维人员,在状态恢复后发出正常的邮件或者短信通知。
nagos工作原理
监控对象
主机、主机组
服务/资源,服务组 ok 正常 pending 沟通服务器 warning 警告 critical 严重警告
unknown 找不到服务器
联系人,联系人组
时段
命令
Nagios工作原理
1、Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控,检测
功能都是通过各种插件来完成的。
2、启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个
队列,所有插件返回来的 状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行
处理后,把状态结果通过Web显示出来。
3、Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。按章完成后,在
Nagios主目录下的/libexec里放有Nagios自带的可以使用的所有插件,如:check_disk是
检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行
./check_xxx_ -h 来查看其使用方法和功能。
4、Nagios可以识别四种状态返回信息,即0(ok)表示状态正常/绿色,1(Warning)表示
出现警告/黄色,2(Critical)表示出现严重错误/红色,3(Unknown)表示未知错误/深黄
色。Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员
及时发现故障。
5、再说报警功能,如果监控系统发现问题不能报警那就没有意义了,所以报警也是Nagios
很重要的功能之一。但是,同样的,Nagios自身也没有报警部分 的代码,甚至没有插件,而
是交给用户或者其他相关开源项目组去完成的。
6、Nagios安装,是指基本平台,也就是Nagios软件包的安装,它是监控体系的框架,也是
所有监控的基础。
7、打开Nagios的官方文档,会发现Nagios基本上没有什么依赖包,只要求系统是Linux或
者其他Nagios支持的系统。㘝如果你没有安装Apache(HTTP服务),那么你就没有那么直观
的界面来查看监控信息了,所以Apache姑且算是一个前提条件。关于Apache的安装,网上有
很多,安装完看看是否正常运行就可以了。
8、知道Nagios是如何通过插件来管理服务器对象后,现在开始研究它是如何管理远程服务
器对象的。Nagios通过周期性的运行它来获得远端服务器的各种状态信息。他们之间的关系
如下图所示:
Nagios通过NRPE来远程管理服务
1.Nagios执行安装在它里面的check_nrpe插件,并告诉check_nrpe去检测那些服务。
2.通过SSL,check_nrpe链接远端机子上的NRPE 的deamon
3.NRPE 运行本地的各种插件去检测本地的服务和状态(check...disk...etc)
4.最后,NRPE把检测的结果传给主机端的check_nrpe,check_nrpe再把结果送到Nagios状态
队列中。
5.Nagios依次读物队列中的信息,再把结果显示出来。
NMP
数据收集方案
主动收集方案
被动收集方案
数据展示
nagios构建
实验环境
两台虚拟机
监控服务器 :192.168.190.111
被监控服务器:192.168.190.112
服务器安装
1)解决安装 Nagios 的依赖关系
yum -y install httpd gcc gcc-c++ glibc glibc-common *gd* php php-mysql openssl openssl-devel
# 若只挂载了一个镜像,那么在*gd* 时会报错
# 此时cd /media 执行安装即可
2)创建运行身份
groupadd nagcmd
useradd -m nagios
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apache
# 查看用户信息
id apache
id nagios
3)编译安装 nagios
# 上传镜像文件
mkdir /iso
mount -o loop nagios.iso /iso/
cp -a /iso/* /root/
# 解压安装
tar zxf nagios-3.3.1.tar.gz
cd nagios
./configure --with-command-group=nagcmd --enable-event-broker
make all
make install #安装主要的程序、CGI及HTML文件
make install-init #把nagios做成一个运行脚本,使nagios随系统开机启动
make install-config #安装一些配置文件以及文件位置。
make install-commandmode #给外部命令访问nagios配置文件的权限。
vim /usr/local/nagios/etc/objects/contacts.cfg
email nagios@localhost #这个是默认设置
make install-webconf #添加一个web接口
vim /etc/httpd/conf.d/nagios.conf
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" #9行定义脚本的别名
<Directory "/usr/local/nagios/sbin"> #定义了一个目录
Options ExecCGI #13行可运行CGI脚本
AllowOverride None #14行没有特殊权限开关
Order allow,deny #15行放行所有用户
Allow from all #16行允许所有用户访问
AuthName "Nagios Access" #20行指定当前浏览器显示的欢迎信息
AuthType Basic #21行指定当前认证方案
AuthUserFile /usr/local/nagios/etc/htpasswd.users #22行指定当前认证文件位置默认没有生成
Require valid-user #23行指定当前必须经过认证才能访问
Alias /nagios "/usr/local/nagios/share" #定义的别名
<Directory "/usr/local/nagios/share"> #定义了默认主页目录权限
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin #用户名是指定的不能更改否则运行脚本是找不到相应文件并报错没有权限
密码为123123
service httpd restart
vim /etc/httpd/conf/httpd.conf
ServerName www.example.com:80 #276行取消注释解决开启时报错
192.168.190.111/nagios #Windows网页访问
nagiosadmin #登录账户
123123 #登录密码
4)编译、安装 nagios-plugins
tar zxf nagios-plugins-1.4.14.tar.gz
yum -y install openssl openssl-devel
cd nagios-plugins-1.4.14
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-mysql --enable-perl-modules
make
make install
5)配置并启动 Nagios
chkconfig --add nagios
chkconfig nagios on
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
# -v检测配置文件是否有问题
service nagios start
192.168.190.111/nagios
server中的HTTP服务是WARNING状态原因是/var/www/html/下是空的
将里面添加一个主页文件即可
cd /var/www/html/
date > index.html
6)配置文件简介
cd /usr/local/nagios
bin Nagios执行程序所在目录,这个目录只有一个文件nagios
etc Nagios配置文件位置,初始安装完后,只有几个*.cfg-sample文件
include 用来加载子文件
libexec 检测脚本位置
sbin Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录
share Nagios网页文件所在的目录
var Nagios日志文件、spid 等文件所在的目录
cd etc
cgi.cfg 控制 CGI 访问的配置文件
htpasswd.user 认证文件
nagios.cfg Nagios 主配置文件
resource.cfg 宏配置文件,变量的定义,由其他配置文件引用,如$USER1$
objects objects 是一个目录,在此目录下有很多配置文件模板,用于定义 Nagios 对象
objects/commands.cfg 命令定义配置文件,其中定义的命令可以被其他配置文件引用
objects/contacts.cfg 定义联系人和联系人组的配置文件
objects/localhost.cfg 定义监控本地主机的配置文件
objects/printer.cfg 定义监控打印机的一个配置文件模板,默认没有启用此文件
objects/switch.cfg 监控路由器的一个配置文件模板,默认没有启用此文件
objects/templates.cfg 定义主机和服务的一个模板配置文件,可以在其他配置文件中引用
objects/timeperiods.cfg 定义 Nagios 监控时间段的配置文件
objects/windows.cfg 监控 Windows 主机的一个配置文件模板,默认没有启用此文件
备注: Nagios 在配置方面非常灵活,默认的配置文件并不是必需的。可以使用这些默认的
配置文件,也可以创建自己的配置文件,然后在主配置文件 nagios.cfg 中引用即可。
vim /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg #36行自己完成了自己的
监控定义
# 定义监控一台Windows主机
#如果想监控一台Windows主机需在Windows上下载NSClient++‐0.3.8‐Win32.
msi(32位)NSClient++‐0.3.8‐x64.msi(64位)组件
# Definitions for monitoring a Windows machine
# cfg_file=/usr/local/nagios/etc/objects/windows.cfg
#cfg_dir=/usr/local/nagios/etc/servers #如果有多台Linux虚拟机该目录下的所有
全被监控
#cfg_dir=/usr/local/nagios/etc/printers
#cfg_dir=/usr/local/nagios/etc/switches
#cfg_dir=/usr/local/nagios/etc/routers
vim etc/objects/localhost.cfg
check_command check_local_disk!20%!10%!/ #81行检测当前disk所用空间。整体‐显示数
字=所剩空间
check_command check_local_users!20!50 #94行定义当前主机的用户数
check_command check_local_procs!250!400!RSZDT #106行定义当前的进程数
check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0 #117行定义当前的负载
check_command check_local_swap!20!10 #129行检测当前swap空间
service_description SSH #140行检测有没有SSH服务
check_command check_http #检测是否有HTTP服务
2、配置 linux 端监控
1)创建用户
useradd nagios
2)为了安装 nrpe,先安装 nagios-plugins-1.4.14.tar.gz 插件
# 服务器操作
scp -r nagios-plugins-1.4.14.tar.gz root@192.168.190.112:/root/
# 被监控端
tar zxf nagios-plugins-1.4.14.tar.gz
cd nagios-plugins-1.4.14
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make all
make install
3)安装 nrpe
# 服务器操作
scp -r nrpe-2.12.tar.gz root@192.168.190.112:/root/
# 被监控端
tar -zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
yum ‐y install openssl openssl‐devel
./configure --enable-ssl --with-ssl-lib=/usr/lib64/
make all
make install-plugin
make install-daemon
make install-daemon-config
4)配置 nrpe 信息
vim /usr/local/nagios/etc/nrpe.cfg
59 allowed_hosts=192.168.190.111,127.0.0.1
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
netstat ‐natp
#tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 22147/nrpe
3、服务端安装 nrpe 插件
tar -zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
yum ‐y install openssl openssl‐devel gcc*
./configure --enable-ssl --with-ssl-lib=/usr/lib64/
make all
make install-plugin
cd /usr/local/nagios/libexec/
ls *nrpe*
4、服务器端commands.cfg 定义外部构件 nrpe
cd /usr/local/nagios/etc/objects
cp -a localhost.cfg linux.cfg
vim /usr/local/nagios/etc/objects/linux.cfg
define host{
use linux‐server
host_name mylinux
alias 第一台Linux服务器
address 192.168.190.112
}
define hostgroup{
hostgroup_name linux‐servers
alias Linux Servers
members localhost
}
#如果是Windows一定要定义主机组,不然无法正常监控
#43行以下全部删除,并添加mylinux.cfg定义内容
复制一个服务器端的远程连接
cd /usr/local/nagios/etc/objects/
vim commands.cfg
# 添加到第60行定义check_nrpe命令
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe ‐H $HOSTADDRESS$ ‐c $ARG1$
}
5、定义 mylinux.cfg
define service{
use generic-service
host_name mylinux
service_description check-load
check_command check_nrpe!check_load
}
define service{
use generic-service
host_name mylinux
service_description check-users
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name mylinux
service_description otal_procs
check_command check_nrpe!check_total_procs
}
cd ..
vim nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/linux.cfg #添加到37行
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
service nagios restart
注:本文为博主查阅多方资料整理而成,如有侵权请留言联系博主删除。
学习新东西,不要忘记复习旧知识,这样你才能更好!