前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >PYTHON 连接钉钉传输工作数据监控

PYTHON 连接钉钉传输工作数据监控

作者头像
百里丶落云
发布于 2022-11-03 07:24:11
发布于 2022-11-03 07:24:11
71000
代码可运行
举报
文章被收录于专栏:享~方法享~方法
运行总次数:0
代码可运行

“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,点击查看活动详情

先导

工作中运维工作经常会遇到一些数据汇报,数据监控, 作为一个新人真心感觉这些数据没有什么意思(当然也许是我菜),有句话怎么说,懒惰是人类进步的阶梯.这里使用 python 连接数据把数据 传到钉钉, 这样可以进行数据监控 ,看看是哪家小可爱又 搞事情了 ╭(╯^╰)╮

钉钉接口

钉钉提供了群机器人接口等很多很多接口,网上 demo 一大堆.这里只制作简单的表述

钉钉官网:

[https://developers.dingtalk.com/document/app/overview-of-group-robots]

可以给群里增加一个机器人,通过 @固定人 ,或者所有人,广播等方式发送信息

创建钉钉机器人

首先你得建立个群

增加群机器人

完成必要的安全设置,勾选我已阅读并同意《自定义机器人服务及免责条款》,然后单击完成

目前有 3 种安全设置方式,请根据需要选择一种:

  • 自定义关键词:最多可以设置 10 个关键词,消息中至少包含其中 1 个关键词才可以发送成功。 例如添加了一个自定义关键词:监控报警,则这个机器人所发送的消息,必须包含监控报警这个词,才能发送成功。
  • 加签: 把timestamp+"\n"+密钥当做签名字符串,使用 HmacSHA256 算法计算签名,然后进行 Base64 encode,最后再把签名参数再进行 urlEncode,得到最终的签名(需要使用 UTF-8 字符集)。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://oapi.dingtalk.com/robot/send?access_token=XXXXXX&timestamp=XXX&sign=XXX

测试机器人

python 代码版本

这里直接使用 加签版本的,因为这种时间判定的才是最常用的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
import json
import time
import hmac
import hashlib
import base64
import urllib.parse

timestamp = str(round(time.time() * 1000))   #毫秒级时间戳
secret = '你的secret'
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
#往post接口里面仍数据

def dingmessage():

# 请求的URL,WebHook地址

    webhook = "https://oapi.dingtalk.com/robot/send?access_token=你的token&timestamp="+str(timestamp)+"&sign="+str(sign)
    print(webhook)
#构建请求头部
    header = {
        "Content-Type": "application/json",
        "Charset": "UTF-8"
}
#构建请求数据
    tex = "能力越大,责任越大。"
    message ={

        "msgtype": "text",
        "text": {
            "content": tex
        },
        "at": {

            "isAtAll": False
        }

    }
#对请求的数据进行json封装
    message_json = json.dumps(message)
#发送请求
    info = requests.post(url=webhook,data=message_json,headers=header)
#打印返回的结果
    print(info.text)

if __name__=="__main__":
    dingmessage()

打印结果

如果显示 ok 那么就是说数据传输成功了

这时候接入钉钉即可 查看数据

好了现在 py 已经能够给钉钉发送信息了,那么怎么做监控呢

创建时间监控 实时发送信息

我这里以 apscheduler 框架 进行定时巡回

一、安装 APScheduler

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install apscheduler

复制代码

二、基本概念

APScheduler 有四大组件:

1、触发器 triggers :触发器包含调度逻辑。每个作业都有自己的触发器,用于确定下一个任务何时运行。除了初始配置之外,触发器是完全无状态的。有三种内建的 trigger:

(1)date: 特定的时间点触发

(2)interval: 固定时间间隔触发

(3)cron: 在特定时间周期性地触发

2、任务储存器 job stores:用于存放任务,把任务存放在内存(为默认 MemoryJobStore)或数据库中。3、执行器 executors: 执行器是将任务提交到线程池或进程池中运行,当任务完成时,执行器通知调度器触发相应的事件。

4、调度器 schedulers: 把上方三个组件作为参数,通过创建调度器实例来运行根据开发需求选择相应的组件,下面是不同的调度器组件:BlockingScheduler 阻塞式调度器:适用于只跑调度器的程序。BackgroundScheduler 后台调度器:适用于非阻塞的情况,调度器会在后台独立运行。AsyncIOScheduler AsyncIO 调度器,适用于应用使用 AsnycIO 的情况。GeventScheduler Gevent 调度器,适用于应用通过 Gevent 的情况。TornadoScheduler Tornado 调度器,适用于构建 Tornado 应用。TwistedScheduler Twisted 调度器,适用于构建 Twisted 应用。QtScheduler Qt 调度器,适用于构建 Qt 应用。

三、使用步骤

1、新建一个调度器 schedulers

2、添加调度任务

3、运行调度任务

比如写 3 就是说 冯 3 触发

*/3 就是说 每隔 3 单位触发

假设触发条件

我们这里判定如果当前时间 4 个数据加起来大于 12 那么 就发送消息

每分钟发送一次

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from apscheduler.schedulers.blocking import BlockingScheduler
import datetime
# 输出时间
import pymssql
import copy
import time
import requests
import json
import hmac
import hashlib
import base64
import urllib.parse

timestamp = str(round(time.time() * 1000))
secret = '你的secret'
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))

