设为首页 收藏本站
查看: 665|回复: 0

Nagios企业监控讲解

[复制链接]

尚未签到

发表于 2019-1-12 11:05:05 | 显示全部楼层 |阅读模式
  Nagios企业监控讲解
  一、关于Nagios
  Nagioss 是经典老牌子监控,伴随着一代运维工程师们路路成长,即便到了现在也广泛在企业中使用。Nagios有三个特点决定了它屹立不倒的优势:
  第一: Nagios跟其他监控产品比起来是部署和配置最便便捷,没有之一,且最容易易入门的开源监控产品. 企业的老总们最喜欢的就是省时快速的完成工作
  第二:Nagios对于各种基础服务层面的监控就是两个字"完善"这得益于Nagios的很多对于监控项目的基本计算方式都十分的直接有效,且非常符合一般人们对于"监控"的实现理理念.
  第三:新的监控产品虽然很多,但是这里有一个奇怪现象:一般企业中面试运维工程师/架构师,到了监控这里不问别的就爱问Nagios相关的问题。对于各个企业来说,已经是用来考核一个合格的运维工程师的基本素养的指标了了。
  二、Nagios的两种核心工作模式
  1、nagios的第一种工作模式:远程直连采集
  远程直连采集工作模式是什么意思呢?Nagios的监控服务器端需要采集被监控机器器的数据,而被监控机器器上的一些数据例如:
  IP地址通不通
  端口通不通
  2、Nagios第二种工作模式:桥接间接采集
  CPU负载,硬盘剩余,进程存在等等,类似这样的数据本身并不不是一个"服务"好比硬盘剩余多少,这是一项客户端Linux系统上的自身的状态本身不像SSH服务一样可以被外界直接访问到,如果nagios服务端想获取客户端硬盘状况没有办法直接从网络连上去获取,那怎么办呢?这就要提到 Nagios的一个扩展功能,NRPE组件。
  三:开始安装Nagios服务端和NRPE组件
  首先做linux服务器时间同步
  时间服务器可以从http://www.pool.ntp.org/zh/这里查看
  [root@elk ~]# ntpdate 1.cn.pool.ntp.org
  由于我们的yum源不包含nagios包,所以要先安装一下epel-release。
  [root@Cent65 ~]# yum -y install epel-release
  nagios本身不不带web server,但是需要以web的形式体现出来,所以需要先安装httpd(apache)
  1、安装http
  [root@Cent65 ~]# yum install httpd
  安装完成后启动服务,检查是否安装成功。
  root@Cent65 ~]# service httpd restart
  [root@Cent65 ~]# netstat -anptu | grep 80
  查看一下网站信息
  [root@Cent65 ~]# curl -I 192.168.1.65
  2、安装nagios*nrpe
  [root@Cent65 ~]# yum install nagios* nrpe
  安装完之后启动
  [root@Cent65 ~]# service nagios start
  启动之后我们来设置⼀下nagios的初始登录密码:
  这里我们默认用nagiosadmin作为登录名,密码为123456
  (注:如果web管理理员不是使用默认的nagiosadmin, 需要修改cgi.cfg
  # vim /usr/local/nagios/etc/cgi.cfg
  //把所有的nagiosadmin改为自定义的用户名)
[root@Cent65 ~]# htpasswd -c /etc/nagios/passwd nagiosadmin  接下来在我们的浏览器输入:
  http://192.168.1.65/nagios
  四、Nagios如何设置配置文件(一):节点定义.
  配置文件路径
  [root@Cent65 ~]# cd /etc/nagios/objects
  如下便是我们要找到的配置路路径可以看到已经有好多以cfg结尾的默认配置文件了,不过这些其实都是一些自带的模板我们当前用不上,我们先关注 localhost.cfg文件。
  1、 定义节点
  [root@Cent65 objects]# vim localhost.cfg
  内容如下:
define host{
use linux-server ; Name of host template to use
; This host definition will inherit all variables that are defined
; in (or inherited by) the linux-server host template definition.
host_name    Centos_67
alias        localhost
address      192.168.1.67
}  我们可以通过复制这段文件把要被监控的机器加进来。
  需要修改的地方:
  host_nameCentos_67(注:Centos_67这是自己取的名字是唯一标识符号,不可以重复,后面会被反复的调用,名字可以随便取,建议FQDN)。
  alias别名,任意取名。
  address被监控节点的 IP地址。
  添加完节点之后重启nginx
  [root@Cent65 objects]# service nagios restart
  接下来回到我们的浏览器http://192.168.1.65/nagios/
  点击左侧的host按钮,在我们的监控列表中会出现Centos_67主机。
  五、Nagios如何设置配置文件(二):组定义和Service定义
  在Nagios中各个节点的定义毕竟是分散的,我们可以将属于一类的'节点' 统一成一个'组'。接下来我们来看下配置文件的定义:

define hostgroup{
        hostgroup_name  ceshi ; The name of the hostgroup
        alias           Linux Servers ; Long name of the group
        members         localhost,Centos_67     ; Comma separated list of hosts that belong to this group
        }  如上这一段添加到localhost.cfg,就是把之前的节点(包括本机)都加入到一个host_group组当中。

  hostgourp_name定义组名称很好理理解
  alias 是起一个组别名
  members后面接上各个节点的host_name,注意这里的host_name 就是节点当中的 host_name,必须一致,名称用逗号公开,且不可以使用别名。
  然后继续重启nagios。
  [root@Cent65 objects]# service nagios restart
  打开网页界面:点击左侧的Host Groups按钮。会显示出我们刚才设置的ceshi组。
  六、Nagios service(服务)的定义
  定义服务,就是来定义我们需要监控的主机上面跑的服务。
  我们来看如下这一段,取自localhost.cfg中这一段就是默认模板提供的 service定义方法用来监控机器器各类服务(软件)
defineservice{
use local-service ;Nameofservice templatetouse
host_name localhost
service_description SSH
check_command  check_ssh
notifications_enabled 0
}  Use字段我们保留不更改。
  host_name:
  这里写上在define_host当中定义的节点名字注意必须跟之前的host_name一致不然Nagios找不到,这里也再次证明了,定义节点是多么的关键,后续会大量的二次引用。
  service_description
  这里仅仅是这一项服务监控的注解,可以随意写成你要的名字。
  check_command这是最关键的一项了,定义这项服务监控具体要监控什么内容调什么监控脚本去执(后我会讲到脚本自定义)。
  notifications_enabled
  是否开启提醒功能。1为开启,0为禁用。也就是是否启报警。也就是是否开启报警针对这一项服务的监控(我后面会讲到报警 Pagerduty)。
  接下来我们来做一个Centos_67上的SSH服务监控,继续在localhost.cfg文件中添加定义以下内容:
define service{
use  local-service  ; Name of service template to use
host_name  Centos_67
service_description SSH
check_command  check_ssh
notifications_enabled 0
}  重启nagios服务后再来看一下nagios的主页.
  选择左侧的services,发现已经有了Centos_67的ssh监控。
  接下来,我们来监控一下http服务。在localhost.cfg后面添加如下配置:
defineservice{
use local-service ;Nameofservice templatetouse
host_name Centos_67
service_description HTTP
check_command check_http
notifications_enabled 0
}  客户端要提前安装好http服务并启动,我们以apache为例:
  [root@cent67 ~]# yum -y install httpd
  [root@cent67 ~]# service httpd start
  登录nagios网页端查看:
  那么如果我们要监控的网站使用的不是默认80端口,而是指定的其他端口怎么办呢?我们如何来灵活的改动监控呢?
  七、服务监控插件的配置
  上面这一段service配置中,红色标记的部分,之所以能直接调用check_http并不是凭空出现的,而是有依据的。这个依据就是nagios的插件(我们之前安装的时候不是安装了很多nagios-plugins这个就是插件)。
  nagios定义service中check_command其实就是通过调用插件当中预先设置好的这些脚本(check_http其实就是个脚本)才能实现监控的。
  我们来分析下这些脚本和插件的关联:
  (1)首先从rpm中先找到跟http相关的nagios插件
  [root@centos65 objects]# rpm -qa | grep nagios-plugins | grep http
  check_http这个脚本其实就来自于这个插件。
  (2)接下来我们来查看这个插件中都包含了什么具体文件(脚本)
  [root@centos65 objects]# rpm -ql nagios-plugins-http-2.2.1-4git.el6.x86_64
  /usr/lib64/nagios/plugins/check_http
  如上就可以看到,其实check_http是放在了一个默认的nagios插件路径当中了,作为脚本被 nagios调用。
  (3)check_http这个脚本找到后,我们在Linux本地来试一下。
  [root@centos65 objects]# /usr/lib64/nagios/plugins/check_http -H 192.168.1.67
  HTTP OK: HTTP/1.1 200 OK - 253 bytes in 0.001 second response time |time=0.000980s;;;0.000000 size=253B;;;0
  发现原来这个脚本不光可以被nagios的check_command直接调用 它自身还可以直接被咱们执行并能返回结果。
  (4)我们把Centos_67的 httpd端口改到8080
  改好之后原本的nagios配置的check_http就监控不到了。
  [root@centos65 objects]# /usr/lib64/nagios/plugins/check_http -H 192.168.0.66
  那么怎么办呢?我们现在Linux本地试试check_http脚本是 否支持端口改变。
  [root@centos65 objects]# /usr/lib64/nagios/plugins/check_http -H 192.168.0.66 -p8080
  手动本地运行测试,我们可以灵活改动,现在我们需要建立和nagios的关联)接下来咱们就来看看怎么建立这样的关联。首先我们先找到这个配置文件:
  /etc/nagios/objects/commands.cfg
  此文件中这一段配置,
  其实是把check_http定义出来名称以及使用方法参数如何调用都是在这里设置的。所以说,在define_service中的check_http,其实 先要在command.cfg中定义出来。来看一下这一行:
  command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
  $USER1$:/usr/lib64/nagios/plugins/check_xxxx
  $ARG1$:这个参数的值是需要在service中自行定义添加进去的 (define_service,ARG1传参数)。
  接下来一段defineservice的定义:
