Nagios监控服务器运行状态

1、Nagios简介

Nagios是一款开源免费的网路监视工具,可以监控的设备:Windows,Linux,Unix,Router,Switch,打印机等,具有报警功能,是一个网络监控系统。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

Nagios Core 原先设计在Linux下运行,当然,它在其他的Unix系统下应该也能进行工作。

官方网站:http://www.nagios.org

2、常见开源监控的对比和选择

1.Nagios+cacti整合互相弥补不足

nagios

功能:

数据报警(报警功能是Nagios的特色功能)[故障触发,故障恢复都可以依赖分析报警(能自动的识别到关键设备的故障,关联设备不会报警)。

数据采集(采集的数据是弱项,他只关心警戒位,只关心正常与否的状态,状态转换时可以实现报警,所以它采集的数据不需要保存),当然也有插件弥补这个不足,如PNP4Nagios。

cacti

cacti不是监控工具,他是个依赖于SNMP的数据采集和数据呈现的工具。

功能:

数据采集、保存数据[SQL,txt] 。

数据展示(rrdtool绘图)。

数据分析和报警。

2.zabbix监控

nagios和cacti不适合超大规模的监控、由于大规模的带宽和网络限制,会导致监控的延迟等问题,所以有很多是nagios+cacti整合,但是依然不适合在大规模的环境中,不适合分布式部署,Nagios在大规模中就会出现延迟,失去Nagios本事的特色。那么zabbix同时整合了cacti和Nagios特点的工具,而且还具有了前两者不具有的工具,支持分布式等等。

3.netdata监控

托管在github上的一款类型zabbix的开源监控工具https:/ /github.com/firehol/netdata。

4.open-falcon

小米公司开源的企业级监控工具。

5.Ganglia

类似于zabbix,大型分布式监控系统

3、数据采集的方式

SNMP:简单网络管理协议

Agent:代理的方式去采集数据

Shell脚本:通过脚本获取信息来采集

4、数据展示方式

java、php、APP

5、Nagios各种插件介绍

针对于Nagios,我们需要配合许多组件和插件来工作(打开很慢,需要翻墙):

https://www.nagios.org/downloads/nagios-core-frontends/ //Nagios界面很不美观,可以更换主题

https://www.nagios.org/downloads/nagios-core-addons/ //Nagios插件

https://exchange.nagios.org //各类拓展组件官方网站,包括脚本

https://exchange.nagios.org/directory/Addons //监控插件或脚本

6、Nagios运行模式和优点

运行模式:数据收集是C/S模式,用户查看监控信息是B/S模式

优点:

1.:监控网路服务状态(HTTPD,FTP,SSH,MySql……)

2.:监控主机资源(处理器符合,硬盘利用率……)

3.:拓展,根据自己的需求实现拓展检测功能(插件开发)

4:自动日志回滚

5:能够定义网络主机的层次,允许逐级检查,就是从父主机开始向下检查

6:警告,基于状态的警告:OK,Warning(警告),critical(关键),unknown(未知)

7.:可以支持并实现对主机的冗余监控

8.:Web界面可以查看当前网络状态,通知,问题历史,日志文件等

7、Nagios运行原理

Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。

两张比较经典的监控图

在大规模生产环境中,如果需要浏览历史数据,需要结合db

获取数据的方式:主动发送、NRPE插件、SNMP、NSClient++

8、Nagios 通过NRPE 来远端管理服务

1.Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。

2.通过SSL,check_nrpe 连接远端机子上的NRPE daemon

3.NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,..etc)

4.最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中

5.Nagios 依次读取队列中的信息,再把结果显示出来

9、Nagios所需要的软件

LAP环境,不需要mysql

nagios-3.5.1.tar.gz #Nagios核心文件,Nagios服务文件,不建议用最新,很多插件没做好

nagios-plugins-2.1.1.tar.gz #Nagios插件,用于存放脚本和命令

NSCP-0.5.0 #也就是Nsclient++,用来监控Windows,分为64位、32位版本

nrpe-2.15.tar.gz #代理服务,用于监控非Nagios服务器的服务器本地私有信息代理

