Nagios 监控配置及实战

Nagios 简介

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

Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。

Nagios监控的功能

  1. 本机私有资源 CPU负载,内存占用情况,进程数,磁盘利用率等
  2. 监控网络服务 SMTP,HTTP,MySQL,FTP,PING等
  3. 当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式)
  4. 服务依赖监控 比如搭建LAMP平台后,当其中的数据库服务器宕机后,Apache服务器无法访问。
  5. 让nagios服务运行时调用自定义监控脚本做监控

Nagios 监控服务器的搭建

安装软件包以及依赖包

需要的软件包如下:

nagios-4.2.4 nagios-plugins-2.1.4 nrpe-3.0.1 httpd php

依赖包及环境如下:

gcc gcc-c++

创建进程所需用户:

    [root@cc]# useradd nagios
    [root@cc]# groupadd nagcmd

安装软件包nagios:

    [root@cc]# yum -y install gcc gcc-c++
    [root@cc]# tar -zxvf nagios-4.2.4.tar.gz    //解包
    [root@cc]# cd nagios-4.2.4/
    [root@cc]# ./configure  --with-nagios-user=nagios --with-nagios-group=nagcmd  --with-command-user=nagios --with-command-group=nagcmd 
                                                            //配置
    [root@cc]# make  all                         //安装
    [root@cc]# make install
    [root@cc]# make install-init
    [root@cc]# make install-commandmode
    [root@cc]# make install-config
    [root@cc]# make install-webconf
    [root@cc]# make install-exfoliation
    [root@cc]# make install-classicui

部署服务的运行环境:

[root@cc]# echo "cc" > /var/www/html/index.html    //静态网页主页
[root@cc]# vim /var/www/html/index.php             //动态网页主页 
<?php
phpinfo();
?>

安装软件包nagios-plugins:

[root@cc]# tar -xf nagios-plugins-2.1.4.tar.gz 
[root@cc]# ./configure --with-nagios-user=nagios  --with-nagios-group=nagcmd
[root@cc]# make
[root@cc]# make install

启用及访问Nagios平台:

Nagios平台添加web管理用户:

    [root@cc]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin                //根据提示输入两次密码

重启nagios和httpd服务

[root@cc]# systemctl restart httpd
[root@cc]# systemctl restart nagios

客户端访问Nagios平台如下:

配置文件详解

  1. Nagios文件安装目录

默认安装目录为:/usr/local/nagios -/usr/local/nagios/bin 程序命令 -/usr/local/nagios/libexec 监控插件以及工具 -/usr/local/nagios/sbin cgi脚本 -/usr/local/nagios/share Nagios网页目录 -/usr/lcoal/nagios/var Nagios运行数据

  1. 配置文件详解
  2. 配置文件目录为:/usr/local/nagios/etc/ -cgi.cfg cgi程序配置 -nagios.cfg 服务主配置文件 -resource.cfg 变量配置
  3. 监控对象及模版配置:/usr/local/nagios/etc/objects

-commands.cfg 监控命令配置 -localhost.cfg 监控本机对象设置 -contacts.cfg 报警收件邮箱设置 -timeperids.cfg 监控时间模版 -templates.cfg 监控方式模版

使用监控插件

监控的过程以及原理:

服务启动时自动调用监控插件,调用插件时,管理者可以设置监控插件的警告值和错误值,监控插件把获取到的数据和管理者定义的警告和错误值比较,根据比较结果返回监控状态:

若 获取到的数据 < 警告值 返回监控状态 OK 若 获取到的数据 > 警告值 并且 < 错误值 返回监控状态 WARNING 若 获取到的数据 > 错误值 返回监控状态 CRITICAL

使用插件帮助信息:./check_* -help

[root@cc]# cd /usr/local/nagios/libexec/
[root@cc]# ./check_users -w 3 -c 5      //监控本机登陆用户,3个报警5个报错
[root@cc]# ./check_http -H localhost    //监控本机httpd服务
[root@cc]# ./check_tcp -H localhost -p 3306 //监控本机数据库服务端口tcp协议

