[工作内容]
老大的需求,对指定IP进行ping,当到达一定的阀值,如50ms,那么就cirtical,并且对其进行一次tracertroute,我们都知道对前面的需求,很好解决,那就是check_ping这个插件就能解决,但它还无法满足后面的需求,咋办?只有自己开发了,好了,那就干吧!~
[过程]
commands.cfg
define command{
        command_name    check_ping_dev
        command_line    $USER1$/check_ping_dev $HOSTADDRESS$  $ARG1$  $ARG2$  10
        }
services.cfg
define service  {
        name                    mrtg-services-init
        service_description     ping 
        check_command           check_ping_dev!50,50%!50,50%
        check_period            24x7
        max_check_attempts      2
        normal_check_interval   5 
        retry_check_interval    2
        contact_groups          sagroup
        notification_interval   5
        notification_period     24x7
        notification_options    w,u,c,r
        register                   0
}
define service {
        use                     mrtg-services-init
        host_name               M-x.x.x.x,M-y.y.y.y
}
那么现在开发check_ping_dev

#!/usr/bin/perl

$USR1="/usr/local/nagios/libexec";
$ARG1=$ARGV[0];
$ARG2=$ARGV[1];
$ARG3=$ARGV[2];
$ARG4=$ARGV[3];

$result = `$USR1/check_ping -H $ARG1 -w $ARG2 -c $ARG3 -p $ARG4`;
@results=split(" ",$result);
if( grep(/CRITICAL/,@results) ){
       printf($result);
       print "\n";
       `$USR1/save_log $ARG1`;
       exit 2;
}
else{
    printf($result);
    print "\n";
    exit 0;
}

save_log的作用就是记录tracert

#!/usr/bin/perl
use POSIX qw(strftime);

$dtime = strftime "%Y%m%d %H:%M:%S", localtime(time());

$SAVE_PATH="/tmp";
$RAG1=$ARGV[0];

$result=`/bin/traceroute $RAG1`;
open("FH",">>$SAVE_PATH/$RAG1");
    print FH $dtime."\n";
    print FH $result."\n";

close(FH);

本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/184423,如需转载请自行联系原作者

nagios扩展开发之check_ping相关推荐

  1. 苹果开发之Cocoa编程(原书第4版)

    <苹果开发之Cocoa编程(原书第4版)> 基本信息 原书名:Cocoa Programming for Mac OS X: Fourth Edition 作者: (美)希莱加斯(Hill ...

  2. Flutter开发之AlertDialog、AboutDialog对话框组件-2(41)

    继上一篇介绍了SimpleDialog对话框组件 Flutter开发之SimpleDialog对话框组件-1(40) 这里再介绍一种带有确定.取消按钮的对话框组件:AlertDialog.AboutD ...

  3. Android NDK开发之 NEON基础介绍

    原文:http://blog.csdn.net/app_12062011/article/details/50434259 Android NDK开发之 NEON基础介绍 这是官方介绍: http:/ ...

  4. 安卓开发之Handler、HandlerThread学习篇

    安卓开发之Handler.HandlerThread学习心得篇           开篇说明:本文采用的都是最基础最简单的例子,目的只有一个:希望大家将学习的焦点放在Handler的理解和使用上,我不 ...

  5. Android开发之旅:android架构

    引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我 们对android有了个大致的了解,知道如何搭建and ...

  6. 从全职高手开始的系统_动画全职高手第二季热血回归,腾讯视频的国漫IP全链路开发之道...

    这个国庆档,国产动画在内容市场上的存在感比想象中更加有分量.电影市场上,动画IP电影<姜子牙>完成票房领跑,掀起观影热潮:动画番剧市场上,头部IP动画<全职高手>第二季时隔三年 ...

  7. ArcGIS Engine开发之旅02--ArcGIS Engine中的类库

    原文 ArcGIS Engine开发之旅02--ArcGIS Engine中的类库 System类库 System类库是ArcGIS体系结构中最底层的类库.System类库包含给构成ArcGIS的其他 ...

  8. 开发中的“软”与“硬”:高画质移动游戏开发之道

    摘要:游戏的效果不仅与游戏引擎的渲染相关,与硬件优化也有千丝万缕的联系.一款基于芯片优化的移动游戏界面,甚至可以堪比视频游戏的视觉效果.高通半导体事业部资深经理刘晓光从软硬件两个层面分享了移动游戏开发 ...

  9. 移动web开发之rem布局(rem基础、媒体查询、 less 基础、rem适配方案)

    移动web开发之rem布局 一.rem基础 rem单位 rem (root em)是一个相对单位,类似于em,em是父元素字体大小. 不同的是rem的基准是相对于html元素的字体大小. 比如,根元素 ...

  10. ArcGIS Engine开发之旅08--和查询相关的对象和接口

    ArcGIS Engine开发之旅08--和查询相关的对象和接口 原文:ArcGIS Engine开发之旅08--和查询相关的对象和接口 查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性 ...

最新文章

  1. C++中vector的使用
  2. 混合mixin函数_Less 混合
  3. [转]微信的一道前端面试题
  4. idea使用svn拉取项目代码_使用 IDEA 搭建 Hadoop3.1.1 项目
  5. 【关于我】一个专注于嵌入式物联网架构设计的攻城狮
  6. 西瓜视频(头条)解析并利用IDM工具下载
  7. Cypress前端测试左移分享
  8. iridescent歌词翻译
  9. 为什么有些大公司的技术弱爆了?
  10. SCI Translate 11安装教程
  11. 2018-2019 起风了,唯有努力生存
  12. 《Shopify从入门到精通》笔记(4~6章)
  13. CeSi 安装与配置
  14. 跑步耳机哪款好用,排行前五的运动耳机推荐
  15. Java中四舍五入和四舍六入五成双
  16. 创建镜像问题出现的错误
  17. mysql5.7.17.zip教程,Mysql学习win10下mysql 5.7.17 zip压缩包版安装教程
  18. Java空指针异常处理
  19. 杰理zHiUSB设备功能【篇】
  20. mmWave SDK Module Documentation--Millimeter Wave(mmw) Demo for XWR18XX

热门文章

  1. 万能五笔输入法@相反
  2. 数据结构-单链表的正向排序
  3. SPOJ Pouring Water
  4. Docker 比较好的新入门教程
  5. margin-top的兼容问题
  6. python学习笔记 - 函数: 传参列表副本(不改变列表本身)
  7. 079 pandas模块
  8. VS Code 中文注释显示乱码
  9. Something about mvss
  10. iOS自己定义返回button(不影响返回手势)