vautour_style.zip #主题包

10、部署Nagios监控服务器

1.解决依赖和安装LAP环境

 [root@serverd ~]# yum install epel-release -y
 [root@serverd ~]# yum install -y gcc glibc glibc-common php gd gd-devel libpng libmng libjpeg zlib
 [root@serverd ~]# yum install -y httpd ; systemctl start httpd

2.创建Nagios运行用户

 [root@serverd ~]# useradd nagios
 [root@serverd ~]# groupadd nagcmd
 ##建立Nagios用户,这里不能使用nologin的shell,nagios会用到
 [root@serverd ~]# usermod -G nagcmd nagios
 [root@serverd ~]# usermod -G nagcmd apache

3.Nagios核心安装

 [root@serverd ~]# mkdir Nagios
 [root@serverd ~]# cd Nagios/
 [root@serverd Nagios]# ls
 nagios-3.5.1.tar.gz nagios-plugins-2.1.1.tar.gz
 nagios-4.2.4.tar.gz nrpe-2.15.tar.gz
 [root@serverd Nagios]# tar xvf nagios-3.5.1.tar.gz -C /usr/local/src/
 [root@serverd Nagios]# cd /usr/local/src/nagios/
 [root@serverd ~]# ./configure --with-command-group=nagcmd
 [root@serverd ~]# make all
 [root@serverd nagios]# make install && make install-init && make install-commandmode && make install-config && make install-webconf
 
 ##若是单步执行,每次执行下一步,都会提示你下一步需要干什么,非常easy
 makeinstall   #安装生成/usr/local/nagios/,其中/usr/local/nagios/share即nagiosWEB访问界面的站点目录
 makeinstall-init    #安装生成/etc/rc.d/init.d/nagios  启动脚本
 makeinstall-config      #安装生成/usr/local/nagios/etc下的nagios相关配置文件
 makeinstall-commandmode   #设定相应nagios工作目录的权限
 makeinstall-webconf         #安装Nagios的WEB配置文件到Apache的conf.d目录下

4.安装目录介绍

 ##在安装的时候,make install生成share这个目录,这个目录是访问界面目录:
 [root@serverd nagios]# ls /usr/local/nagios/share/
 config.inc.php images     js       robots.txt       side.php
 contexthelp     includes   main.php rss-corefeed.php ssi
 docs           index.php media     rss-newsfeed.php stylesheets
 ##在make install-init的时候,生成启动脚本
 [root@serverd nagios]# ls /etc/init.d/nagios
 /etc/init.d/nagios
 ##在make install-config的时候,生成了Nagios的相关配置文件
 [root@serverd nagios]# ls /usr/local/nagios/etc/
 cgi.cfg   nagios.cfg   objects       resource.cfg~
 cgi.cfg~ nagios.cfg~ resource.cfg
 ##在make install-webconf的时候,已经把web-conf的配置文件放入了/etc/httpd/conf.d/下面
 [root@serverd nagios]# ls /etc/httpd/conf.d/nagios.conf
 /etc/httpd/conf.d/nagios.conf

5.Nagios主目录

 [root@serverd nagios]# ll /usr/local/nagios/
 总用量 4
 drwxrwxr-x.  2nagios nagios   3811月 1122:39 bin
 drwxrwxr-x.  3nagios nagios  13011月 1122:39 etc
 drwxrwxr-x.  2nagios nagios    611月 1122:39 libexec
 drwxrwxr-x.  2nagios nagios 409611月 1122:39 sbin
 drwxrwxr-x. 10nagios nagios  25711月 1122:39 share
 drwxrwxr-x.  5nagios nagios   4511月 1122:39 var
 ----------------------------------------------------------------------
 bin             #Nagios执行程序所在目录
 etc             #nagios配置文件所在目录,初始安装只有几个*.cfg文件
 libexec        #监控所用命令,需要安装了nagios-plugins插件了才会有,检测命令,不装是空的
 sbin            #Nagios的Cgi文件所在目录,外部命令所需要的文件存放目录
 share          #Nagios前端页面
 var             #日志文件,pid文件等