defineservice{
use local-service ;Nameofservice templatetouse
host_name Centos_67
service_description HTTP
check_command check_http!-p8080
notifications_enabled 0
}  注意红色标记部分,这就是在service中调用监控脚本时候,添加额外参数的方法 使用!分开,参数的使用方法跟本地命令行是一模一样的。接下来看一下监控的Centos_67机器的HTTP服务就正常了。
  八、通过NRPE建立桥接方式监控
  刚才举的几个例子其实都是属于之前说过的nagios第一种监控形式"直接连接监控",那如果想监控例如CPU硬盘内存怎么办呢?自然就是要使第二种形式"间接桥接获取",通过NRPE这个插件来实现。
  接下来开始安装间接监控NRPE:
  (1)首先需要在Nagios的服务端和被监控客户端都安装NRPEnagios-plugins两个组件。
  开始服务端安装的时候yum install nrpe(nagios-plugins*之前已经安装过了),所以现在不用安装了。
  客户端安装
  先安装一下epel-release,来提供我们的安装包。
  [root@centos66 ~]# yum -y install epel-release
  接下来安装插件:
  [root@Cent67 ~]# yum install -y nrpe nagios-plugins*
  (2)
  接下来回到服务端Centos_65, 到localhost.cfg配置文件,末尾加入如下内容:定义check_nrpe:
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}  再在nagios服务端localhost.cfg配置文件末尾再添加如下的一项service,用来监控Centos_67上面的CPU的负载状况:
define service{
use  local-service ;Name of service template to use
host_name  Centos_67
service_description  UPTIME
check_command  check_nrpe!check_cpu
notifications_enabled 0
}  接下来配置客户端
  check_cpu这个脚本属于间接获取数据使用,所以check_cpu只能是在客户端上被调用然后采集客户端上的CPU负载数据, 之前设置在服务端上的check_nrpe其实只能调用到客户端的check_nrpe,并不能调用到客户端上的check_cpu脚本.所以,只能是客户端的nrpe调用本地的check_cpu脚本,那么接下来就需要把客户端nrpe和check_cpu脚本关联起来。
  check_cpu在客户端上必须2个地方都有。
  第1处是NRPE在客户端上关联命令的设置:
