监控利器Nagios之一:监控本地NFS和外部HTTP、MySQL服务

2023-11-06

监控利器Nagios之一:监控本地NFS和外部HTTPMySQL服务

 

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

Nagios的特点:

1、监控服务httpMySQLnfstcpping

2、监控主机资源cpu、负载、I/O、虚拟及内存磁盘利用率等

3、支持邮件微信等报警通信。

4、可选web见面用于查看当前的网络状态等

Nagios的组成:

Nagios监控软件是一个监控平台。Nagios监控一般由一个主程序(nagios)、一个插件程序(nagios-plugins)和一些可选的插件组成。

1NRPE组件

Nrpe组件一般工作在备监控端,朱勇用于监控本地资源,包括负载(uptime)、CPUtopSar)、磁盘(df -hi)、内存(free)、I/Oiostat)等

2NSClient++

3NDOUtils

Nagios的监控完整图:

wKioL1lJI1uxed3OAABBR53LMgA875.png 

原理如下:

通常由nagios服务端发起获取数据请求,由check_nrpe插件携带要获取的命令,传给给监控端nrpe守护进程,默认是5666端口,nrpe进程读取nrpe.Cfg里对应服务器端发送的命令信息,通过调用本地插件获取数据,然后返回给nagios服务器端的check_nrpe,进而传给nagios战术的web页面中。

 

一:实验目标

1、监控外部服务器NFS,服务端当做客户端

2、监控外部服务器的MySQL服务

3、监控外部服务器httpd

4、监控外部服务器的私有信息

二:实验环境

VMare

作用

主机名

Ip地址

安装的软件

RHEL-6.5

服务端

yu61

192.168.1.61

Nagios软件,nagios插件,nrpeLAMP环境、NFS

RHEL-6.5

客户端

yu62

192.168.1.62

nagios插件,nrpemysql-serverIO

RHEL-6.5

客户端

yu63

192.168.1.63

nagios插件,nrpeNFSHttp

 #所有服务器都需要关闭防火墙

 

三:实验步骤

安装服务端环境

1、安装LAMP环境

Nagios服务端需要有web界面用来展示监控效果,而监控的内容是属于动态的,因此使用LAMP环境,Apache用作于web展示监控效果,PHP用于展示监控动态信息。

[root@yu61 ~]# mkdir -p /home/yu/tools
[root@yu61 ~]# yum install -y httpd gccglibc glibc-common php gd gd-devel libpng libmng libjpeg zlib mysql-server 
[root@yu61 ~]# service iptables stop 
[root@yu61 ~]# service httpd restart
[root@yu61 ~]# vim /var/www/html/index.php
<?php
phpinfo();
?>


2、添加用户

Apache用户默认是存在的,属组默认daemon,需要把它改成nagios。这样它才能有权限访问安装的nagios目录,执行相关的cgi命令,如通过浏览器界面关闭nagios、停止某个故障对象发送报警信息等。

添加nagios帐户,以用来运行Nagios。当然也可以用root运行,但出于安全考虑而使用普通帐号来运行,并且不给这个账号分配shell登录权限

[root@yu61 tools]# useradd  -s /sbin/nollogin  nagios
[root@yu61 tools]# groupadd nagcmd
[root@yu61 tools]# usermod -a -G nagcmd nagios
[root@yu61 tools]# usermod -a -G nagcmd apache


3、安装nagios主程序

[root@yu61 tools]# tar jxvf nagios-cn-3.2.3.tar.bz2 
[root@yu61 tools]# cd nagios-cn-3.2.3
[root@yu61 nagios-cn-3.2.3]# ./configure --with-command-group=nagcmd
[root@yu61 nagios-cn-3.2.3]#make all
[root@yu61 nagios-cn-3.2.3]# make install
[root@yu61 nagios-cn-3.2.3]# make install-init
[root@yu61 nagios-cn-3.2.3]#make install-commandmode
[root@yu61 nagios-cn-3.2.3]# make install-config
[root@yu61 nagios-cn-3.2.3]# make install-webconf
[root@yu61 nagios-cn-3.2.3]# htpasswd -c /usr/local/nagios/etc/htpasswd.users mobanche


 