6.nagios的配置文件

 [root@serverd nagios]# 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                        #主机检查超时时间
 event_handler_timeout=30                               
 notification_timeout=30
 ocsp_timeout=5
 perfdata_timeout=5
 ##此配置文件比nagios.cfg优先级高
 [root@serverd nagios]# vim /usr/local/nagios/etc/cgi.cfg
 main_config_file=/usr/local/nagios/etc/nagios.cfg             #主配置文件
 physical_html_path=/usr/local/nagios/share          #物理路径
 url_html_path=/nagios                               #在URL后面加上/nagios才能访问
 use_authentication=1                                #使用认证
 use_ssl_authentication=0                          #不使用ssl
 authorized_for_system_information=nagiosadmin       #认证用户

7.Nagios访问测试

 [root@serverd nagios]# systemctl restart httpd

打开

http://172.17.120.15/nagios/

8.创建用户名和密码

 ##查看vim /etc/httpd/conf.d/nagios.conf配置文件
 [root@serverd nagios]# vim /etc/httpd/conf.d/nagios.conf
 20  AuthName "Nagios Access"
 21  AuthType Basic
 22  AuthUserFile /usr/local/nagios/etc/htpasswd.users
 23  Require valid-user
 ##nagios 默认使用nagiosadmin来管理,如果使用其他用户名,对应的配置文件也要修改,创建用户名是nagiosadmin,密码123456。
 [root@serverd nagios]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin ## -c表示创建,二次添加用户,不能使用-c参数
 [root@serverd nagios]# systemctl restart httpd

9.检查配置文件,指定配置文件,以守护进程方式启动

 ##在nagios的目录下,bin目录下有一个nagios命令,这个命令可以帮助我们对配置文件的检查工作以及指定相关配置文件。
 [root@serverd nagios]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
 ##现在还没有做任何深入配置,所以现在只是可以登录而已!
 [root@serverd nagios]# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

10.安装Nagios-plugins插件

 ##Nagios-plugins含有丰富的检测命令插件,安装完成之后放在了/usr/local/Nagios/libexec下面
 [root@serverd nagios]# cd ~/Nagios/
 [root@serverd Nagios]# tar xvf nagios-plugins-2.1.1.tar.gz -C /usr/local/src/
 [root@serverd Nagios]# cd /usr/local/src/nagios-plugins-2.1.1/
 [root@serverd Nagios]# ./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
 [root@serverd Nagios]# make && make install
 [root@serverd nagios-plugins-2.1.1]# ls /usr/local/nagios/libexec/ ##可以看到已经有了很多check命令
 check_apt       check_ftp           check_mrtg     check_ping     check_udp
 check_breeze   check_http         check_mrtgtraf check_pop     check_ups
 check_by_ssh   check_icmp         check_nagios   check_procs   check_uptime
 check_clamd     check_ide_smart     check_nntp     check_real     check_users
 check_cluster   check_ifoperstatus check_nt       check_rpc     check_wave
 check_dhcp     check_ifstatus     check_ntp       check_sensors negate
 check_disk     check_imap         check_ntp_peer check_smtp     urlize
 check_disk_smb check_ircd         check_ntp_time check_ssh     utils.pm
 check_dummy     check_load         check_nwstat   check_swap     utils.sh
 check_file_age check_log           check_oracle   check_tcp
 check_flexlm   check_mailq         check_overcr   check_time

11.启动Nagios服务,检查环境

 [root@serverd nagios-plugins-2.1.1]# systemctl restart httpd

浏览器测试:登陆之后,点击hosts,可以看到,默认监控的是本机,说明环境没有什么问题

11、Nagios监控外部主机私有信息

1.私有信息,包括默认的硬盘使用,进程数目,SWAP分区等等

2.私有信息,就是我需要在本机登陆操作登陆的

3.非私有,就是可以通过远程的方式

4.只有监控私有信息的时候,才调用NRPE这个插件来通信

12、nrpe插件

通过NRPE(一个插件)服务可以添加本地信息的监控,将数据发送到我们的Nagios服务器