[root@centos67~] # cat /etc/nrpe.d/lcgdm-common.cfg
command[check_cpu]=/usr/lib64/nagios/plugins/lcgdm/check_cpu
command[check_network]=/usr/lib64/nagios/plugins/lcgdm/check_network
command[check_process]=/usr/lib64/nagios/plugins/lcgdm/check_process -p rfiod,globus-gridftp-server
command[check_hostcert]=/usr/lib64/nagios/plugins/lcgdm/check_hostcert -C /etc/grid-security/hostcert.pem -s
第2处是:/usr/lib64/nagios/plugins/lcgdm/check_cpu[root@centos66 ~]# ls /usr/lib64/nagios/plugins/lcgdm/check_cpu
/usr/lib64/nagios/plugins/lcgdm/check_cpu  ④服务端和客户端都要启动NRPE软件,确认工作在5666端口
[root@centos65 objects]# service nrpe start
Starting nrpe [确定]
[root@centos65 objects]# netstat -antpu | grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 53633/nrpe
tcp 0 0 :::5666 :::* LISTEN 53633/nrpe[root@centos67 ~]# service nrpe start
Starting nrpe [确定]
[root@centos66 ~]# netstat -antpu | grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 53202/nrpe
tcp 0 0 :::5666 :::* LISTEN 53202/nrpe  修改一下客户端上的nrpe主配置文件,否则nagios服务端连不上。
  [root@centos67 ~]# vim /etc/nagios/nrpe.cfg
  修改:allowed_hosts=192.168.1.65
  192.168.1.65为nagios服务端IP。修改完之后重启rnpe服务。
  [root@centos67 ~]# service nrpe restart
  ⑥在服务端做个本地测试
  [root@centos65 objects]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.67
  出现nrpe版本号,表示成功。
  最后到nagios主页来看一下,已经监控到客户端cpu的情况了。
  九、自己编写监控脚本,并嵌入进nagios
  之前我们在使用的监控项目都是nagios和nagios_plugins*插件包提供的。其实Nagios插件是完全支持自己动手编写的,看被监控端如下这一段shell代码:
  [root@cent67 ~] # vim /usr/lib64/nagios/plugins/check_waiting_connect
  (以check_waiting_connect作为我们的脚本名称。所有自行编写的脚本都放在vim /usr/lib64/nagios/plugins/这个路径下)