用于检测文件的完整性的方法有两种。一种是绝对路径,一种是启动检测

第一种:

[root@yu61 nagios]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg


第二种:

[root@yu61 nrpe-2.12]# vim /etc/init.d/nagios


#删掉启动项中178行中的“  > /dev/null 2>&1;”内容。

wKiom1lJI3HhCVOCAAAfRnEMNFQ560.png 

[root@yu61 objects]# vim /usr/local/nagios/etc/cgi.cfg
use_authentication=0 #改为0
 
[root@yu61 nrpe-2.12]# /etc/init.d/nagios checkconfig 
Total Warnings: 0
Total Errors:   0


 

4、安装nagios-plugins插件包

Nagios的插件包就是实现获取数据信息的命令或者程序,用过这些命令或程序,nagios可以获取到需要的数据,然后进行报警和展示。

[root@yu61 tools]# yum install perl-devel openssl-devel -y
[root@yu61 tools]# tar zxvf nagios-plugins-1.4.16.tar.gz
[root@yu61 tools]# cd nagios-plugins-1.4.16
[root@yu61 nagios-plugins-1.4.16]# ./configure  --with-nagios-user=nagios --with-nagios-group=nagcmd --enable-perl-modules --with-mysql
[root@yu61 nagios-plugins-1.4.16]# make -j 4
[root@yu61 nagios-plugins-1.4.16]# make install


5、安装nrpe软件包

Nrpe是通常用于安装被监控端的,这里在服务端也安装的了nrpe软件,是因为nagios服务器端需要check_nrpe插件做被动检查,如果服务端不安装nrpe插件,那么也就没有这个插件了,其次nagios服务器端本地的资源也需要被监控,因此nagios服务器端也会被认作客户端。

[root@yu61 tools]# tar zxvf nrpe-2.12.tar.gz
[root@yu61 tools]# cd nrpe-2.12
[root@yu61 nrpe-2.12]# ./configure 
[root@yu61 nrpe-2.12]# make all && make instll


6、服务端附件

1)检查登录nagios的管理账户信息

[root@yu61 nagios-cn-3.2.3]# grep AuthUserFile /etc/httpd/conf.d/nagios.conf 
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   AuthUserFile /usr/local/nagios/etc/htpasswd.users
   AuthUserFile /usr/local/nagios/etc/htpasswd.users


2)设置nagios开机自启动

[root@yu61 nagios-cn-3.2.3]# chkconfig postfix on
[root@yu61 nagios-cn-3.2.3]# chkconfig postfix --list
postfix        0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭


3)邮件报警

[root@yu61 nagios-cn-3.2.3]# /etc/init.d/httpd reload
[root@yu61 nagios-cn-3.2.3]# sed -n '35p ' /usr/local/nagios/etc/objects/contacts.cfg 
        email                           741215208@qq.com; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
[root@yu61 nagios-cn-3.2.3]# /etc/init.d/postfix start 
[root@yu61 nagios-cn-3.2.3]# lsof -i :25
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
master  2094 root   12u  IPv4  12921      0t0  TCP localhost:smtp (LISTEN)
master  2094 root   13u  IPv6  12923      0t0  TCP localhost:smtp (LISTEN)
[root@yu61 nagios-cn-3.2.3]# mail -s "test" 741215208@qq.com < /etc/hosts
[root@yu61 nagios-cn-3.2.3]# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
A1C723FFA6      599 Sun May 21 12:23:56  root@yu61.localdomain
(lost connection with mx2.qq.com[14.17.41.170] while performing the HELO handshake)
                                         741215208@qq.com


 

安装客户端端环境

注释:三台客户端同时安装,安装的内容一样。

1、添加用户

