コード例 #1
0
ファイル: AlipayBizAo.java プロジェクト: kevx/csp
 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;
 }
コード例 #2
0
ファイル: AlipayBizAo.java プロジェクト: kevx/csp
  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);
    }
  }