php钉钉机器人,php实现钉钉业务报警机器人

使用场景,服务器报异常错误,想要及时收到报警信息并处理

环境介绍,本博使用yaf框架+php,仅仅提供思路,参考,具体根据自己实际情况进行编写

1,每十分钟执行一次任务脚本

# 每10分钟执行一次的任务

if [ "0" -eq "$(($minute % 10))" ]; then

php -f ${pathRoot}public/index.php ‘request_uri=/error/dingdingLog‘

fi

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,如图是我的报警信息示例

20200511185339632095.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值