[root@yu62 ~]# mkdir -p /home/yu/tools
[root@yu62 ~]# cd /home/yu/tools/
[root@yu62 tools]# yum install perl-devel openssl-devel -y
[root@yu62 tools]#  useradd -s /sbin/nologin nagios
[root@yu62 tools]#  groupadd nagcmd
[root@yu62 tools]#  usermod -G nagcmd nagios


2、安装nagios-plugins插件包
[root@yu62 tools]# tar zxvf nagios-plugins-1.4.16.tar.gz
[root@yu62 tools]# cd nagios-plugins-1.4.16
[root@yu62 nagios-plugins-1.4.16]# ./configure  --with-nagios-user=nagios --with-nagios-group=nagcmd --enable-perl-modules --with-mysql
[root@yu62 nagios-plugins-1.4.16]# make -j 4 && make install


3、安装nrpe软件包

[root@yu62 tools]# tar zxvf nrpe-2.12.tar.gz
[root@yu62 tools]# cd nrpe-2.12
[root@yu62 nrpe-2.12]# ./configure &&  make all && make install


 

实战:监控外部服务器MySQL服务

1、服务端修改配置文件

root@yu61 ~]# cd /usr/local/nagios/etc
[root@yu61 etc]# vim nagios.cfg
改:cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
为:注释localhost这一项,添加以下两行:
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/service.cfg


2、修改配置文件、生成要检测的主机配置文件和服务配置文件:

[root@yu61 etc]# cd objects/
[root@yu61 objects]# vim hosts.cfg  # 添加以下内容
####################chreck_host###########################
define host{
        use                     linux-server            
        host_name               yu62
        alias                   mysql服务
        address                 192.168.1.64
        icon_image              switch.gif
        statusmap_image         switch.gd2
        2d_coords               100,200
        3d_coords               100,200,100
        }


[root@yu61 objects]# vim service.cfg # 添加以下内容
###################check_server_mysql#############################
define service{
                use                     local-service
                host_name               yu62
                service_groups          mysql服务组
                service_description     mysql服务
                check_command           check_mysql
                }
 
##########################check_server_mysql_groups#########################define servicegroup{
                servicegroup_name       mysql服务组
                alias                   mysql服务器
                members                 yu62,mysql服务
}
[root@yu61 objects]# vim commands.cfg #在此文件最后添加以下内容:
define command{
command_name check_mysql
command_line $USER1$/check_mysql -H$HOSTADDRESS$ -u nagdb -d nagdb
}
[root@yu61 nrpe-2.12]# /etc/init.d/nagios checkconfig


3、客户端上安装MySQL服务

[root@xuegod62 ~]# yum install mysql-server -y
[root@xuegod62 ~]# service mysqld restart
[root@xuegod62~]# mysql
mysql>create database nagdb; 
mysql> grant select on nagdb.* to yu@'192.168.1.61';


4、重启mysqld、nagios服务

[root@yu62 ~]# /etc/init.d/httpd restart
[root@yu62 ~]# /etc/init.d/mysqld restart
[root@yu61 ~]# /etc/init.d/nagios restart
[root@yu61 objects]#/usr/local/nagios/libexec/check_mysql -H 192.168.1.64 -u nagdb -d nagdb
Uptime: 516  Threads: 1 Questions: 6  Slow queries: 0  Opens: 15 Flush tables: 1  Open tables:8  Queries per second avg: 0.11


#上述命令执行后,出现以下信息,表示正常,连接192.168.1.64mysql里面的用户是正常的

5)测试查看主机和服务:

http://192.168.1.63/nagios/

wKioL1lJI36ALgDCAAAXHQQFZMY410.png 

 

实战:监控外部服务器NFS服务

1、安装配置NFS服务器

[root@yu61 objects]# service rpcbind status
rpcbind (pid  1614) 正在运行...
[root@yu61 ~]# vim /etc/exports
/tmp *(rw)
[root@yu61 ~]# /etc/init.d/nfs restart 
[root@yu61 ~]# showmount -e 192.168.1.61
Export list for 192.168.1.61:
/tmp *