监控实战

1. 监控本地

要求:监控本机的ftp服务运行状态,监控本机引导分区的使用量,不再对本机的交换分区做监控,监控本机登录系统用户数量时把警告值修改为1 错误值修改为2。

配置监控重点:

1.修改commonds.cfg 增加监控命令

2.修改localhost.cfg 添加监控对象

操作如下:

  1. 添加增加命令 [root@cc]# vim /usr/local/nagios/etc/objects/commands.cfg define command { command_name check_local_ftp command_line $USER1$/check_ftp -H localhost } define command { command_name check_local_boot command_line $USER1$/check_disk -w 50% -c 25% -p /boot }
  2. 添加监控对象
[root@cc]# vim /usr/local/nagios/etc/objects/localhost.cfg
            define service{
                use                             local-service
                host_name                       localhost
                service_description             ftp
                check_command                   check_local_ftp
                }
            define service{
                use                             local-service
                host_name                       localhost
                service_description             boot
                check_command                   check_local_boot
                }

客户端访问如下:

2.监控远程主机公有数据

要求:配置远程主机192.168.4.10 apache服务器运行状态

  1. 配置远程主机192.168.4.10 apache服务器 [root@cc]# yum -y install httpd [root@cc]# echo "cc" > /var/www/html/index.html [root@cc]# systemctl restart httpd
  2. 在监控服务器主配置文件里加载监控远程主机的配置文件 [root@cc]# vim /usr/local/nagios/etc/nagios.cfg cfg_file=/usr/local/nagios/etc/objects/server10.cfg
  3. 在监控服务器上创建监控远程主机192.168.4.10的配置文件 server10.cfg [root@cc]# vim server10.cfg define host { use linux-server host_name server-10 address 192.168.4.10 } define service { use local-service host_name server-10 service_description httpd check_command check_10_httpd }
  4. 在监控命令文件里添加监控远程主机的监控命令[root@cc]# vim command.cfg define command{ command_name check_10_httpd command_line $USER1$/check_http -H 192.168.4.10 }
  5. 检查语法错误:[root@cc]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  6. 重启服务[root@cc]# /etc/init.d/nagios stop [root@cc]# /etc/init.d/nagios start

3.监控远程主机私有数据

要求:监控远程主机boot使用量,登陆用户数,进程数

配置远程主机192.168.4.10

  1. 安装插件监控本地私有数据[root@cc]# tar -xf nagios-plugins-2.1.4.tar.gz [root@cc]# ./configure [root@cc]# make [root@cc]# make install
  2. 安装nrpe软件[root@cc]# useradd nagios [root@cc]# yum -y install openssl-devel //加密传输 [root@cc]# tar -xf nrpe-3.0.1.tar.gz [root@cc]# cd nrpe-3.0.1 [root@cc]# ./configure [root@cc]# make all [root@cc]# make install [root@cc]# make install-config [root@cc]# make install-init
  3. 修改nrpe服务的配置文件[root@cc]# vim /usr/local/nagios/etc/nrpe.cfg command[nrpe_check_users]=/usr/local/nagios/libexec/check_users -w 3 -c 4 command[nrpe_check_boot]=/usr/local/nagios/libexec/check_disk -w 50% -c 25% /boot command[nrpe_check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
  4. 启动服务:默认端口为5666[root@cc]# systemctl restart nrpe [root@cc]# netstat -antup | grep 5666