# now = time.time() #返回float数据
#
#
# #毫秒级时间戳
# print(int(round(now * 1000)))
# now1=int(round(now * 1000))




def dingmessage(num):

# 请求的URL,WebHook地址

    webhook = "https://oapi.dingtalk.com/robot/send?access_token=你的token&timestamp="+str(timestamp)+"&sign="+str(sign)
    print(webhook)
#构建请求头部
    header = {
        "Content-Type": "application/json",
        "Charset": "UTF-8"
}
#构建请求数据
    tex = "能力越大,责任越大。"+str(num)
    message ={

        "msgtype": "text",
        "text": {
            "content": tex
        },
        "at": {

            "isAtAll": False
        }

    }
#对请求的数据进行json封装
    message_json = json.dumps(message)
#发送请求
    info = requests.post(url=webhook,data=message_json,headers=header)
#打印返回的结果
    print(info.text)


def job():
    hour = datetime.datetime.now().hour
    min = datetime.datetime.now().minute
    f1 = str(hour)[0]
    f2 = str(hour)[1]
    f3 = str(min)[0]
    f4 = str(min)[1]
    print(f1)
    print(f2)
    print(f3)
    print(f4)
    print(int(f1) + int(f2) + int(f3) + int(f4))
    if int(f1) + int(f2) + int(f3) + int(f4) > 12:
        dingmessage(int(f1) + int(f2) + int(f3) + int(f4) )


# BlockingScheduler
scheduler = BlockingScheduler()
#1-23小时内,每一分钟触发一次, 后面那个意思是说如果3600 秒触发 那么讲重新执行该任务
scheduler.add_job(job, 'cron', hour='1-23', minute='*/1',misfire_grace_time=3600)#1
scheduler.start()

结果

运行结果

钉钉结果

如图 23.18 分 2+3+1+8=14 >12 触发条件 就给钉钉 发送信息了

致此一个见得 发送文字功能实现,有问题即可发送钉钉

还有一点就是钉钉一定要调成前台允许显示, 然后在录音个对应的提示. 懒人必备,

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
钉钉常用的消息类型与数据格式总结
准备好加签后的webhook地址后,就可以通过http请求,向钉钉模拟发送消息了。
公众号: 云原生生态圈
2022/11/02
1.3K0
钉钉常用的消息类型与数据格式总结
Python 运用Paramiko实现批量巡检
通过封装Paramiko这个SSH模块,我们可以实现远程批量管理Linux主机,在此基础上配合钉钉API接口可实现自动告警机制,定期自动检查设备状态,并推送到钉钉群内。
王瑞MVP
2022/12/28
1.2K0
Python 运用Paramiko实现批量巡检
python钉钉机器人自定义回复
然后去实现handle_client 就好了。篇幅有限。完整的代码关注公众号 罗尔街 即可获取
Michel_Rolle
2023/07/30
2.6K4
把盏言欢,款款而谈,ChatGPT结合钉钉机器人(outgoing回调)打造人工智能群聊/单聊场景,基于Python3.10
    就像黑火药时代里突然诞生的核弹一样,OpenAI的ChatGPT语言模型的横空出世,是人工智能技术发展史上的一个重要里程碑。这是一款无与伦比、超凡绝伦的模型,能够进行自然语言推理和对话,并且具有出色的语言生成能力。