2、编辑check_nfs命令脚本

[root@yu61 libexec]# pwd
/usr/local/nagios/libexec
[root@yu61 libexec]# cat check_nfs 
check_nfs
#!/bin/bash
. /data1/server/nagios/libexec/utils.sh
CHECKNAME="Mount NFS"
RESULT=""
EXIT_STATUS=$STATE_OK
NFSFSTAB=`LC_ALL=C awk '!/^#/ && $3 ~ /^nfs/ && $3 != "nfsd" && $4 !~ /noauto/ { print $1 }' /etc/fstab`
NFSMTAB=`LC_ALL=C awk '$3 ~ /^nfs/ && $3 != "nfsd" && $2 != "/" { print $1 }' /proc/mounts`
theend() {
    echo $RESULT
    exit $EXIT_STATUS
}
CHECK_MOUNT(){
    LIST=""
    for list in $NFSFSTAB
    do
        NFS_MOUNT=$(LC_ALL=C cat /proc/mounts |cut -d " " -f 1|grep "${list}$")
        if [ -z "${NFS_MOUNT}" ];then
            LIST="$LIST$list "
        fi
    done
}
if [ -n "${NFSMTAB}" ];then
    CHECK_MOUNT
    if [ -z "${LIST}" ];then
        RESULT="$CHECKNAME OK - NFS BE MOUNTED PROPERLY"
        EXIT_STATUS=$STATE_OK
    else
        RESULT="$CHECKNAME WARNING - ${LIST} NOT BE MOUNTED"
        EXIT_STATUS=$STATE_WARNING
    fi
else
    RESULT="$CHECKNAME CRITICAL - ALL NFS NOT BE MOUNTED"
    EXIT_STATUS=$STATE_CRITICAL
fi
Theend


注释:为了安全起见修改权限,不修改默认为644 root

[root@yu61 libexec]# chmod 755 check_nfs 
[root@yu61 libexec]# chown nagios:nagcmd check_nfs 
[root@yu61 libexec]# ll check_nfs 
-rwxr-xr-x 1 nagios nagcmd 973 5月  22 13:27 check_nfs


3、修改配置文件

[root@yu61 objects]# cat hosts.cfg    ##末尾添加
####################chreck_host###########################
define host{
        use                     linux-server            
        host_name               yu61
        alias                   nfs服务
        address                 192.168.1.61
        icon_image              switch.gif
        statusmap_image         switch.gd2
        2d_coords               100,200
        3d_coords               100,200,100
        }


[root@yu61 objects]# cat service.cfg  ##末尾添加
###################check_server_mysql#############################
define service{
                use                     local-service
                host_name               yu61
                service_groups          nfs服务组
                service_description     nfs服务
                check_command           check_nrpe!check_nfs
                }
 
##########################check_server_mysql_groups######################
define servicegroup{
                servicegroup_name       nfs服务组
                alias                   nfs服务器
                members                 yu61,nfs服务
}


[root@yu61 objects]# vim commands.cfg   ##末尾添加
#'check_nrpe' command definition
definecommand{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c$ARG1$
        }
 
define command{
       command_name    check_nfs
       command_line    $USER1$/check_nfs
       }


4、检测服务配置及启动服务

[root@yu61 objects]# /etc/init.d/nagios checkconfig
Total Warnings: 0
Total Errors:   0
[root@yu61 objects]# /etc/init.d/nagios reload


5、测试查看主机和服务

http://192.168.1.63/nagios/

wKiom1lJI4zT_xI4AAAu27nGztU009.png 

 

实战:监控外部服务器httpd服务

1、修改配置文件

[root@yu61 objects]# cat hosts.cfg   ##最后编辑
define host{
        use                     linux-server            
        host_name               yu63
        alias                   http服务
        address                 192.168.1.63
        icon_image              switch.gif
        statusmap_image         switch.gd2
        2d_coords               100,200
        3d_coords               100,200,100
        }


