python统计mysql数据量变化并调用接口告警的示例代码
作者:数据库干货铺 发布时间:2024-01-22 22:15:13
标签:python,统计,MySQL,数据变化,接口
统计每天的数据量变化,数据量变动超过一定范围时,进行告警。告警通过把对应的参数传递至相应接口。
python程序如下
#!/usr/bin/python
# coding=utf-8
import pymysql as mdb
import os
import sys
import requests
import json
tar_conn = mdb.connect(host='192.168.56.128',port=3306,user='xxx',passwd='xxx123',db='bak_db')
tar_cur = tar_conn.cursor()
v_sql_dt =" SELECT DATE_FORMAT(CURRENT_DATE(),'%Y-%m-%d')t1 ,DATE_FORMAT(SUBDATE(CURRENT_DATE(),INTERVAL 1 DAY),'%Y-%m-%d')t2,DATE_FORMAT(SUBDATE(CURRENT_DATE(),INTERVAL 1 WEEK),'%Y-%m-%d')t3,DATE_FORMAT(SUBDATE(CURRENT_DATE(),INTERVAL 1 MONTH),'%Y-%m-%d %H:%i:00')t4"
v_extract_rows=tar_cur.execute(v_sql_dt)
v_res=tar_cur.fetchone()
v_dt1=v_res[0]
v_dt2=v_res[1]
v_dt3=v_res[2]
v_dt4=v_res[3]
print v_dt1,v_dt2,v_dt3,v_dt4
#v_start_time='2020-09-10'
#v_end_time='2020-09-11'
def get_cnt(v_dt):
v_sql1="select tb_rows from bak_db.tb_size where dt='%s';"%(v_dt)
v_extract_rows=tar_cur.execute(v_sql1)
v_res=tar_cur.fetchone()
v_cnt1=v_res[0]
return(v_cnt1)
(v_cnt_now)=get_cnt(v_dt1)
(v_cnt_1d)=get_cnt(v_dt2)
(v_cnt_1w)=get_cnt(v_dt3)
(v_cnt_1m)=get_cnt(v_dt4)
def f_notify(v_cnt_now,v_cnt_before,v_message):
v_rate1=abs(((v_cnt_before-v_cnt_now)*1.00/v_cnt_before*1.00)*100)
# print v_rate1,v_rate2
if (v_rate1>100 ) and (v_cnt_now>500 or v_cnt_before>500) :
v_level=1
v_list=[v_message,',','当前量:',str(v_cnt_now),',','前期量:',str(v_cnt_before)]
v_message1=''.join(v_list)
print v_message1
url = 'http://192.168.56.128:9000/api/v1/alarm' # 接口地址
body ={"level": v_level, "group": ["dba"], "msg": {"content": v_message1}}
headers = {'content-type': "application/json"} # 如有认证信息,添加认证信息即可,例如'Authorization': 'APP appid = xxx,token = xxxxxxxxxxxxxxxx'
response = requests.post(url, data = json.dumps(body), headers = headers) # body是json格式的,用 json.dumps(body)方式进行处理
print response.text
print response.status_code
f_notify(v_cnt_now,v_cnt_1d,'数据量与前一天相比波动超过100%')
f_notify(v_cnt_now,v_cnt_1w,'数据量与前一周相比波动超过100%')
f_notify(v_cnt_now,v_cnt_1m,'数据量与前一月相比波动超过100%')
tar_conn.close()
来源:https://www.cnblogs.com/gjc592/p/13673429.html


猜你喜欢
- 情况一:列表中的数字是连续数字(从小到大)from itertools import groupbylst = [1, 2, 3, 5, 6
- 有一台windows服务器上跑着mysql的一些应用,现在需要将mysql的数据每天备份,并通过ftp上传到指定的存储服务器上要是在linu
- 在JavaScript中四种基本的数据类型:数值(整数和实数)、字符串型(用“”号或‘'括起来的字符或数值)、布尔型(使True或F
- 接触Python时间也不是很长的,最近有个项目需要分析数据,于是选用Python为编程语言,除了语言特性外主要还是看重Python对于SQL
- 效果展示效果展示素材展示一个为视频,另一个为像素大小不小于视频的封面。实现过程调用已启用的浏览器通过调用已启用的浏览器,可以实现直接跳过每次
- pycharm 不显示代码提示1、检查IDE省电模式是否关闭状态!!!file → power save mode 取消掉2、检查代码提示是
- 日常运维工作中,通常是邮件报警机制,但邮件可能不被及时查看,导致问题出现得不到及时有效处理。所以想到用Python实现发短信功能,当监控到问
- 刚才帮一位朋友做跳转的时候做的,为了获取完整的url地址,还是花了那么点时间不过现在看来,原来是那么简单,没有网上那么多复杂的东东,相信一定
- Django2.0 通过URL访问上传的文件(pdf、picture等)Django是一个成熟的web框架,基于python实现,有很多的优
- 只想回答一个问题: 当编译器要读取obj.field时, 发生了什么?看似简单的属性访问, 其过程还蛮曲折的. 总共有以下几个step: 1
- pandas 将字符串映射为数字在有些数据集中,有些数据变量用字符串表示,但为了方便处理,往往想转换为好处理的格式,这时候不一定要用one
- 我们都知道在9i之前,要想获得建表和索引的语句是一件很麻烦的事。我们通常的做法都是通过export with rows=no来得到,但它的输
- 1.游标方式 代码如下:DECLARE @Data NVARCHAR(max) SET @Data='1,tanw,2,
- * test11.pyimport timeprint "1"time.sleep(2)print "1&qu
- 1 中国结的组成部分中国结是一种手工编织工艺品,它身上所显示的情致与智慧正是汉族古老文明中的一个侧面。因为其外观对称精致,可以代表汉族悠久的
- 分享一个用正则表达式校验电话号码、身份证号、日期格式、URL、Email等等格式的工具类package com.eabax.util;imp
- bool是Boolean的缩写,只有真(True)和假(False)两种取值bool函数只有一个参数,并根据这个参数的值返回真或者假。1.当
- <pre name="code" class="python">creazy.txt文件
- 在上一期中作者向诸位简要介绍了 ASP 脚本语言之一 VBScript 的一些基本常识,本期将继续给大家讲解 VBScript 的脚本编写方
- 一、下载1.mysql官网下载地址:https://downloads.mysql.com/archives/community/2.下载完