#!/bin/bash
STATE_OK=0
STATE_CRITICAL=2
W=`netstat -an | grep -i wait | wc -l`
if [ $W -le 1000 ];
then
echo "OK,waiting_connections1000high"
exit $STATE_CRITICAL
fi  (脚本实现的内容很简单,就是通过netstat命令来获取Linux系统中的等待链接数(waitting_connections) 如果大于1000就报警,小于1000就属于正常)。
  Nagios可以识别4种状态返回信息,
  0(OK)表示状态正常/绿色、
  1(WARNING)表示出现警告/huangs色(系统自动和谐治好写拼音)
  2(CRITICAL)表示出现非常严重的错误/红色
  3(UNKNOWN)表示未知错误/深huangs色 Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以 供管理理员及时发现故障。
  写好脚本后,被监控端找到nrpe的配置文件,添加一项新的命令(nrpe)
  [root@cent67 ~]# vim /etc/nrpe.d/lcgdm-common.cfg
  command[check_waiting_connect]=/usr/lib64/nagios/plugins/check_waiting_connect
  回到服务端nagios服务端Centos_65添加defineservice
define service{
use local-service ;Nameofservice templatetouse
host_name Centos_67
service_description WAITING_CONNECTS
check_command check_nrpe!check_waiting_connect
notifications_enabled 0
}  接下来保证客户端nagios用户有权限执行监控脚本然后来到服务端检查:
  [root@Cent65 objects]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.67 -c check_waiting_connect
  执行成功,接下来重启服务端nagios、nrpe服务。
  service nagios restart
  service nrpe restart
  查看nagios主页显示:
  这里已经可以显示出来了。
  好了,关于nagios就先总结到这里,欢迎到家提问指正。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-662309-1-1.html 上篇帖子: Nagios core4.3.4 安装配置 下篇帖子: IT运维监控开源软件Zabbix、Nagios、Cacti
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表