用户9127725
2022/12/09
1.8K0
把盏言欢,款款而谈,ChatGPT结合钉钉机器人(outgoing回调)打造人工智能群聊/单聊场景,基于Python3.10
路由器日志通过钉钉机器人自动推送
由于申请的电信宽带IP不是固定的,每次变了IP又不知道,需要有个IP变更提醒的小功能。
萌海无涯
2020/05/09
1.2K0
Python - 接入钉钉机器人
https://developers.dingtalk.com/document/robots/use-group-robots
小菠萝测试笔记
2021/11/18
9640
Python - 接入钉钉机器人
python实现自动向钉钉群推送消息
步骤一:【电脑钉钉 】-【群聊】-【群设置】-【智能群助手】-【添加更多】-【添加机器人】-【自定义】-【添加】,编辑机器人名称和选择添加的群组。
墨紫羽墨
2021/12/12
1.6K0
如何用Python发送告警通知到钉钉?
前不久,看到了明哥写的如何用Python发送警告通知到企业微信,想起来之前写过用Pytho发送指定格式数据到钉钉的服务,本文将之前的代码重构下,变成一个:利用Python监控服务器数据,然后有异常就通过钉钉发送给用户。
老表
2021/12/27
2.1K0
如何用Python发送告警通知到钉钉?
开通与使用钉钉群机器人 [附API代码]
目录 开通方式 参考代码 使用示范 开通方式 免费,有群就能开,任何用户都可开 官方文档:自定义机器人接入 - 钉钉开放平台 注意事项:用电脑版钉钉来开通,手机上的不行。 参考代码 import time import hmac import hashlib import base64 import urllib.parse import io from pyzbar import pyzbar from PIL import Image import requests, json # 导入依赖
小锋学长生活大爆炸
2022/03/29
1.6K0
开通与使用钉钉群机器人 [附API代码]
Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
盲猜是这个 storeSelectionEnabled 字段影响的,因为只有它是 False,当然也有猜过是下面的 pickupDisplay,但从命名来看,第一个才是影响是否可选中的字段
小菠萝测试笔记
2021/11/18
9070
Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
python自动化高效办公第二期,带你项目实战【二】{数据可视化、发送邮件(定时任务监控)、python聊天机器人(基于微信、钉钉)}
API商城_API_API接口大全_API一站式采购基地百度智能云API商城-API一站式采购基地,API商城提供天气查询API、实名认证API、短信验证码、OCR识别等海量API服务。选购API服务,首选百度智能云API商城。
汀丶人工智能
2022/12/21
1.1K0
python自动化高效办公第二期,带你项目实战【二】{数据可视化、发送邮件(定时任务监控)、python聊天机器人(基于微信、钉钉)}
自动化系列(四)Python实现钉钉机器人
定期数据需求除了以邮件的形式交付外,也可以发送到工作群里通知相关人员及时关注,本文将介绍如何推送数据到钉钉群里并@相关人员及时关注。
HsuHeinrich
2023/02/24
1.3K0
自动化系列(四)Python实现钉钉机器人
Serverless实践系列(七):“定制”业务告警功能
在使用云产品的时,部分业务可能会需要“定制化”告警功能,那么,如何快速做一个定制化的告警系统呢?本文将会通过腾讯云云API对Kafka消息积压数量进行监控(在通用云监控部分不提供这个指标的告警),当超过阈值,通过Email以及企业微信和短信等进行业务告警。 云API对数据进行获取 说到云API数据获取部分,这里就要向大家推荐一款好用的产品:Explorer,这个产品可以帮助节省很多力气,本文也是通过Explorer来进行鉴权和监控数据获取的工作: 鉴权部分(已经去掉了我个人的SecretId和Key,如果
腾讯云serverless团队
2019/08/15
7.1K0
Serverless实践系列(七):“定制”业务告警功能
从 0 到 1 使用 Python 开发一个钉钉群应答机器人[附完整源码]
很多时候,我们都希望计算机程序能够为我们自动化的处理一些学习、工作和生活上的任务,毕竟「偷懒」可是促进科技进步和社会发展的一大动力。基于这种需求,诞生了很多种自动化的工具,比如爬虫,自动地帮我们采集数据;比如智能问答机器人,自动地回答客户提出的问题。
州的先生
2021/06/21
5.2K0
从 0 到 1 使用 Python 开发一个钉钉群应答机器人[附完整源码]
Prometheus告警集成到钉钉
集成到钉钉 编写python flask脚本 cat > app.py <<EOF #!/usr/bin/python # -*- coding: utf8 -*- from flask import Flask from flask import request import time import hmac import hashlib import base64 import urllib import requests import json import sys reload(sys)
mikelLam
2022/10/31
5460
使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
    最近疫情比较严重,很多公司依靠阿里旗下的办公软件钉钉来进行远程办公,当然了,钉钉这个产品真的是让人一言难尽,要多难用有多难用,真的让人觉得阿里的pm都是脑残才会设计出这种脑残产品,不过吐槽归吐槽,该用还得用,虽然钉钉别的功能很鸡肋,但是机器人这个功能还是让人眼前一亮,属于比较极客的功能,它可以将第三方服务的信息聚合到钉钉群中,实现信息的自动化同步,例如:通过聚合Github、Gitlab等源码管理服务,实现源码更新同步;通过聚合Trello、JIRA等项目协调服务,实现项目信息同步;同事,支持Webhook协议的自定义接入,支持更多可能性,例如:将运维报警提醒、自动化测试的结果报告提醒、工作、生活日程安排(上班打卡、下班吃饭、健身、读书、生日、纪念日...)等等的提醒,通过自定义机器人聚合到钉钉中。
用户9127725
2022/08/08
9070
使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
AlertManager 钉钉报警
https://github.com/yangpeng14/alertmanager-dingtalk-hook
YP小站
2020/06/04
2.3K0
AlertManager 钉钉报警
​​钉钉自定义机器人简单使用
年前公司的需求里面有用到钉钉机器人,使用之后发现真的非常简单,不得不感叹阿里的牛逼,这篇文章总结了一下个人使用钉钉机器人的经验,同时介绍个人据此构建一个工具类来方便后续直接“开箱即用”,希望对于读者有所启发。
阿东
2021/08/16
4K0
​​钉钉自定义机器人简单使用
我是怎样用Shell脚本完成钉钉机器人消息推送的
我喜欢shell,是因为在Linux环境下,几乎可以完成所有的事儿,而且依赖问题几乎可以忽略不计(一些特殊环境除外)。 所从这个角度出发,我大部分的代码都会优选Shell,当shell无法完成时我才会借助第三方语言来辅助,比如:PHP、Python等
爱技术的小黄鸭
2023/06/15
1.8K2
我是怎样用Shell脚本完成钉钉机器人消息推送的
构建企业级监控平台系列(二十):Prometheus Alertmanager 配置实现钉钉告警
前面介绍了 Prometheus Server配置、Operator、Exporter 、Node Exporter、标签 label、PromQL、AlertManager等相关的知识点,今天我将详细的为大家介绍Prometheus Alertmanager 配置实现钉钉告警相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发朋友圈支持一波!!!
民工哥
2023/10/27
6620
构建企业级监控平台系列(二十):Prometheus Alertmanager 配置实现钉钉告警
推荐阅读
相关推荐
钉钉常用的消息类型与数据格式总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验