public boolean compareIfNear(AlipayBizPo taobao, AlipayBizPo alipay) { if (taobao == null || alipay == null) { return true; } logger.warn("compareIfNear taobao=" + taobao + ",alipay=" + alipay); // 是否其中至少一项的请求总量与接收到的总量相差10%以上 if (BigDecimal.valueOf(Math.abs(taobao.getCreateTotal() - alipay.getCreateTotal())) .divide(BigDecimal.valueOf(alipay.getCreateTotal()), 0, BigDecimal.ROUND_HALF_UP) .floatValue() > 0.1f) { return false; } return true; }
public void checkAlipay(Date start, Date end) { try { Map<Date, AlipayBizPo> alipayMap = getAlipayBizPoByTime(start, end); if (alipayMap == null) { return; } Map<Date, AlipayBizPo> taobaoMap = new HashMap<Date, AlipayBizPo>(); String appName = "tradeplatform"; String key = "tp交易相关总量`P1-trade_create"; // 获取csp监控的数据 Map<String, Map<String, Object>> cspQuerymap = QueryUtil.querySingleRealTime(appName, key); for (Map.Entry<String, Map<String, Object>> entry : cspQuerymap.entrySet()) { if (entry.getValue() == null) { continue; } AlipayBizPo po = new AlipayBizPo(); Map<String, Object> tMap = entry.getValue(); po.setCreateSuccess((Integer) tMap.get("success")); po.setCreateTotal((Integer) tMap.get("total")); taobaoMap.put(new Date(Long.parseLong(entry.getKey())), po); } List<CspTimeKeyAlarmRecordPo> list = new ArrayList<CspTimeKeyAlarmRecordPo>(); for (Map.Entry<Date, AlipayBizPo> entry : alipayMap.entrySet()) { Date alipayTime = entry.getKey(); Date theMostNearTaobaoTime = TimeUtil.getTheMostNearTime(alipayTime, taobaoMap.keySet()); AlipayBizPo taobaoData = taobaoMap.get(theMostNearTaobaoTime); if (taobaoData == null) continue; if (!compareIfNear(taobaoData, entry.getValue())) { // /插入一条TP的告警记录 CspTimeKeyAlarmRecordPo po = new CspTimeKeyAlarmRecordPo(); po.setMode_name("阀值"); po.setKey_scope("APP"); po.setApp_name("tradeplatform"); po.setKey_name("到支付宝的请求量对比"); po.setProperty_name("count"); po.setAlarm_cause("到支付宝的请求量与接收量不匹配"); po.setAlarm_time(new Timestamp(alipayTime.getTime())); po.setAlarm_value( "t=" + taobaoData.getCreateTotal() + ",a=" + entry.getValue().getCreateTotal()); po.setIp("172.24.168.111"); // 随意写的一台tp机器的ip list.add(po); } } if (CollectionUtil.isNotEmpty(list)) { CspTimeKeyAlarmRecordAo.get().insert(list); } } catch (Exception e) { logger.warn("checkAlipay exception,start=" + start + ",end=" + end, e); } }