钉钉消息监控

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了钉钉消息监控相关的知识,希望对你有一定的参考价值。

在我们监控服务器的应用状态或服务器的端口状态异常时,经常需要发送告警信息给管理员,发送告警信息基本上要么以邮件、短息、微信、及其他方式告知管理员。现在使用钉钉软件的企业也开始逐渐增多,其中钉钉有一个机器人发送功能,可以做到机器人向钉钉指定用户发送消息。发送消息没有上限、而且免费,有了这个功能我们就可以使用钉钉机器人向系统管理员用户发送告警消息。


我这里有一台监控服务器,用来跑php监控脚本,PHP监控脚本每隔5分钟向主服务器请求一个状态文件,更具请求过来的状态文件进行判断主服务器状态是否正常,如果状态正常,则在每日上午9:30向管理员发送一条状态正常的消息,异常状态则直接发送。

代码如下:

//获取主服务器状态文件
function curl_html(){
    $ch = curl_init("http://www.xxx.asia/html/nginx-status.log") ;
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ;
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ;
    $output = curl_exec($ch) ;
    curl_close($ch);
    $get_str = strlen($output);
    return $get_str;
}

//获取钉钉token         
function get_token(){
    $url="https://oapi.dingtalk.com/gettoken?corpid=dinge1232db356e4a99&corpsecret=e9e4w__fryky95jOdcWfTaxvzeP2yLExenjOAC4sZuuyfVDk8yny8Wb_Ta12hr";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $output = curl_exec($ch);
    $token = json_decode($output);
    $obj_token = $token->{‘access_token‘};
    return $obj_token;
 }

//向钉钉端发送数据
function http_post_data($url, $data_string) {  
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_POST, 1);  
    curl_setopt($ch, CURLOPT_URL, $url);  
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);  
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(  
            ‘Content-Type: application/json; charset=utf-8‘,  
            ‘Content-Length: ‘ . strlen($data_string))  
    );  

   ob_start();  
   curl_exec($ch);  
   $return_content = ob_get_contents();  
   ob_end_clean();  
   $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
   return array($return_code, $return_content);  
   curl_close($ch);
}

$obj_token = get_token();  //获取token
$obj_status = curl_html();  //获取主服务器状态

$send_url = "https://oapi.dingtalk.com/chat/send?access_token=".$obj_token;
$chatid = "chate278923e931bb9bb36663bfebc9812a7"; //机器人ID
$sender = "0497593446775"; 

$get_date = date("H:i");

if($get_date == "09:30"){
    if($obj_status > "1"){
        $content = "时间: ".date("Y-m-d H:i:s")."\r\n平台Web服务异常,速请管理员处理!";
        $post_data = json_encode(array ("chatid" => $chatid,"sender" => $sender,"msgtype"=>"text","text"=>array("content"=>$content)));
        list($return_code, $return_content) = http_post_data($send_url, $post_data);
        die();
    }else{
        $content = "时间: ".date("Y-m-d H:i:s")."\r\n平台Web服务状态正常";
        $post_data = json_encode(array ("chatid" => $chatid,"sender" => $sender,"msgtype"=>"text","text"=>array("content"=>$content)));
        list($return_code, $return_content) = http_post_data($send_url, $post_data);
        die();
    }
}

if($obj_status > "1"){
    $content = "时间: ".date("Y-m-d H:i:s")."\r\n平台Web服务异常,速请管理员处理!";
    $post_data = json_encode(array ("chatid" => $chatid,"sender" => $sender,"msgtype"=>"text","text"=>array("content"=>$content)));
    list($return_code, $return_content) = http_post_data($send_url, $post_data);
}

消息发送如图:

技术分享

本文出自 “linux技术” 博客,请务必保留此出处http://linuxinfo.blog.51cto.com/412748/1852432

以上是关于钉钉消息监控的主要内容,如果未能解决你的问题,请参考以下文章

教你如何在 AlertManager 报警通知中展示监控图表

lite-monitor 一款基于shell命令的监控系统

nodejs通过钉钉群机器人推送消息

钉钉微应用发送消息

超详细配置Zabbix监控通过钉钉实现报警(3.4和4.0版本)

在 AlertManager 报警通知中展示监控图表