This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
galaxy-tsg-olap-app-protoco…/src/main/java/com/zdjizhi/utils/general/MetricUtil.java
2023-12-25 10:04:55 +08:00

88 lines
3.7 KiB
Java

package com.zdjizhi.utils.general;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import com.zdjizhi.common.pojo.Fields;
/**
* @author qidaijie
* @Package com.zdjizhi.storm.utils.general
* @Description:
* @date 2021/7/2015:31
*/
public class MetricUtil {
private static final Log logger = LogFactory.get();
/**
* 用于对业务指标进行统计
*
* @param cacheData 缓存中数据
* @param newData 新数据
*/
public static Fields statisticsMetrics(Fields cacheData, Fields newData) {
long sessions = MetricUtil.longSum(cacheData.getSessions(), newData.getSessions());
long inBytes = MetricUtil.longSum(cacheData.getIn_bytes(), newData.getIn_bytes());
long outBytes = MetricUtil.longSum(cacheData.getOut_bytes(), newData.getOut_bytes());
long inPkts = MetricUtil.longSum(cacheData.getIn_pkts(), newData.getIn_pkts());
long outPkts = MetricUtil.longSum(cacheData.getOut_pkts(), newData.getOut_pkts());
long c2sBytes = MetricUtil.longSum(cacheData.getC2s_bytes(), newData.getC2s_bytes());
long s2cBytes = MetricUtil.longSum(cacheData.getS2c_bytes(), newData.getS2c_bytes());
long c2sPkts = MetricUtil.longSum(cacheData.getC2s_pkts(), newData.getC2s_pkts());
long s2cPkts = MetricUtil.longSum(cacheData.getS2c_pkts(), newData.getS2c_pkts());
long c2sFragments = MetricUtil.longSum(cacheData.getC2s_fragments(), newData.getC2s_fragments());
long s2cFragments = MetricUtil.longSum(cacheData.getS2c_fragments(), newData.getS2c_fragments());
long c2sTcpLostBytes = MetricUtil.longSum(cacheData.getC2s_tcp_lost_bytes(), newData.getC2s_tcp_lost_bytes());
long s2cTcpLostBytes = MetricUtil.longSum(cacheData.getS2c_tcp_lost_bytes(), newData.getS2c_tcp_lost_bytes());
long c2sTcpooorderPkts = MetricUtil.longSum(cacheData.getC2s_tcp_ooorder_pkts(), newData.getC2s_tcp_ooorder_pkts());
long s2cTcpooorderPkts = MetricUtil.longSum(cacheData.getS2c_tcp_ooorder_pkts(), newData.getS2c_tcp_ooorder_pkts());
long c2sTcpretransmittedPkts = MetricUtil.longSum(cacheData.getC2s_tcp_retransmitted_pkts(), newData.getC2s_tcp_retransmitted_pkts());
long s2cTcpretransmittedPkts = MetricUtil.longSum(cacheData.getS2c_tcp_retransmitted_pkts(), newData.getS2c_tcp_retransmitted_pkts());
long c2sTcpretransmittedBytes = MetricUtil.longSum(cacheData.getC2s_tcp_retransmitted_bytes(), newData.getC2s_tcp_retransmitted_bytes());
long s2cTcpretransmittedBytes = MetricUtil.longSum(cacheData.getS2c_tcp_retransmitted_bytes(), newData.getS2c_tcp_retransmitted_bytes());
return new Fields(sessions,
inBytes, outBytes, inPkts, outPkts,
c2sPkts, s2cPkts, c2sBytes, s2cBytes,
c2sFragments, s2cFragments,
c2sTcpLostBytes, s2cTcpLostBytes,
c2sTcpooorderPkts, s2cTcpooorderPkts,
c2sTcpretransmittedPkts, s2cTcpretransmittedPkts,
c2sTcpretransmittedBytes, s2cTcpretransmittedBytes);
}
/**
* Long类型的数据求和
*
* @param cacheData 缓存中的值
* @param newData 新来数据的值
* @return cacheData + newData
*/
private static long longSum(long cacheData, long newData) {
long result;
try {
if (cacheData >= 0 && newData >= 0) {
result = cacheData + newData;
} else {
result = cacheData;
}
} catch (RuntimeException e) {
logger.error("Abnormal sending of traffic indicator statistics! The message is:{}", e);
result = cacheData;
}
return result;
}
}