from qcloudsms_py import SmsMultiSender from qcloudsms_py.httpclient import HTTPError from tools.sms_config import appid, appkey, phone_numbers sms_type = 0 # Enum{0: 普通短信, 1: 营销短信} msender = SmsMultiSender(appid, appkey) try: result = msender.send(sms_type, "86", phone_numbers, "【腾讯云】您的验证码是: 5678", extend="", ext="") except HTTPError as e: print(e) except Exception as e: print(e) print(result)
def AlertHandler(): body = request.get_data() logger.debug(body) try: v = json.loads(body) except Exception as err: logger.warn("json decode error, err=%s, body=%s" % (err, body)) return '{"code":1,"msg":"json decode error"}' else: if "state" in v and v["state"] == "alerting": if "evalMatches" in v: value_str = "" for i in range(len(v["evalMatches"])): if "value" not in v["evalMatches"][i]: continue value = v["evalMatches"][i]["value"] if value < 0: # value如果小于0表明数据回退了,这里忽略告警 return '{"code":0,"msg":"ok"}' if "tags" not in v["evalMatches"][i]: if value_str == "": value_str += "当前值%d已超出" % value else: value_str += ",当前值%d已超出" % value else: tags = v["evalMatches"][i]["tags"] if "host" in tags: host = tags["host"] if value_str == "": value_str += "%s当前值%d已超出" % (host, value) else: value_str += ",%s当前值%d已超出" % (host, value) else: if value_str == "": value_str += "当前值%d已超出" % value else: value_str += ",当前值%d已超出" % value rule_name = "" if "ruleName" in v: rule_name = v["ruleName"] else: return '{"code":2,"msg":"missing ruleName"}' alert_str = "%s,%s" % (rule_name, value_str) time_str = " [" + time.strftime('%m-%d %H:%M', time.localtime(time.time())) + "]" msg = alert_str + time_str logger.warn(msg) # message目前保存的是负责人,多个负责人用;分隔 message = "" if "message" in v: message = v["message"] managers = message.split(";") phone_nums = [] for i in range(len(managers)): person = managers[i] if person in GlobalConfig.sms_phone_nums: phone_num = GlobalConfig.sms_phone_nums[person] phone_nums.append(phone_num) if GlobalConfig.sms_send == True and len(phone_nums) > 0: msender = SmsMultiSender(GlobalConfig.sms_appid, GlobalConfig.sms_appkey) try: result = msender.send(0, "86", phone_nums, msg) except HTTPError as e: logger.warn("msender err=%s" % e) except Exception as e: logger.warn("msender err=" % e) return '{"code":0,"msg":"ok"}'