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

news2024/11/25 0:57:28

前言

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

使用技术栈: 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、书写逻辑
<?php
namespace App\Extend\Qy\Ding\Qy;

use Illuminate\Support\Facades\Log;


/**
 * 钉钉发送消息
 */
class DingListen
{
    //token
//    public $listenToken = "d3dfd656c95f7d319090bb9a51423cd0a948e7b26ce71a6042c4313469e654f4"; //线上机器人token
    public $listenToken = "f1112c52be54005e3f2c58f5bf610555f0fc655fb1cafb005e6242f66ca918a3";  //测试机器人token
    //secret
//    public $listenSecret = "SEC8c7d7a0cf2ecd150790004648be4a05ee39ab11cfecca4b96ceca23c8ab56260"; //线上机器人secret
    public $listenSecret = "SEC800bc05ded1461939ab7b46d0efa2a97cdc8c379ec29e89600a0753eef486527";  // 测试机器人secret
    /**
     * 请求地址
     * @var string $url
     * */
    public $url = 'https://oapi.dingtalk.com/robot/send';

    /**
     * 请求地址
     * @var string $timestamp 13位毫秒级
     * */
    public $timestamp;

    /**
     * 加签
     * @var string $sign
     * */
    public $sign;

    /**
     * webhookurl
     * @var string $webhookurl
     * */
    public $webhookurl;


    public function __construct(){
        //时间戳
        $this->timestamp = time() * 1000;
        //加签
        $str = $this->timestamp."\n". $this->listenSecret;
        $sign =  hash_hmac("sha256",$str ,$this->listenSecret,true);
        $sign = base64_encode($sign);
        $this->sign = $sign ;
        //返回链接
        $webhookurl = $this->url.'?access_token='.$this->listenToken. '&timestamp='.$this->timestamp.'&sign='.urlencode($this->sign);
        $this->webhookurl = $webhookurl;
    }



    //发送text文本信息
    public function text($content = '', $mobiles = [], $userIds = [], $isAtAll = true)
    {
        $sendContent = [
            "msgtype" => "text",
            "text" => [
                "content" => $content
            ],
            "at" => [
                "atMobiles" => $mobiles,
                "atUserIds" => $userIds,   //不是钉钉管理员无法获取userIds
                "isAtAll" => $isAtAll
            ]
        ];
        $res = $this->_curl_post_json($this->webhookurl, $sendContent);
        return $res;
    }

    //发送json数据
    public function _curl_post_json($url, $data = array())
    {
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data, 320));
        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $res = curl_exec($curl);
        curl_close($curl);
        return $res;
    }
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1093442.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10.数学环境排列数学公式

1.\begin{gathered} \begin{gathered} 是 LaTeX 中的数学环境&#xff0c;通常用于排列多行数学公式或方程组&#xff0c;这些公式或方程组需要在某种程度上垂直居中对齐。这个环境通常用于多行公式&#xff0c;与 align 或 eqnarray 不同&#xff0c;它不会自动对齐等号&…

OAuth2.0、和jwt、spring security之间的区别和联系

OAuth2.0的概念 OAuth 2.0开放授权&#xff0c;OAuth 2.0 是一种授权框架&#xff0c;用于授权第三方应用程序访问用户资源&#xff0c;而无需共享用户的凭据。它为用户提供了更好的隐私和安全性&#xff0c;并允许用户对授权进行细粒度的控制&#xff0c;颁发的token是第三方应…

Vue-2.9单页应用程序

单页应用程序&#xff08;SPA-Single Page Application&#xff09; 所有功能在一个html页面上实现 具体示例&#xff1a;网易云音乐https://music.163.com 京东淘宝等是多页面应用 单页VS多页 单页面应用&#xff1a;系统类网站、内部网站、文档类网站、移动端站点 多页面…

蓝桥杯 枚举算法 (c++)

枚举就是根据提出的问题&#xff0c;——列出该问题的所有可能的解&#xff0c;并在逐一列出的过程中&#xff0c;检验每个可能解是否是问题的真正解&#xff0c; 如果是就采纳这个解&#xff0c;如果不是就继续判断下一个。 枚举法一般比较直观&#xff0c;容易理解&#xff0…

python+django医患档案电子病历管理系统7ld2o

本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行&#xff0c;将系统所使用到的表以及数据存储到MySQL数据库中&#xff0c;方便对数据进行操作本课题基于WEB的开发平台 1.运行环境&#xff1a;python3.7/python3.8。 2.IDE环境&#xff1a;pycharmmysql5.7; …

从Docker初识K8S

什么是Docker&#xff1f; 假设现在有一个服务场景&#xff0c;你是一个程序猿&#xff0c;你编写代码实现一个机器人喝水的功能&#xff0c;然后你需要将这份代码部署到每个机器人身上&#xff0c;你部署的时候需要一个个安装代码所需的依赖包&#xff0c;然后运行测试你的代码…

面向C++模块的开源 IFC SDK

早在 VS2019 v16.10 版本的时候&#xff0c;我们就官宣了对 C 模块(以及几乎所有其他 C 20 特性)的全面支持&#xff0c;包括 MSVC 编译器工具集&#xff0c;静态分析&#xff0c;智能感知和调试器等&#xff0c;而实现模块需要将 C 代码实现为一种内部的临时表示形式。 今天&…