配置监控服务器

  1. 安装nrpe服务的check_nrpe插件[root@cc]# yum -y install openssl-devel [root@cc]# tar -xf nrpe-3.0.1.tar.gz [root@cc]# cd nrpe-3.0.1/ [root@cc]# ./configure [root@cc]# make [root@cc]# make install
  2. 把插件定义监控命令 [root@cc]# vim commands.cfg define command{ command_name check_20_users command_line $USER1$/check_nrpe -H 192.168.4.20 -p 5666 -c nrpe_check_users } define command{ command_name check_20_boot command_line $USER1$/check_nrpe -H 192.168.4.20 -p 5666 -c nrpe_check_boot } define command{ command_name check_20_procs command_line $USER1$/check_nrpe -H 192.168.4.20 -p 5666 -c nrpe_check_total_procs }
  3. 在server10.cfg 中调用定义好的监控命令 [root@cc]# vim server10.cfg define service{ use local-service host_name server20 service_description users check_command check_20_users!nrpe_check_users } define service{ use local-service host_name server20 service_description boot check_command check_20_boot!nrpe_check_boot } define service{ use local-service host_name server20 service_description process check_command check_20_procs!nrpe_check_total_procs }
  4. 检查配置文件是否有语法错误[root@cc]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  5. 重启服务[root@cc]# /etc/init.d/nagios stop [root@cc]# /etc/init.d/nagios start
  6. 客户端测试监控服务配置结果

Nagios总结

  1. 优点: 侧重于监控应用状态,故障分析,报警机制相对比较灵活。
  2. 缺点: 预先设置好报警值和错误值。当监控结果越来越接近该值时,也不会报告。
  3. 安装软件包注意事项:
    • 安装软件包的依赖包
    • 配置时创建并指定包安装位置以及进程属主和属组
  4. 配置注意需要使用的配置文件:
    • commands.cfg
    • localhost.cfg
    • 自定义的远程监控主机的配置文件
    • 若是监控远程主机,则需要在nagios服务的主配置文件将远程主机配置文件添加进去:cfg_file=/usr/local/nagios/etc/objects/配置文件名.cfg

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HBStream流媒体与音视频技术

基于Ubuntu交叉编译X264, FFmpeg Windows SDK详细教程

30710
来自专栏博客园迁移

分布式事务 小结

分布式事务    如果系统规模较小,数据表都在一个数据库实例上,上述本地事务方式可以很好地运行,   但是如果系统规模较大,比如用户A账户表和用户B账户表显然不...

711
来自专栏技术墨客

React由0到1

    本文记录了本人以及目前团队从无到有使用React的过程,我们将从webpack开始说起,一步一步展现React最基本的开发生态。在这里并不会介绍任何js...

843

6 利用Docker .NET应用程序模板制作您的容器应用程序(第2部分)

在最后一篇文章中,我们用各种模板进行了设置。现在我们需要让他们工作起来了。

2178
来自专栏Seebug漏洞平台

DeDeCMS v5.7 密码修改漏洞分析

织梦内容管理系统(DedeCms)以简单、实用、开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,在经历多年的发展,目前的...

4328
来自专栏性能与架构

Uber 的 Docker Mysql 应用

背景介绍 Uber的MySQL集群规模很大,超过1000个集群,共有4000多个数据库服务器。 问题 起初是使用Puppet管理,写了很多脚本,再加上一些人工操...

3839
来自专栏玄魂工作室

Hacker基础之Linux篇:基础Linux命令十三

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统

753
来自专栏云计算教程系列

如何在CentOS 7上安装和配置Elasticsearch

Elasticsearch是一个实时分布式搜索和分析数据的平台。它的流行是由于它的易用性,强大的功能和可扩展性。

570
来自专栏技术墨客

React 搭建开发环境

本文记录了本人以及目前团队从无到有使用React的过程,我们将从webpack开始说起,一步一步展现React最基本的开发生态。在这里并不会介绍任何jsx或es...

1091
来自专栏IT笔记

Docker学习之SSH连接docker容器

前言 不论是开发者是运维人员,都经常有需要进入容器的诉求,目前看,主要的方法不外乎以下几种: 使用ssh登陆进容器,需要在容器中安装启动sshd,存在开销和攻击...

35111

扫码关注云+社区