• 基于php 进行每半小时钉钉预警


    前言

    业务场景:监控当前业务当出现并发情况时技术人员可以可以及时处理

    使用技术栈: laravel+redis

    半小时触发一次报警信息实现思路

    1、xshell脚本 

    具体参数就不详细解释了,想要详细了解可以自行百度

    curl -H "Content-Type:application/json" -H "connection:Keep-Alive" -s -X Post "预警接口"
    2、laravel 任务调度

    任务调度 | 综合话题 |《Laravel 5.6 中文文档 5.6》| Laravel China 社区 (learnku.com)

    定时任务

    现在Kernel 文件书写定时任务,定时任务名称需要上下一致

    预警逻辑

    在Commands 中书写该逻辑

    当预警人数占当前时段总人数35% 时触发钉钉预警 该逻辑 根据业务自行书写

    钉钉预警实现思路

    1、获取token和secret

    保存后会获得 webhookurl 与 secret

    2、书写逻辑
    1. namespace App\Extend\Qy\Ding\Qy;
    2. use Illuminate\Support\Facades\Log;
    3. /**
    4. * 钉钉发送消息
    5. */
    6. class DingListen
    7. {
    8. //token
    9. // public $listenToken = "d3dfd656c95f7d319090bb9a51423cd0a948e7b26ce71a6042c4313469e654f4"; //线上机器人token
    10. public $listenToken = "f1112c52be54005e3f2c58f5bf610555f0fc655fb1cafb005e6242f66ca918a3"; //测试机器人token
    11. //secret
    12. // public $listenSecret = "SEC8c7d7a0cf2ecd150790004648be4a05ee39ab11cfecca4b96ceca23c8ab56260"; //线上机器人secret
    13. public $listenSecret = "SEC800bc05ded1461939ab7b46d0efa2a97cdc8c379ec29e89600a0753eef486527"; // 测试机器人secret
    14. /**
    15. * 请求地址
    16. * @var string $url
    17. * */
    18. public $url = 'https://oapi.dingtalk.com/robot/send';
    19. /**
    20. * 请求地址
    21. * @var string $timestamp 13位毫秒级
    22. * */
    23. public $timestamp;
    24. /**
    25. * 加签
    26. * @var string $sign
    27. * */
    28. public $sign;
    29. /**
    30. * webhookurl
    31. * @var string $webhookurl
    32. * */
    33. public $webhookurl;
    34. public function __construct(){
    35. //时间戳
    36. $this->timestamp = time() * 1000;
    37. //加签
    38. $str = $this->timestamp."\n". $this->listenSecret;
    39. $sign = hash_hmac("sha256",$str ,$this->listenSecret,true);
    40. $sign = base64_encode($sign);
    41. $this->sign = $sign ;
    42. //返回链接
    43. $webhookurl = $this->url.'?access_token='.$this->listenToken. '×tamp='.$this->timestamp.'&sign='.urlencode($this->sign);
    44. $this->webhookurl = $webhookurl;
    45. }
    46. //发送text文本信息
    47. public function text($content = '', $mobiles = [], $userIds = [], $isAtAll = true)
    48. {
    49. $sendContent = [
    50. "msgtype" => "text",
    51. "text" => [
    52. "content" => $content
    53. ],
    54. "at" => [
    55. "atMobiles" => $mobiles,
    56. "atUserIds" => $userIds, //不是钉钉管理员无法获取userIds
    57. "isAtAll" => $isAtAll
    58. ]
    59. ];
    60. $res = $this->_curl_post_json($this->webhookurl, $sendContent);
    61. return $res;
    62. }
    63. //发送json数据
    64. public function _curl_post_json($url, $data = array())
    65. {
    66. $curl = curl_init($url);
    67. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    68. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    69. curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
    70. curl_setopt($curl, CURLOPT_POST, 1);
    71. curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data, 320));
    72. curl_setopt($curl, CURLOPT_HEADER, 0);
    73. curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    74. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    75. $res = curl_exec($curl);
    76. curl_close($curl);
    77. return $res;
    78. }
    79. }

    也可以将上述配置文件封装到Cofig 配置文件 自行调用 实例只发送了text 文本消息 具体案例信息查看官方文档进行配置 本文章仅限提供思路

  • 相关阅读:
    rust编译器教我做人,为啥还要学习rust语言,因为想使用rust做一些底层服务,更深入的研究技术。
    Linux打包发布常用命令
    PDAC复盘法是什么?怎么用?
    《操作系统-真象还原》09. 线程
    AIE荧光性质温温敏性水凝胶纳米微球PS-co-PNIPAM/银纳米团簇与吡啶羧酸AIE水凝胶的制备
    DP-1-01背包问题
    【数据结构与算法】之深入解析“解出数学表达式的学生分数”的求解思路与算法示例
    【Java Web】Spring整合Kafka
    空调玻璃棉管保温好吗?
    载CdTe交联聚苯乙烯荧光微球/聚苯乙烯单孔微球β-环糊精聚异丙基丙烯酰胺多种制备
  • 原文地址:https://blog.csdn.net/qq_63530862/article/details/133824043