Nagios监控内存和某个端口是否开启

实际使用方法 参考一下 方法:

在监控端的cfg中 添加 [root@link objects]# vim 172.16.10.134.cfg 利用check_tcp

define service{

        use                             generic-service

        host_name                       172.16.10.134

        service_description             port 12345

        check_command                   check_tcp!12345

        }




参考一: 原始出处:http://hx100.blog.51cto.com/44326/369427

某一台服务器需要监控4000端口

修改 /usr/local/nagios/etc/objects/commands.cfg  添加一个服务名

# check port 4000
define command{
        command_name    4000
        command_line    $USER1$/check_tcp -H $HOSTADDRESS$ -p 4000 $ARG2$
        }

然后修改linux的模板

vim  /usr/local/nagios/etc/objects/web1.cfg   添加一段

# Define a service to check HTTP on the local machine.
# Disable notifications for this service by default, as not all users may have HTTP enabled.

define service{
        use                            local-service         
        host_name                      web1
        service_description            4000
        check_command                  4000
        is_volatile                     0
        check_period                    24x7
        max_check_attempts              2
        normal_check_interval           1
        retry_check_interval            1
        contact_groups                  admins
        notification_options            w,u,c,r
        notification_interval           960
        notification_period             24x7

        }


此方法是写入commands.cfg文件中,不够灵活。


参考二:原始出处:http://www.cnblogs.com/kaituorensheng/p/4661634.html

 

check_port

位置:/usr/local/nagios/libexec/

代码(新建可执行文件)

自己写的监控脚本:

#!/bin/sh/usr/local/nagios/libexec/check_tcp -H $1 -p 80 -t 3if [[ $? == 0 ]]
   then
   echo "OK:80 open"
   exit 0
   else
   echo "CRITICAL:80 close"
   exit 2
   fi

commands.cfg

位置:/usr/local/nagios/etc/objects/)

在文件中添加命令

define command{
        command_name    check_winport
        command_line    /usr/local/nagios/libexec/check_winport 172.16.41.5
        }


windows.cfg

位置:/usr/local/nagios/etc/objects/

在文件中添加服务

define service{
        use                     generic-service-urgent,srv-pnp
        host_name               172.16.41.102
        service_description     172.16.41.5:80端口
        check_command           check_winport
        }


显示

结果就可以显示对172.16.41.5:80端口的监控


此方法是自己编写监控脚本。


参考3: http://www.linuxidc.com/Linux/2012-12/76589.htm

#######################监控端口是否开启
 
 监控远程主机端口
 
】客户端
 
1、修改客户端nrpe,添加
 
command[check_5666]=/usr/local/nagios/libexec/check_tcp -H 127.0.0.1 -p 5666
 
command[check_3306]=/usr/local/nagios/libexec/check_tcp -H 127.0.0.1 -p 3306
 
重启nrpe
 
--这里的地址是写本地的,并不是写服务器的,是因为通过check_tcp脚本取得某端口状态后再通过nrpe返回给nagios服务端,然后出现在web中
 
 】服务端
 
1、修改services.cfg,添加
 
define service{
 
        host_name              xx
 
        service_description    mysql_3306
 
#        check_command          check_nrpe!check_tcp!3306
 
        check_command          check_nrpe!check_3306
 
--如果注释check_3306那一行的话,可能会出现
 
NRPE: Command 'check_tcp' not defined
 
--此处的定义是指并未在客户端那里定义
 
但是可以仍然可以在服务器端用check_nrpe获取3306的相关信息
 
root># ./check_nrpe -H xx -c check_3306
 
TCP OK - 0.000 second response time on port 3306|time=0.000177s;;;0.000000;10.000000
 
但是使用 check_tcp的话就不行了
 
因为对象check_3306是通过check_tcp来获取结果的,而check_tcp已经在command.cfg中定义了,所以不需要为check_tcp在进行定义了
 
###############监控内存
 
【客户端】
 
1、添加脚本:cat check_mem.sh
 
 TOTAL=`free -m | head -2 |tail -1 |gawk '{print $2}'`
 
# Free memory 
 
FREE=`free -m | head -2 |tail -1 |gawk '{print $4}'`
 
# to calculate free percent
 
# use the expression  free * 100 / total
 
FREETMP=`expr $FREE \* 100`
 
PERCENT=`expr $FREETMP / $TOTAL`
 
echo "$FREE MB ($PERCENT%) Free Memory"
 
exit 0
 
并且把该脚本复制到/usr/local/nagios/libexec,赋予执行权限,属主改为nagios
 
 
 
 2、修改配置文件,定义
 
command[check_mem]=/usr/local/nagios/libexec/check_mem.sh -w 150 -c 100
 
3、在客户端测试脚本,并重启nrpe
 
 root># ./check_mem.sh 
 
200 MB (1%) Free Memory




此方法是调用nrpe。


你可能感兴趣的:(Nagios监控内存和某个端口是否开启)