Nagios详解(基础、安装、配置文件解析及监控实例)

一、Nagios基础
1.简介
Nagios是一款开源网络监视工具。
可监控网络服务(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH、PING~~~)、监控主机资源、根据需求设置相关插件监控、通过Email,短信及用户自定义方式实施警报、可选的web界面查看当前网络状态、通知和故障历史、日志文件等。
2.工作原理
Nagios的功能是监控服务和主机,但其监控、检测功能时通过插件完成。
3.工作对象:
1).主机(交换机、路由器、虚拟机~~~),由多个主机组成组称为的主机组;
2).服务(通过监听在某个套接字上对外输出信息),由多个服务组成的组称为服务组;
3).联系人,由多个联系人组成的组称为联系人组;
4).时段(定义监控对象在指定时间段处于非正常情况下时发出告警),无时段组概念;
5).命令(对不同监控对象所设定的告警阀值不同,即需将对其监控工具的插件做相应修改后应用与监控对象)。
4.监控状态
状态 正常 警告 严重 未知错误
代码 OK WARNING CRITICAL UNKOWN
颜色 绿色 黄色 红色 深黄色
5.图示

Nagios系统提供插件NRPE,其通过周期性运行插件获得远端服务器各种状态信息并管理。
1)Nagios执行check_nrpe插件,同时确定检测服务对象;
2)通过SSL,check_nrpe连接远端机器上的NRPE daemon;
3)NRPE运行本地插件检测本地服务与状态(check_disk,check_etc~~~);
4)NRPE将检测结果传输给主机端的check_nrpe,再送到Nagios状态队列;
5)Nagios依次读取队列信息,显示结果。
6.软件版本

