123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import json
- from MyUtils.ZillionUtil import ZillionUtil
- from MyUtils.Dingtalk import send_message
- import datetime
- import time
- # 获取operate_time
- def select(hbase_database, buildingid):
- Criteria = {
- "object_sign": buildingid,
- "instance_name": "fjd_0_Acc_Inst_EnumV"
- }
- data = zillionUtil.select(hbase_database, "ci_status", Criteria)
- if data:
- operate_time = data[0]["operate_time"]
- return operate_time
- def datetimenow():
- # 当前时间
- datetimenow = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
- datetimenow = datetime.datetime.strptime(datetimenow, "%Y-%m-%d %H:%M:%S")
- return datetimenow
- #容器里python获取时间少8小时
- # tz = pytz.timezone('Asia/Shanghai') #东八区
- # datetimenow = datetime.datetime.fromtimestamp(int(time.time()),
- # pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S')
- # 读取配置文件信息
- with open("config.json", "r") as f:
- data = json.load(f)
- hbase_database = data["metadata"]["database"]
- url = data["metadata"]["url"]
- buildingid = data["building"]["id"]
- dingding = data["building"]["dingding"]
- #报警未恢复之前不再报警
- alarms = {}
- while True:
- try:
- # #连接hbase
- zillionUtil = ZillionUtil(url)
- operate_time = select(hbase_database,buildingid)
- if operate_time:
- operate_time = datetime.datetime.strptime(operate_time,"%Y%m%d%H%M%S")
- if datetimenow() > operate_time:
- value = (datetimenow() - operate_time).seconds
- print(datetimenow(),operate_time,value)
- if int(value) > 7200:
- if not alarms:
- message = "【之江实验室】项目超过2小时未计算, 最新的计算操作时间: %s"%operate_time
- print(message)
- send_message(message,dingding)
- alarms[datetimenow()]=message
- else:
- print("%s,已经产生报警,报警还未恢复"%datetimenow())
- else:
- alarms.clear()
- print("%s,OK"%datetimenow())
- else:
- alarms.clear()
- print(datetimenow(), operate_time, "............")
- print("%s,OK" % datetimenow())
- else:
- if not alarms:
- message = "【之江实验室】计算里没有查到%s的id"%buildingid
- print(message)
- send_message(message, dingding)
- alarms[datetimenow()] = message
- else:
- print("%s,已经产生报警,报警还未恢复" % datetimenow())
- except Exception as e:
- print(e)
- time.sleep(300)
|