【苍穹外卖 | 项目日记】第四天

前言&#xff1a; 今天状态还可以&#xff0c;既有自己实战独立写接口&#xff0c;又听了课&#xff0c;学习了新的知识 目录 前言&#xff1a; 今日完结任务&#xff1a; 今日收获&#xff1a; 实现店铺状态接口 杂项知识点&#xff1a; 总结&#xff1a; 今日完结任务…

华为9.20笔试 复现

第一题 丢失报文的位置 思路&#xff1a;从数组最小索引开始遍历 #include <iostream> #include <vector> using namespace std; // 求最小索引值 int getMinIdx(vector<int> &arr) {int minidx 0;for (int i 0; i < arr.size(); i){if (arr[i] …

重新认识面向对象

一、重新认识面向对象 1、重新认识面向对象1.1、理解隔离的变化1.2、各司其职1.3、对象是什么 2、面向对象设计基本原则&#xff08;八个原则&#xff09;先介绍分而治之的思想构造类介绍抽象类的方法构造类2.1、依赖倒置原则(DIP )2.2、开放封闭原则(OCP )2.3、单一职责原则&a…

推荐《咒术回战》

电视动画片《咒术回战》改编自芥见下下著作的同名漫画作品&#xff0c;于2019年11月25日宣布电视动画化的消息 [1] &#xff0c;该系列由MAPPA负责制作。第1期于2020年10月3日—2021年3月27日播出 [8] &#xff0c;全24集。 动画电影《咒术回战 0》于2021年3月27日宣布制作决…

实施 DevSecOps 最佳实践

DevSecOps 是一个框架&#xff0c;它将开发 (Dev)、IT 运营 (Ops) 和安全 (Sec) 流程的实践融合到一个简化的流程中。使用这种方法&#xff0c;DevSecOps 团队能够确保将安全性集成到软件开发生命周期中&#xff0c;确保以“安全第一”的心态构建、部署和维护软件。在本教程中&…

自动驾驶学习笔记(四)——变道绕行仿真

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《2023星火培训【感知专项营】》免费课程—>传送门 文章目录 前言 仿真内容 启动Dreamview 开启Sim…

网络安全(黑客技术)——如何高效自学

前言 前几天发布了一篇 网络安全&#xff08;黑客&#xff09;自学 没想到收到了许多人的私信想要学习网安黑客技术&#xff01;却不知道从哪里开始学起&#xff01;怎么学&#xff1f;如何学&#xff1f; 今天给大家分享一下&#xff0c;很多人上来就说想学习黑客&#xff0c…

ChatGPT AIGC 实现数据分析可视化三维空间展示效果

使用三维空间图展示数据有以下一些好处&#xff1a; 1可视化复杂性&#xff1a;三维图可以展示三个或更多的变量&#xff0c;一眼就能看出数据各维度之间的关系&#xff0c;使复杂数据的理解和分析变得更为直观。 2检测模式和趋势&#xff1a;通过三维图&#xff0c;用户可以…

从零开始的stable diffusion

stable diffusion真的是横空出世&#xff0c;开启了AIGC的元年。不知你是否有和我一样的困惑&#xff0c;这AI工具好像并不是那么听话&#xff1f; 前言 我们该如何才能用好stable diffusion这个工具呢&#xff1f;AI究竟在stable diffusion中承担了什么样的角色&#xff1f;如…

单片机综合小项目

一、单片机做项目常识 1.行业常识 2.方案选型 3.此项目定位和思路 二、单片机的小项目介绍 1.项目名称&#xff1a;基于51单片机的温度报警器 &#xff08;1&#xff09;主控&#xff1a;stc51&#xff1b; &#xff08;2&#xff09;编程语言&#xff1a;C语言 &#xff08;…

数据结构 优先级队列(堆)

数据结构 优先级队列(堆) 文章目录 数据结构 优先级队列(堆)1. 优先级队列1.1 概念 2. 优先级队列的模拟实现2.1 堆的概念2.2 堆的存储方式2.3 堆的创建2.3.1 堆向下调整2.3.2 堆的创建2.3.3 建堆的时间复杂度 2.4 堆的插入与删除2.4.1 堆的插入2.4.2 堆的删除 2.5 用堆模拟实现…

基于微服务+Java+Spring Cloud开发的建筑工地智慧平台源码 云平台多端项目源码

建筑工地智慧平台源码&#xff0c;施工管理端、项目监管端、数据大屏端、移动APP端全套源码 技术架构&#xff1a;微服务JavaSpring Cloud VueUniApp MySql自主版权实际应用案例演示 建筑工地智慧平台已应用于线上巡查、质量管理、实名制管理、危大工程管理、运渣车管理、绿色…

非连续分配管理方式之基本分页存储管理

连续分配&#xff1a;为用户进程分配的必须是一个连续的内存空间。 非连续分配&#xff1a;为用户进程分配的可以是一些分散的内存空间。 基本分页存储管理的思想∶把进程分页&#xff0c;各个页面可离散地放到各个的内存块中。 1.分页存储 1.内存空间分区 将内存空间分为一…