[root@yu61 objects]# cat service.cfg   ##最后添加
###################check_server_httpd-63#############################
define service{
                use                     local-service
                host_name                yu63
                service_groups             http服务组
                service_description         http服务
                check_command           check_http
                }
 
##########################check_server_http-63_groups######################
define servicegroup{
                servicegroup_name         http服务组
                alias                     http服务器
                members                 yu63,http服务
}


 

#Check_http的命令默认就有的

 

2、检测配置文件和重启服务

[root@yu61 objects]# /etc/init.d/nagios checkconfig 
Total Warnings: 0
Total Errors:   0
[root@yu63 nrpe-2.12]# service iptables stop
[root@yu63 nrpe-2.12]# setenforce 1
setenforce: SELinux is disabled
[root@yu63 nrpe-2.12]# service httpd restart


3、测试查看主机和服务

wKiom1lJI5jQI8XfAAAxqs9nmR8822.png 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

监控利器Nagios之一:监控本地NFS和外部HTTP、MySQL服务 的相关文章

随机推荐

  • chatgpt的第一次尝试

    openai最近很火 火的公司的市场部门都已经用chatgpt来写市场方案和产品方案了 是市场部总监在一个公寓里住着 两人昨天交流了一些有关chatgpt的认识 在市场部的影响下 开始了chatgpt的第一次试用 我试用了2个主题 一个是有
  • OCR模型DBNet-------《Real-time Scene Text Detection with Differentiable Binarization》论文,模型,代码解剖

    首先 我先对DBNet的论文进行重点翻译解释说明 之后再对整个模型进行解剖 最后再对官方源码的实现方法 关键代码进行分析 所以篇幅也比较长 之间会附带一些例子说明 让你更深刻的了解DBNet 论文解析 Abstract 基于语义分割的文本检
  • 谷歌裁员1.2万,幸存员工崩溃哭泣

    1 月 20 日 谷歌母公司Alphabet首席执行官桑达尔 皮查伊宣布裁员 裁员人数相当于公司全球员工总数的 6 左右 1 2 万人 2022 2023 中国开发者大调查 重磅启动 欢迎扫描下方二维码 参与问卷调研 更有 iPad 等精美
  • 正常计算机的c盘空间多大,电脑C盘应该留多大空间?

    机械硬盘 不管是500G 1TB 2TB 4TB win7 还是win10系统统一60G就行 C盘大小为 60G 固态硬盘 两种情况 一种是120G 一种是240G及以上 120G硬盘 C盘为120G 整个硬盘为一个区 240硬盘及以上 C
  • 服务器配置openssl支持 https 访问

    一 Windows apache 下 软件是xampp 说明 部分参考 http blog sina com cn s blog 5d7dbbdd0101042n html 首先要载入 mod ssl 1 将证书生成的配置文件 http t
  • MFC---CComboBox控件添加字符串函数InsertString

    InsertString 在列表的指定位置插入一项 需使用成员函数InsertString 函数有两个参数 第一个参数为索引号 设定为 1时 项目条被插入到列表的末尾 第二个参数与AddString 函数的唯一参数相同 为代表项目条中内容的
  • python中字典考题_python 字典一些常见的魔法方法以及遇到的面试题

    一 字典介绍 dict 类型不但在各种程序里广泛使用 它也是 Python 语言的基石 模块的命名空间 实例的属性和函数的关键字参数中都可以看到字典的身影 跟它有关的内置函数都在 builtins dict 模块中 正是因为字典至关重要 P
  • 对标大厂标准,C站(CSDN)软件工程师能力认证正式上线

    2021年3月1日 中国专业IT开发者社区CSDN 以下简称C站 正式推出 C站软件工程师能力认证 该认证与国际标准接轨 面向全球IT开发者学习成长 同时具备标准全开源 系统化学习 真实业务场景 完全上机实操 所有过程留痕 存档不可篡改等特
  • 【Leetcode】61. 旋转链表

    题目描述 给你一个链表的头节点 head 旋转链表 将链表每个节点向右移动 k 个位置 题解 旋转链表 找倒数第k个节点 翻转前后链表 执行用时 0 ms 在所有 Java 提交中击败了100 00 的用户 内存消耗 37 8 MB 在所有
  • 重磅, GPT 4.0 API 全面开放使用!普通人也能用上 4.0 了 !

    伴随着人工智能领域的迅猛发展 GPT 4 0作为一款关键的智能模型 备受国内开发者和企业的瞩目 本文旨在为您提供详实的指南 帮助您在国内顺利获取并使用GPT 4 0 API 从而踏上智能应用创新之路 我们将为您提供一步一步的操作步骤和必要的
  • 【ts】数组、联合数据类型、类型推论

    一 ts约束数组 1变量 类型 let arr Number 1 3 3 4 arr push 1 arr push he 不能添加数组中没有约束的类型 2 数组泛型 变量 Array lt 类型 gt let arr Array
  • DasViewer加载大疆智图、CC等三维模型无空间坐标的解决方法

    对于大疆智图处理生成的terra osgbs文件夹下的三维模型包含了带有空间参数的metadata xml文件 利用DasViewer打开Model osgb模型文件 显示比较模糊 不能够达到实际应用的目的 我是利用转格式工具进行格式转换生
  • python 执行js脚本报错CryptoJS is not defined

    直接在js代码加上一行定义CryptoJS就行了 function encrypt e const CryptoJS require crypto js var b bGVhcm5zcGFjZWFlczEyMw var a new Base
  • 【Spring实战】—— 7 复杂集合类型的注入

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 之前讲解了Spring的基本类型和bean引用的注入 接下来学习一下复杂集合类型的注入 例如 List Set Map等 对于程序员来说 掌握多种语言是基本的技能 我们这里
  • 在本地以Docker方式安装和运行Kafka

    文章目录 在本地以Docker方式安装和运行Kafka 前言 用Bitnami kafka的镜像 用wurstmeister kafka的镜像 启动Kafka 测试创建主题并读 写消息 参考文档 后记 在本地以Docker方式安装和运行Ka
  • discuz7.2漏洞分析

    一 参数的入口 这段话的意思时遍历三种提交的方法 获取参数传递的值 有一个函数是daddslashes 跟进看一下 这段代码的意思是对数据里的每一个字符都进行转义处理 二 漏洞产生的代码在faq php195行 跟进implodeid函数
  • Tomcat安装测试、Eclipse配置Tomcat步骤

    一 安装tomcat并测试 1 1 1到Apache Tomcat官网下载安装包 在选择中间位置的版本较为稳定然后选择对应操作系统的安装包 本次选择8 5版本 1 1 2 解压下载好的安装包即可完成安装 复制Tomcat的安装路径以备下一步
  • 第十七章 C# Action和Func委托 多播 匿名函数 lambda表达式

    一 使用 Action和Func委托 方法的返回类型 和 名字千千万万 无法对每个方法都去定义对应的委托 nt为了方便使用委托 定义了两个泛型委托 Action Action委托表示一个void返回类型的方法 例1 MyDelegate m
  • 数据库内核杂谈阅读笔记

    数据库内核杂谈 InfoQ 文章目录 简单数据库实现 存储 索引优化 执行模式 Parsing Binding Optimizing Executing 排序和聚合 排序 聚合 JOIN 优化器 Query Rewrite Heuristi
  • 监控利器Nagios之一:监控本地NFS和外部HTTP、MySQL服务

    监控利器Nagios之一 监控本地NFS和外部HTTP MySQL服务 Nagios是一款开源的免费网络监视工具 能有效监控Windows Linux和Unix的主机状态 交换机路由器等网络设置 打印机等 在系统或服务状态异常时发出邮件或短