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

[经验分享] Nagios 系统监控基本安装配置过程详解

[复制链接]

尚未签到

发表于 2017-6-23 11:58:00 | 显示全部楼层 |阅读模式
  Nagios 是一款免费的开源 IT 基础设施监控系统,功能强大,灵活性强,能有效监控 Windows、Linux、VMware 和 Unix 主机状态,交换机、路由器等网络设置等。一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运营人员,在恢复后发出正常的邮件或短信。Nagios 结构简单,可维护性强,提供一个可选的基于浏览器的 Web 界面,方便管理人员查看系统的运行状态,网络状态、服务状态、日志信息,以及其它异常现象。

一、Nagios 结构简单说明
  Nagios 结构上来说,可分为核心和插件两个部分。Nagios 的核心部分只提供了很少的监控功能,因此要搭建一个完善的 IT 监控管理系统,用户还需要在 Nagios 服务器安装相应的插件,插件可以从 Nagios 官方网站下载 http://www.nagios.org/,也可以根据实际要求自己编写所需的插件。
  

二、Nagios 可实现的功能特性


  • 监控网络服务(SMTP、POP3、HTTP、FTP、PING等)
  • 监控本机及远程主机资源(CPU负荷、磁盘使用率、进程等)
  • 允许用户编写自己的插件来监控特定的服务,支持多种开发语言(Shell、Perl、Python、PHP、C等)
  • 具备定义网络分层结构的能力
  • 当服务或主机问题产生与解决时将告警发送给联系人(通过Email、短信、自定义方式)
  • 可以支持并实现对主机的冗余监控
  • 可用 web 界面用于查看当前的网络状态、通知和故障历史、日志文件等
  

三、Nagios 监控实现原理
  Nagios 软件需安装在一台独立的服务器上运行,这台服务器称为监控中心,监控中心服务器可以采用 Linux 或 Unix 操作系统;每一台被监视的硬件主机或服务都运行一个与监控中心服务器进行通信的 Nagios 软件后台程序,也可以理解为 Agent 或插件均可。监控中心服务器读取配置文件中的指令与远程的守护程序进行通信,并且指示远程的守护程序进行必要的检查。虽然 Nagios 软件必须在 Linux 或 Unix 操作系统上运行,但是远程被监控的机器可以是任何能够与其进行通信的主机,根据远程主机返回的应答,Naigos 将依据配置进行回应;接着 Nagios 将通过本地的机器进行测试,如果检测返回值不正确,Nagios 将通过一种或多种方式报警。
  

四、监控中心服务器安装配置
  1. 中心服务器基本环境
  操作系统:CentOS 6.4 x86_64
IP 地址:192.168.0.8
  2. 安装epel扩展源(nagios)



[iyunv@nagios ~]# yum install epel-release -y
  3. 安装nagios系列软件



[iyunv@nagios ~]# yum install httpd nagios nagios-plugins-all nagios-plugins-nrpe
  4. 设置修改后台用户密码



[iyunv@nagios ~]# htpasswd -c /etc/nagios/passwd nagiosadmin
  默认用户名:nagiosadmin 密码:nagiosadmin 通过此命令可以修改密码。
  5. 配置文件修改



[iyunv@nagios ~]# vim /etc/nagios/nagios.cfg    # 配置文件基本不用修改
  检查配置文件是否有语法错误:



[iyunv@nagios ~]# nagios -v /etc/nagios/nagios.cfg
  6. 启动nagios相关服务



[iyunv@nagios ~]# service nagios start
[iyunv@nagios ~]# service httpd  start
  7. 浏览器访问



http://192.168.0.8/nagios    # 注意最好要关闭iptables和selinux
  通过浏览器访问上述的地址,输入后台用户名和密码。默认:nagiosadmin nagiosadmin
  

五、监控客户端基本网络服务
  1. 说明
  对于客户端类似ping、ssh、http等基础网络服务,只需要在服务器端执行简单网络探测的命令即可查看相应的服务是否正常运行,因此对于这些服务的监控在客户端不需要安装任何的插件及服务。
  2. 客户端环境
  操作系统:CentOS 6.4 x86_64
IP 地址:192.168.0.28
  3. 添加基本服务
  在服务器端添加配置文件:
vim /etc/nagios/conf.d/192.168.0.28.cfg    # 添加如下内容



define host{    # 定义主机:192.168.0.28
use                     linux-server
host_name               192.168.0.28
alias                   0.28
address                 192.168.0.28
}
define service{    # 添加 ping 监控服务
use                     generic-service
host_name               192.168.0.28
service_description     check_ping
check_command           check_ping!100.0,20%!200.0,50%
max_check_attempts      5
normal_check_interval   1
}
define service{    # 添加 ssh 监控服务
use                     generic-service
host_name               192.168.0.28
service_description     check_ssh
check_command           check_ssh
max_check_attempts      5
normal_check_interval   1
}
define service{    # 添加 http 监控服务
use                     generic-service
host_name               192.168.0.28
service_description     check_http
check_command           check_http
max_check_attempts      5
normal_check_interval   1
}
  4. 重新加载nagios配置文件



service nagios reload
  通过浏览器访问 http://192.168.0.8/nagios  通过 Current Status --> Service可以看到添加的主机 192.168.0.28 对应的3个服务的列表,刚开始都是 pending 状态,过一段时间 Status 会变成 OK 字样。
  5. 配置文件解释说明
  我们定义的配置文件中一共监控了三个 service: ssh ping http 这三个项目是使用本地的 nagios 工具去连接远程机器,及时没有安装任何的插件也是可以监测到的。
  max_check_attempts 5:尝试检测到5次有问题才会告警,如果设置为1,一旦检测到问题立马告警