NRPE两部分组成,一部分是监控机check_nrpe,一部分是被监控机的NRPE守护进程。

Nagios 服务器执行check_nrpe 插件并告诉他检查哪个服务,check_nrpe 插件通过SSL 连接方式联系远程服务器上的NRPE守护进程,NRPE守护进程执行相应的插件完成指定的检查,并返回结果。

13、nrpe工作原理

Nrpe是基于SSL的机制,那么我们需要做的事情就是构建SSL环境,所以需要使用NRPE工作的时候,都需要安装SSL,而且服务端和客户端都需要安装nrpe软件,而我们客户端不需要安装NAGIOS服务端。

14、客户端的安装

1.解决依赖

 [root@serverd Nagios]# yum install -y openssl openssl-devel
 [root@serverc ~]# yum install -y openssl openssl-devel

2.服务端安装NRPE

 [root@serverd Nagios]# tar xvf nrpe-2.15.tar.gz -C /usr/local/src/
 [root@serverd Nagios]# cd /usr/local/src/nrpe-2.15/
 [root@serverd nrpe-2.15]# ./configure && make && make install ##安装插件
 [root@serverd nrpe-2.15]# make install-plugin && make install-daemon ##以守护经常来运行
 [root@serverd nrpe-2.15]# ls /usr/local/nagios/libexec/
 check_nrpe             ##这个命令需要安装nrpe之后才有

3.客户端配置

 [root@serverc Nagios]# useradd -s /sbin/nologin nagios
 [root@serverc Nagios]# groupadd nagcmd
 [root@serverc Nagios]# usermod -G nagcmd nagios
 [root@serverc Nagios]# yum install -y xinetd
 [root@serverc Nagios]# tar xvf nagios-plugins-2.1.1.tar.gz -C /usr/local/src/
 [root@serverc Nagios]# tar xvf nrpe-2.15.tar.gz -C /usr/local/src/
 [root@serverc Nagios]# cd /usr/local/src/nagios-plugins-2.1.1/
 [root@serverc nagios-plugins-2.1.1]# ./configure && make && make install
 [root@serverc nagios-plugins-2.1.1]# cd ../nrpe-2.15/
 [root@serverc nrpe-2.15]# ./configure && make && make install
 [root@serverc nrpe-2.15]# make install-daemon-config   ##这里是客户端,不用make-install-plugin
 [root@serverc nrpe-2.15]# make install-xinetd
 [root@serverc nrpe-2.15]# vim /etc/xinetd.d/nrpe
 # default: on
 # description: NRPE (Nagios Remote Plugin Executor)
 servicenrpe
 {
       flags           =REUSE
       socket_type     =stream
       port            =5666
       wait            =no
       user            =nagios
       group           =nagios
       server          =/usr/local/nagios/bin/nrpe
       server_args     =-c/usr/local/nagios/etc/nrpe.cfg --inetd
       log_on_failure  +=USERID
       disable         =no
       only_from       =127.0.0.1 172.17.120.15  ##添加 nagios服务器地址, 允许172.17.120.15这台机器来连接自己的nrpe服务,多个IP地址空格分隔
 }
 [root@serverc nrpe-2.15]# echo "nrpe 5666/tcp # NRPE" >> /etc/services ##端口注册
 [root@serverc nrpe-2.15]# systemctl restart xinetd
 [root@serverc nrpe-2.15]# netstat -antup | grep 5666
 tcp        0     00.0.0.0:5666            0.0.0.0:*               LISTEN      51257/xinetd   

4.客户端nrpe命令

 [root@serverc nrpe-2.15]# lsblk 
 NAME           MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
 sr0              11:0    11024M  0rom  
 vda             252:0    0  200G  0disk 
 ├─vda1          252:1    0  400M  0part /boot
 └─vda2          252:2    0199.6G  0part 
 ├─centos-root 253:0    0197.6G  0lvm /
 └─centos-swap 253:1    0    2G  0lvm [SWAP]
 [root@serverc nrpe-2.15]# vim /usr/local/nagios/etc/nrpe.cfg
 ##修改
 221command[check_vda1]=/usr/local/nagios/libexec/check_disk -w20% -c10% -p/dev/vda1
  ###-w为警告 -C为告急  vda1中,我们是指剩余10%
 [root@serverc nrpe-2.15]# systemctl restart xinetd

