Linux监控系统之Nagios
Nagios工作原理
Nagios的功能是监控服务和主机,但是其自身并不包括这部分功能,所有的监控、检测功能都是听过各种插件去完成的。在启动Nagios后,它会周期性地去自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回的状态信息都进入队列,Nagios每次都会将从队首读取信息,进行处理后,再将状态结果通过web显示出来。
Nagios模式
被动模式:就如同上图所显示的那样,客户端起nrpe进程,服务端通过check_nrpe插件向客户端发送命令,客户端根据服务端的指示来调用相应的插件,插件可以获取到本机的相关信息,并把获取到的结果发送给服务端。因为需要调用客户端的插件去等带客户端返回的信息,所以叫做被动模式
主动模式:主动模式不需要调用客户端的插件,而是通过自己的插件主动去探测客户端的相关信息。
那么,因为主动模式和被动模式的区别这两种模式所擅长监控的服务也是不同的。
Nagios功能
- 监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);
- 监控主机资源(处理器负荷、磁盘利用率等);
- 简单地插件设计使得用户可以方便地扩展自己服务的检测方法;
- 并行服务检查机制;
- 具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
- 当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);
- 可以定义一些处理程序,使之能够在服务或者主机发生故障时起到预防作用;
- 自动的日志滚动功能;
- 可以支持并实现对主机的冗余监控;
- 可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;
- 可以通过手机查看系统监控信息;
- 可指定自定义的事件处理控制器
试验环境
角色 | IP地址 |
---|---|
监控主机 | 192.168.58.146 |
被监控主机 | 192.168.58.149 |
实验实施
首先我们需要搭建LAMP服务,这个前面已经介绍过,这里就不多加赘述
安装Nagios所需要的依赖包
[root@localhost ~]# yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel
添加用于管理Nagios的进程用户
[root@localhost ~]# useradd -s /sbin/nologin nagios
创建用于安装Nagios的目录
[root@localhost ~]# mkdir /usr/local/nagios
改变Nagios安装目录的属主和属组
[root@localhost ~]# chown -R nagios.nagios /usr/local/nagios
下面进行编译安装Nagios
[root@localhost ~]# tar xf nagios-4.0.1.tar.gz -C /opt/
#将安装包解压到/opt目录下面
[root@localhost ~]# cd /opt/nagios-4.0.1/
#切换至解压路径下
[root@localhost nagios-4.0.1]# ./configure --prefix=/usr/local/nagios
#配置Nagios安装路径
[root@localhost nagios-4.0.1]# make all
由于nagios分很多单独的文件,所以使用make all来编译所有的的单独的文件
[root@localhost nagios-4.0.1]# make install
#这是编译安装主程序包括CGI和HTML文件
[root@localhost nagios-4.0.1]# make install-init
#编译安装一些初始化脚本
[root@localhost nagios-4.0.1]# make install-commandmode
#这是为外部命令文件所在的目录安装和配置权限
[root@localhost nagios-4.0.1]# make install-config
#这是安装一些配置的模板文件,主要在/usr/local/nagios/etc目录下面
[root@localhost nagios-4.0.1]# chkconfig --add /etc/rc.d/init.d/nagios
#将nagios添加到chkconfig系统管理中
[root@localhost nagios-4.0.1]# chkconfig --level 35 nagios on
#设置nagios在35级别开启自启动
这时候我们可以去/usr/local/nagios/目录下查看是否生成相关文件目录
[root@localhost nagios-4.0.1]# ls /usr/local/nagios/
bin etc libexec sbin share var
安装nagios-plugins服务
[root@localhost ~]# tar xf nagios-plugins-1.5.tar.gz -C /opt/
[root@localhost ~]# cd /opt/nagios-plugins-1.5
[root@localhost nagios-plugins-1.5]# ./configure --prefix=/usr/local/nagios
#将它安装到nagios目录下
[root@localhost nagios-plugins-1.5]# make && make install
#编译安装
修改apache服务的配置文件
[root@localhost ~]# vim /etc/httpd.conf
创建httpd账户验证文件
[root@localhost ~]# htpasswd -c /usr/local/nagios/etc/htpasswd jack
[root@localhost ~]# cat /usr/local/nagios/etc/htpasswd
jack:$apr1$cTieBr/D$vWomztP4eURmUTxxv1WFv0
#可以看到我们添加的账户以及密码
修改nagios配置文件,配置文件一般在/usr/local/nagios/etc/objects下面
- templates.cfi文件
主要用于监控主机资源以及服务,在nagios配置中称为对象,为了不必重复定义一些监控对象,Nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用。
[root@localhost etc]# cd /usr/local/nagios/etc/objects/
[root@localhost objects]# ls
commands.cfg hosts.cfg printer.cfg switch.cfg timeperiods.cfg
contacts.cfg localhost.cfg services.cfg templates.cfg windows.cfg
[root@localhost ~]# sed -i 'contact_groups/s/admins/ts/g' /usr/local/nagios/etc/objects/templates.cfg
- resource.cfg文件
resource.cfg是nagios的变量定义文件一般无需更改
- commands.cfg文件
此文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可。
- hosts.cfg文件
此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息。
[root@localhost objects]# vim hosts.cfg
define host{
use linux-server#引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。
host_name Nagios-Linux#主机名
alias Nagios-Linux#主机别名
address 192.168.58.149#被监控的主机地址,这个地址可以是ip,也可以是域名。
}
#定义一个主机组
define hostgroup{
hostgroup_name bsmart-servers#主机组名称,可以随意指定。
alias bsmart servers#主机组别名
members Nagios-Linux#主机组成员,其中“Nagios-Linux”就是上面定义的主机。
}
- localhost.cfg文件
用来监控本机 一般无需更改
- windows.cfg文件
用来监控windows 这里无需使用
- services.cfg文件
此文件默认也不存在,需要手动创建主要用于定义监控的服务和主机资源。
[root@localhost objects]# vim services.cfg
define service{
use local-service#引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。
host_name Nagios-Linux#指定要监控哪个主机上的服务,“Nagios-Linux”在hosts.cfg文件中进行了定义。
service_description check-host-alive#对监控服务内容的描述,以供维护人员参考。
check_command check-host-alive#指定检查的命令。
}
- contact.cfg文件
contacts.cfg是一个定义联系人和联系人组的配置文件。
[root@localhost objects]# vim contacts.cfg
define contact{
contact_name jack#联系人的名称,这个地方不要有空格
use generic-contact#引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义
alias Nagios Admin
email admin@123.com
}
define contactgroup{
contactgroup_name ts#联系人组的名称,同样不能空格
alias Technical Support#联系人组描述
members jack#联系人组成员,其中“jack”就是上面定义的联系人,如果有多个联系人则以逗号相隔
}
- cgi.cfg文件
此文件用来控制相关cgi脚本
由于nagios的web监控界面验证用户为jack,所以只需在cgi.cfg文件中添加此用户的执行权限。
[root@localhost objects]# cd ../
[root@localhost etc]# ls
cgi.cfg htpasswd nagios.cfg objects resource.cfg
[root@localhost etc]# vim cgi.cfg
在最后加入
default_user_name=jack
authorized_for_system_information=nagiosadmin,jack
authorized_for_configuration_information=nagiosadmin,jack
authorized_for_system_commands=jack
authorized_for_all_services=nagiosadmin,jack
authorized_for_all_hosts=nagiosadmin,jack
authorized_for_all_service_commands=nagiosadmin,jack
authorized_for_all_host_commands=nagiosadmin,jack
- nagios.cfg文件
将对象配置文件在Nagios.cfg文件中进行引用
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg
command_check_interval=10s #该变量用于设置nagios对外部命令检测的时间间隔
都配置完了我们可以通过相关命令进行检测。
[root@promote objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果出现下面回应,说明配置成功。
最后开启nagios服务
[root@localhost ~]# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
重启mysql和httpd服务,进行网页测试访问http://192.168.58.146/nagios
来源:51CTO
作者:xiaoyaokeyx
链接:https://blog.51cto.com/10693404/2164296