php实现钉钉业务报警机器人
使用场景,服务器报异常错误,想要及时收到报警信息并处理
环境介绍,本博使用yaf框架+php,仅仅提供思路,参考,具体根据自己实际情况进行编写
1,每十分钟执行一次任务脚本
# 每10分钟执行一次的任务 if [ "0" -eq "$(($minute % 10))" ]; then php -f ${pathRoot}public/index.php ‘request_uri=/error/dingdingLog‘ fi
2,先在钉钉pc端创建业务机器人
具体操作,参考:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
我使用的是第三种方式,ip段
3,如果是已添加之后,复制链接
这是你需要群发消息的地址
https://oapi.dingtalk.com/robot/send?access_token=XXXXXX
4,php实现
修改框架错误日志log写入方法
/** * error log * * @param Exception $exception * @param int $error_code 0-正常报错 */ private function log($exception, $error_code = 0) { //log exception $msg = sprintf("%s:%s. in %s on line %s, trace:%s", get_class($exception), $exception->getMessage(), $exception->getFile(), $exception->getLine(), $exception->getTraceAsString() ); // 排除 404 的报错才推送 // there is not method / not such file or diractory if ($error_code != ApiException::NOT_EXISTS) { $this->saveLog($exception->getMessage()); } LK::log()->error($msg); }
如上所示,我将一部分日志写入redis
5,保存日志
public function saveLog($msg) { $redis = LK::redis(‘log‘); $key = md5($msg); $saved = $redis->sadd(‘error_log‘, $key); if ($saved) { $redis->setex($key, 1100, $msg); } return $saved; }
6,读取redis消息,给钉钉推送错误消息
public function dingdingLogAction() { $redis = LK::redis(‘log‘); $keys = $redis->sMembers(‘error_log‘); if (count($keys)) { foreach ($keys as $key) { if (false != ($msg = $redis->get($key))) { Func::dingdingLog($msg); } } $redis->del(‘error_log‘); } }
7,curl上面那个地址,具体信息自行修改
/** * 钉钉消息推送 * 推到钉钉 php+web 群 * @return bool */ public static function dingdingLog($msg) { $url = ‘https://oapi.dingtalk.com/robot/send?access_token=XXXXXX‘; $env = \Yaf\Application::app()->environ(); $fix = ‘somi‘; $time = date(‘Y-m-d H:i:s‘); $data = [ ‘msgtype‘ => ‘text‘, ‘text‘ => [ ‘content‘ => "[{$fix}:{$env}:{$time}]:{$msg}", ] ]; $data_string = json_encode($data); $resp = \Frame\Core\Tools::curl($url, ‘POST‘, $data_string, [‘Content-Type: application/json;charset=utf-8‘]); $resp = json_decode($resp, true); if ($resp[‘errorcode‘]) { return false; } return true; }
8,如图是我的报警信息示例
相关推荐
quyunfei 2020-11-19
机器人智力研究 2020-11-18
聊天终结者机器人 2020-11-18
txq0 2020-11-20
zCSDN 2020-11-09
机器人智力研究 2020-11-05
ARMOTO机器人 2020-11-06
txq0 2020-11-06
遇见人工智能 2020-11-03
聊天终结者机器人 2020-11-02
clliuhust 2020-10-30
yatou0 2020-10-29
雨燕 2020-10-29
nodid 2020-10-29
yatou0 2020-10-29
zCSDN 2020-10-27
dhyddy 2020-10-27
聊天终结者机器人 2020-10-26