推送监控消息到钉钉群

需求

实现的需求很简单,就是需要定期发送一个监控信息到钉钉群里面,避免需要人工登录机器查询信息,需要监控的机器本身无法上网,通过一台能上网的windows机器做中转

架构

1、被监控机器定期获取数据,并开启http服务
2、windows机器通过http请求定期获取被监控机器的数据
3、windows机器把消息发送出去

实现

机器提供数据

开启http服务

1
python -m http.server 4444

获取监控数据

1
2
3
4
5
6
7
8
9
#! /bin/sh
#一分钟取一次 前端自定义获取时间

for a in `seq 2000`
do
date > ceph.info
ceph -s >> ceph.info
sleep 180
done

通过http://ip:4444/ceph.info获取数据

推送的python脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# /srr/bin/python
# -*- coding:utf-8 -*-

import requests
import json
import time

while True:

url="http://myip:4444/ceph.info"
r = requests.get(url)
reslist=r.text
print(reslist)
r.close()
url = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxx
headers = {'Content-Type': 'application/json'}


data = { 'msgtype': 'text', 'text': { 'content': '状态(30分钟发送一次):%s' %(reslist) } }
response = requests.post(url, headers=headers, json=data)

print(response.json())
response.close()
time.sleep(1800)
## 获取并推送数据

上面的注意关闭下链接,否则在超过1小时的监控周期的时候,连接会中断,也可以在里面加入重试的操作

上面的操作之后,就可以实现消息到钉钉群的功能了