• 基于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 文本消息 具体案例信息查看官方文档进行配置 本文章仅限提供思路

  • 相关阅读:
    HarmonyOS原子化服务开发中的API版本使用问题
    OpenCloudOS 8.5 - 腾讯主导的 RHEL 8 兼容发行版
    CJC8988带2个立体声耳机驱动器的低功率立体声编解码器
    万字血书React—走近React
    C - Previous Permutation(思维,逆序对思想 or STL全排列)
    《最新出炉》系列入门篇-Python+Playwright自动化测试-40-录制生成脚本
    (附源码)php小型网络舆情平台设计 毕业设计 252324
    矿产行业供应链协同系统解决方案:构建数智化平台,保障矿产资源安全供应
    泊车——prescan
    精密空调里面kfb和kfd、kfc 三块pcb板子都负责什么功能?
  • 原文地址:https://blog.csdn.net/qq_63530862/article/details/133824043