normal_check_interval 1:重新检测的时间间隔,单位是分钟,默认是 3 分钟。
notification_interval 60:出现异常后故障一直没有解决,nagios再次对使用者发出通知的时间。设置为0,仅通知一次。
  

六、监控客户端本地系统服务
  其它的一些 service 诸如负载、磁盘使用等需要服务端通过 nrpe 去连接到远程主机获得信息,所以需要远程主机安装 nrpe 服务以及相应的插件程序。
  1. 监控客户端
  IP 地址:192.168.0.28
  2. 客户端需要安装的软件



[iyunv@nagios ~]# yum install epel-release -y        # 安装epel源
[iyunv@nagios ~]# yum install nrpe -y                # 安装nrpe服务软件
[iyunv@nagios ~]# yum install nagios-plugins-all -y  # 安装所有nagios插件
  3. 配置客户端nrpe服务能被监控



[iyunv@nagios ~]# vim /etc/nagios/nrpe.cfg    # 修改如下内容
allowed_hosts=127.0.0.1,192.168.0.8          # 添加192.168.0.8来监控
dont_blame_nrpe=1                            # 修改0为1,设置可以传递参数
command[check_hda1]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1

  4. 客户端启动nrpe服务



[iyunv@nagios ~]# service nrpe start
Starting nrpe:                                             [确定]
  5. 服务器端配置来监控客户端



[iyunv@vip ~]# vim /etc/nagios/objects/commands.cfg
在最后面增加如下:
define command{
command_name    check_nrpe
command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
  [iyunv@vip ~]# vim /etc/nagios/conf.d/192.168.0.28.cfg
增加如下内容:



define service{    # 添加监控负载
use     generic-service
host_name       192.168.0.28
service_description     check_load
check_command           check_nrpe!check_load
max_check_attempts 5
normal_check_interval 1
}
define service{    # 添加监控sda1磁盘
use     generic-service
host_name       192.168.0.28
service_description     check_disk_hda1
check_command           check_nrpe!check_hda1
max_check_attempts 5
normal_check_interval 1
}
  6. 重新加载服务器配置



[iyunv@vip ~]# service nagios reload
  通过浏览器访问 http://192.168.0.8/nagios 正常显示。
  

七、Nagios 配置图形显示
  Nagios 对服务或主机监控的是一个瞬时状态,有时候系统管理员需要了解主机在一段时间内的性能及服务的响应状态,并且形成图表,这就需要通过查看日志数据来分析。但是这种方式不仅烦琐,而且抽象。为了能更直观的查看主机运行状态,这里采用 PNP 来实现此功能。PNP 是一个小巧的开源软件包,它是基于 PHP 和 Perl 脚本编写,PNP 可以利用 rrdtoul 工具将 Nagios 采集的数据绘制成图表,然后显示主机或者服务在一段时间内运行的状况。注:以下操作都是针对中心服务器的。
  1. 安装pnp4nagios软件



[iyunv@vip ~]# yum install -y pnp4nagios rrdtool
  2. 修改主配置文件



[iyunv@vip ~]# vim /etc/nagios/nagios.cfg
修改如下配置:
process_performance_data=1   
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
enable_environment_macros=1
  3. 修改command.cfg配置文件
  [iyunv@vip ~]# vim /etc/nagios/objects/commands.cfg
注释掉原有对process-host-perfdata和process-service-perfdata重新定义



define command {  
command_name    process-service-perfdata  
command_line    /usr/bin/perl /usr/libexec/pnp4nagios/process_perfdata.pl  
}  
define command {  
command_name    process-host-perfdata  
command_line    /usr/bin/perl /usr/libexec/pnp4nagios/process_perfdata.pl -d HOSTPERFDATA  
}
  4. 修改templates.cfg配置文件



vim /etc/nagios/objects/templates.cfg
define host {
name       hosts-pnp
register   0
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
process_perf_data               1
}
define service {
name       srv-pnp
register   0
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
process_perf_data               1
}
  5. 修改host和service的配置
  [iyunv@vip ~]# vim /etc/nagios/conf.d/192.168.0.28.cfg
  所有主机使用的模板后边添加hosts-pnp:



define host{
use                     linux-server,hosts-pnp
  所有服务使用的模板后边添加srv-pnp:



define service{
use     generic-service,srv-pnp
host_name       192.168.0.48
service_description     check_disk_hda1
check_command           check_nrpe!check_hda1
}
  6. 重启服务,再次访问



[iyunv@vip conf.d]# service nagios restart
[iyunv@vip conf.d]# service httpd  restart
[iyunv@vip conf.d]# service npcd   start
  浏览器访问:http://192.168.0.8/nagios 点击 Current Status -> service 即可显示出"曲线"图标,等待一段时间,点击图标即可看到数据。
  

八、配置邮件告警
  1. 增加联系人组
  vim /etc/nagios/objects/contacts.cfg
  增加如下内容:



define contact{
contact_name               123
use                        generic-contact
alias                      aming
email                      liwei0526vip@163.com
}
define contact{
contact_name               456
use                        generic-contact
alias                      aaa
email                      liwei0526vip@163.com
}
define contactgroup{
contactgroup_name          common
alias                      common
members                    123,456
}
  2. 在需要告警的相关服务中添加告警联系人
  然后在要需要告警的服务里面加上contactgroup ,这里示例中以 http 服务为例:



define service{
use                     generic-service,srv-pnp
host_name               192.168.0.48
service_description     check_http
check_command           check_http
max_check_attempts      5
normal_check_interval   1
contact_groups          common
    # 添加告警联系人
}
  重启服务,ok。
  

运维网声明 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-387319-1-1.html 上篇帖子: 【Xilinx-Petalinux学习】-04-OpenCV的移植 下篇帖子: golang--- Redis 操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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