实际使用方法 参考一下 方法:
在监控端的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
位置:/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
位置:/usr/local/nagios/etc/objects/)
在文件中添加命令
define command{ command_name check_winport command_line /usr/local/nagios/libexec/check_winport 172.16.41.5 }
位置:/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。