7.object:各种对象的配置文件所存放的目录
定义命令对象:commands.cfg
define command{
command_name check-host-alive
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,% -c 5000.0,% -p
}
command_name:定义命令名称,可自定义,必须全局唯一;
command_line:定义真正执行的自定义模板,即将各种对被监控主机的特殊属性传递给模板,应用到被监控对象;
-H:指定被监控对象的主机名或IP,其主机地址通过宏变量$HOSTADDRESS$进行引用,该变量会根据上下文自动引用当前被监控主机的地址;
-w:warning的阈值(-w 3000.0,80% 意:延迟3000ms,丢包率达80%时告警);
-c:critical的阈值(-c 5000.0,100% 意:延迟5000ms,丢包率达100%处于critical状态);
-p:定义总共统计数据包数量。
定义上下文内容:contacts.cfg
define contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Admin
email kazihuo888@sina.com
}
contact_name:定义联系人名字,必须全局唯一;
use:指定从哪个模板继承属性;
alias:对contact_name定义描述性名称;
email:接收邮件的地址。
定义时段:timeperiods.cfg
define timeperiod{
timeperiod_name 24x7
alias Hours A Day, Days A Week
sunday :-:
monday :-:
tuesday :-:
wednesday :-:
thursday :-:
friday :-:
saturday :-:
}
定义模板:templates.cfg
define host{
name generic-host
notifications_enabled
event_handler_enabled
flap_detection_enabled
process_perf_data
retain_status_information
retain_nonstatus_information
notification_period 24x7
register
}
notifications_enabled:是否发送通知;
event_handler_enabled:是否启动额外的处理器;
flap_detection_enabled:是否检测flap,即是否对状态频繁转换的服务或主机做特定检测;
process_perf_data:进程性能数据是否输出;
retain_status_information:是否保存状态信息;
retain_nonstatus_information:是否保存非状态信息;
notification_period:指定发送通知时间(使用timeperiods.cfg文件中时段);
register :定义为模板,即可被其他主机或服务引用。
define host{
name linux-server
use generic-host
check_period 24x7
check_interval
retry_interval
max_check_attempts
check_command check-host-alive
notification_period workhours
notification_interval
notification_options d,u,r
contact_groups admins
register
}
define host
check_command:定义检测主机命令;
notification_period:定义发送通知时间(workhours,即为timeperiods.cfg中定义的workhours的时间段):
notification_interval:发送警告信息的时间间隔,单位为分钟;
notification_options:被监控对象达到某状态时发送警告信息(d:done 服务宕机;u:unknown 未知状态;r:recovery 已重新上线);
定义被监控主机与被监控主机上的被监控对象的配置文件:localhost.cfg
define host{
use linux-server
host_name localhost
alias localhost
address 127.0.0.1
}
use:引用模板,并继承引用其模板的属性信息;
address:当前主机的IP地址。
define service{
use local-service
host_name localhost
service_description PING
check_command check_ping!100.0,%!500.0,%
}
define service
host_name:指定被监控的服务运行在哪个主机上,因实现使用define host定义;
二、Nagios安装
实验前建议关闭selinux
Nagios安装:
1.解决依赖关系
#yum install -y gcc glibc glibc-common gd gd-devel php php-mysql mysql mysql-server mysql-devel openssl-devel
2.添加用户与组
#groupadd -r nagcmd
#useradd -G nagcmd -r -s /sbin/nologin nagios
#echo 'redhat'|passwd --stdin nagios &> /dev/null
#usermod -a -G nagcmd apache 添加apache用户到nagcmd组
3.编译安装
#tar -zxvf nagios-3.3.1.tar.gz
#cd nagios-3.3.1
#./configure --sysconfdir=/etc/nagios --with-command-group=nagcmd --enable-event-broker --prefix=/usr/local/nagios
--enable-event-broker 选项是为NDOUtils提供服务。
#make all
#make install
#make install-init 初始化脚本
#make install-commandmode 设置运行目录权限
#make install-config 配置文件
#make install-webconf web接口,其用于识别nagios程序的位置,而实际nagios网页目录在/usr/local/nagios/share
4.修改默认联系人
#vim /etc/nagios/objects/contacts.cfg
email nagios@localhost ==> xxx@xxx
5.创建web接口管理员
#htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
#cat /etc/httpd/conf.d/nagios.conf 验证web认证用户身份时是否是读取/etc/nagios/htpasswd.users文件
6.启动httpd
#/etc/init.d/httpd start
7.安装插件
#tar -zvxf nagios-plugins-1.4.15.tar.gz
#cd nagios-plugins-1.4.15
#./configure --with-nagios-user=nagios --with-nagios-group=nagios
注:若需监控mysql服务器需在编译时指定其安装路径 --with-mysql=DIR
8.启动nagios
#chown -R nagios.nagcmd /etc/nagios
#chown -R apache.nagcmd /etc/httpd
#chown -R nagios.nagcmd /usr/local/nagios
#chkconfig --add nagios
#chkconfig nagios on
#/etc/init. nagios start
三、Linux监控实例
监控Linux服务器
监控端IP:192.168.11.128 被监控端:192.168.11.132
监控端:
1.启用check_nrpe插件
#vim /etc/nagios/objects/command.cfg
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
2.编辑Nagios配置文件,添加Linux服务器模板文件
#vim /etc/nagios/nagios.cfg
# Definitions for monitoring a Linux machine
cfg_file=/usr/local/nagios/etc/objects/linux.cfg
3.安装nrpe
#cd /tmp
#tar -zxvf nrpe-2.15.tar.gz
#cd nrpe-2.15
#./configure
#make all
#make install-plugin
#ls /usr/local/nagios/libexec/check_nrpe
被监控端:
1.添加用户
#useradd nagios
#echo "000" |passwd --stdin nagios &> /dev/null
2.安装plugins
#cd /tmp
#tar -xzvf nagios-plugins-2.1.1.tar.gz
#./configure --with-nagios-user=nagios --with-nagios-group=nagios
#make
#make install
#chown -R nagios.nagios /usr/local/nagios/
#ll /usr/local/nagios/
3.安装nrpe
#cd /tmp
#tar -zxvf nrpe-2.15.tar.gz
#cd nrpe-2.15.tar.gz
#./configure
#make all
#make install-daemon
#make install-daemon-config
4.配置nrpe信息
#vim /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=192.168.11.128 监控端主机IP
5.启动nrpe
#usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
或添加到开机启动
#vim /etc/rc.d/rc.local
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
#netstat -atunpl |grep nrpe
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 24735/nrpe
监控端:
1.测试
#cd /usr/local/nagios/libexec
#./check_nrpe -H 192.168.11.132
NRPE v2.15
2.配置linux.cfg文件
#cd /etc/nagios/objects
#cp -p windows.cfg linux.cfg
define host{
use linux-server
host_name linux_server
alias My linux Server
address 192.168.79.132
}
define service{
use generic-service
host_name linux_server
service_description check-swap
check_command check_nrpe!check_swap
}
define service{
use generic-service
host_name linux_server
service_description check-disk
check_command check_nrpe!check_sda1
}
linux.cfg
注:被监控端添加:
command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
被监控端重启nrpe:
#kill -9 `ps aux | grep nrpe | grep -v grep | awk -F" " '{ print $2 }'`
#/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
监控端重启nagios:
/etc/init.d/nagios restart
登录WEB接口:192.168.11.128/nagios检测服务。
Nagios详解(基础、安装、配置文件解析及监控实例)的更多相关文章
- HTTPD之二————HTTPD服务详解————httpd的配置文件常见设置
HTTPD之二----HTTPD服务详解----httpd的配置文件常见设置 HTTP服务器应用 http服务器程序 httpd apache nginx lighttpd 应用程序服务器 IIS,a ...
- SpringBoot之DispatcherServlet详解及源码解析
在使用SpringBoot之后,我们表面上已经无法直接看到DispatcherServlet的使用了.本篇文章,带大家从最初DispatcherServlet的使用开始到SpringBoot源码中Di ...
- 详解Linux安装GCC
为你详解Linux安装GCC方法 2009-12-11 14:05 佚名 博客园 字号:T | T 现在很多程序员都应用GCC,怎样才能更好的应用GCC.本文以在Redhat Linux安装GCC4. ...
- bt协议详解 基础篇(上)
bt协议详解 基础篇(上) 最近开发了一个免费教程的网站,产生了仔细了解bt协议的想法,所以写了这一篇文章,后续还会写一些关于搜索和索引的东西,都是在开发这个网站的过程中学习到的技术,敬请期待. 1 ...
- yum 命令详解-yum仓库配置文件详解
yum安装的优点 1.必须得有网络,通过网络获取软件. 2.管理rpm包 3.自动解决依耐 4.命令简单好用 5.生产最佳实践 yum命令详解 # linux安装软件的三种方式 1.rpm安装 2.源 ...
- bt协议详解 基础篇(下)
bt协议详解 基础篇(下) 最近开发了一个免费教程的网站,产生了仔细了解bt协议的想法,所以写了这一篇文章,后续还会写一些关于搜索和索引的东西,都是在开发这个网站的过程中学习到的技术,敬请期待. 1 ...
- 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂安装过程详解及安装失败解决方法
因Excel催化剂用了VSTO的开发技术,并且为了最好的用户体验,用了Clickonce的布署方式(无需人工干预自动更新,让用户使用如浏览器访问网站一般,永远是最新的内容和功能).对安装过程有一定的难 ...
- Windows系统Git安装教程(详解Git安装过程)
Windows系统Git安装教程(详解Git安装过程) 今天更换电脑系统,需要重新安装Git,正好做个记录,希望对第一次使用的博友能有所帮助! 获取Git安装程序 到Git官网下载,网站地址: ...
- 重装Windows系统 入门详解 - 基础教程
重装Windows系统 入门详解 - 基础教程 JERRY_Z. ~ 2020 / 10 / 13 转载请注明出处!️ 目录 重装Windows系统 入门详解 - 基础教程 一.说明 二.具体步骤 ( ...
随机推荐
- WEB开发-动态验证码
1.基于Python实现,用到了django后台处理,刷新验证码功能,其他语言大同小异 2.登录界面 login.html <!DOCTYPE html> <html lang=&q ...
- Storm实践
1.Storm命令 在Linux中观直接输入Storm,不带任何参数信息,可以查看Storm命令. 参考这里 1. activate 激活指定的拓扑Spout.语法:storm activate t ...
- JAVA多线程与并发学习总结
1. 计算机系统 使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行:当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了. 缓 ...
- mysql主键,外键,索引
主键 唯一而非空,只能有一个 作用: 1.唯一的标识一行 2.作为一个可以被外键有效引用的对象 3.保证数据完整性 设计原则: 1. 主键应当是对用户没有意义的.如果用户看到了一个表示多对多关系的 ...
- linux 存储技术 部署iSCSI NFS Multipath多路径
存储技术应用存储是根据不同的应用环境通过采取合理,安全,有效的方式将数据保存到某些介质上并能保证有效的访问另一方面,它是保证数据完整安全存放的方式或行为存储就是把这两方面结合起来,向客户提供一套数据存 ...
- Vxworks下的SATA提速
1. ATA接口的三种数据传输方式 (1)PIO(Programmable Input-Output)传输,可以分为PIO寄存器传输和PIO数据传输.PIO寄存器传输主要用于对ATA设备中 ...
- Linux显示目前与过去登入系统的用户相关信息
Linux显示目前与过去登入系统的用户相关信息 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ last youhaido pts/0 :0 Sat Jan 2 ...
- [RPC Fault faultString="Cannot invoke method 'saveOrUpdate'." faultCode="Server.ResourceUnavailable"
1.错误描述 [RPC Fault faultString="Cannot invoke method 'saveOrUpdate'." faultCode="Serve ...
- Python与Memcached交互
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...
- Unity开发之实现更换鼠标图片
在玩游戏的时候,感觉游戏里的鼠标图片特酷炫,23333,今天我就总结了两种方法! 我是做Unity开发的,所以方法仅针对于Unity平台........ 方法如下: 1.Unity客户端直接更改,步骤 ...