5.服务端手动测试

 [root@serverd nagios]# cd /usr/local/nagios/libexec/
 [root@serverd libexec]# ./check_nrpe -H 172.17.120.14
 NRPE v2.15
 [root@serverd libexec]# /usr/local/nagios/libexec/check_nrpe -H172.17.120.14 -c check_vda1
 DISK OK -free space: /boot 263MB (66% inode=99%);| /boot=132MB;316;356;0;396

6.定义被监控主机

 [root@serverd objects]# vim /usr/local/nagios/etc/nagios.cfg
  29# You can specify individual object config files as shown below:
  30cfg_file=/usr/local/nagios/etc/objects/commands.cfg
  31cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
  32cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
  33cfg_file=/usr/local/nagios/etc/objects/templates.cfg
  34
  35# Definitions for monitoring the local (Linux) host
  36cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
  37cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
  38cfg_file=/usr/local/nagios/etc/objects/service.cfg
 [root@serverd libexec]# cd /usr/local/nagios/etc/objects/
 [root@serverd objects]# vim hosts.cfg
  1define host{
  2      use                     linux-server
  3      host_name               serverc
  4      address                 172.17.120.14
  5      }
 [root@serverd objects]# vim service.cfg
  1define service{
  2        use                       local-service
  3        host_name                 serverc
  4        service_description         vda1_Partition
  5        check_command           check_nrpe!check_vda1
  6        }
 [root@serverd objects]# vim commands.cfg
 ##添加
 212#check_nrpe
 213define command{
 214        command_name   check_nrpe
 215        command_line    $USER1$/check_nrpe-H$HOSTADDRESS$ -c$ARG1$
 216        }

再次查看监控系统:

http://172.17.120.15/nagios/

本文分享自微信公众号 - 运维猫(centos15)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SSL证书以及https安全

SSL证书以及https对于网站安全的重要性

SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。

13050
来自专栏LIN_ZONE

Centos7源码编译安装PHP7.2(生产环境)

注:本文转自详解Centos7源码编译安装 php7.2之生产篇,如需转载请注明出处https://www.cnblogs.com/zhuchenglin/p/...

14220
来自专栏用户1082659的专栏

Java平台,标准版Oracle JDK 9中的新功能

Java Platform,Standard Edition 9是一个主要的功能版本。以下总结了Java SE 9和JDK 9的特点和增强功能,Oracle 对...

10370
来自专栏云技术+云运维

redhat linux6.5升级openssh到7.5p1

linux系统的安全加固,一般都会将openssh服务升级到最新版本,加强远程连接的安全性。

11210
来自专栏sringboot

SpringBoot整合mybatis一直失败差不到数据,解决方案

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

9130
来自专栏eguid开源技术分享

nginx反向代理cas-server之2:生成证书,centOS下使用openssl生成CA证书(根证书、server证书、client证书)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

10320
来自专栏用户1082659的专栏

kafka中文文档

之前的版本:0.7.x,0.8.0,0.8.1.X,0.8.2.X,0.9.0.X,0.10.0.X。

19610
来自专栏蘑菇先生的技术笔记

Go中http超时问题的排查

最新有同事反馈,服务间有调用超时的现象,在业务高峰期发生的概率和次数比较高。从日志中调用关系来看,有2个调用链经常发生超时问题。

16330
来自专栏云技术+云运维

centos安装rpm报Failed dependencies libseccomp.so.2

1、安装时提示:warning: *.rpm: Header V3 RSA/SHA256 Signature, keykey ID c105b9de: NOKE...

7310
来自专栏云技术+云运维

openssh8.0升级及问题总结

因安全漏扫软件扫描业务虚机,发现有openssh ssh存在漏洞,此次需将openssh5.3P1升级至OpenSSH_8.0p1

47310

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励