Search in sources :

Example 26 with MetricEntity

use of com.alibaba.csp.sentinel.dashboard.datasource.entity.MetricEntity in project XHuiCloud by sindaZeng.

the class InMemoryMetricsRepository method listResourcesOfApp.

@Override
public List<String> listResourcesOfApp(String app) {
    List<String> results = new ArrayList<>();
    if (StringUtil.isBlank(app)) {
        return results;
    }
    // resource -> timestamp -> metric
    Map<String, ConcurrentLinkedHashMap<Long, MetricEntity>> resourceMap = allMetrics.get(app);
    if (resourceMap == null) {
        return results;
    }
    final long minTimeMs = System.currentTimeMillis() - 1000 * 60;
    Map<String, MetricEntity> resourceCount = new ConcurrentHashMap<>(32);
    for (Entry<String, ConcurrentLinkedHashMap<Long, MetricEntity>> resourceMetrics : resourceMap.entrySet()) {
        for (Entry<Long, MetricEntity> metrics : resourceMetrics.getValue().entrySet()) {
            if (metrics.getKey() < minTimeMs) {
                continue;
            }
            MetricEntity newEntity = metrics.getValue();
            if (resourceCount.containsKey(resourceMetrics.getKey())) {
                MetricEntity oldEntity = resourceCount.get(resourceMetrics.getKey());
                oldEntity.addPassQps(newEntity.getPassQps());
                oldEntity.addRtAndSuccessQps(newEntity.getRt(), newEntity.getSuccessQps());
                oldEntity.addBlockQps(newEntity.getBlockQps());
                oldEntity.addExceptionQps(newEntity.getExceptionQps());
                oldEntity.addCount(1);
            } else {
                resourceCount.put(resourceMetrics.getKey(), MetricEntity.copyOf(newEntity));
            }
        }
    }
    // Order by last minute b_qps DESC.
    return resourceCount.entrySet().stream().sorted((o1, o2) -> {
        MetricEntity e1 = o1.getValue();
        MetricEntity e2 = o2.getValue();
        int t = e2.getBlockQps().compareTo(e1.getBlockQps());
        if (t != 0) {
            return t;
        }
        return e2.getPassQps().compareTo(e1.getPassQps());
    }).map(Entry::getKey).collect(Collectors.toList());
}
Also used : MetricEntity(com.alibaba.csp.sentinel.dashboard.datasource.entity.MetricEntity) ArrayList(java.util.ArrayList) ConcurrentLinkedHashMap(com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap)

Example 27 with MetricEntity

use of com.alibaba.csp.sentinel.dashboard.datasource.entity.MetricEntity in project RuoYi-Cloud-Plus by JavaLionLi.

the class InMemoryMetricsRepository method listResourcesOfApp.

@Override
public List<String> listResourcesOfApp(String app) {
    List<String> results = new ArrayList<>();
    if (StringUtil.isBlank(app)) {
        return results;
    }
    // resource -> timestamp -> metric
    Map<String, LinkedHashMap<Long, MetricEntity>> resourceMap = allMetrics.get(app);
    if (resourceMap == null) {
        return results;
    }
    final long minTimeMs = System.currentTimeMillis() - 1000 * 60;
    Map<String, MetricEntity> resourceCount = new ConcurrentHashMap<>(32);
    readWriteLock.readLock().lock();
    try {
        for (Entry<String, LinkedHashMap<Long, MetricEntity>> resourceMetrics : resourceMap.entrySet()) {
            for (Entry<Long, MetricEntity> metrics : resourceMetrics.getValue().entrySet()) {
                if (metrics.getKey() < minTimeMs) {
                    continue;
                }
                MetricEntity newEntity = metrics.getValue();
                if (resourceCount.containsKey(resourceMetrics.getKey())) {
                    MetricEntity oldEntity = resourceCount.get(resourceMetrics.getKey());
                    oldEntity.addPassQps(newEntity.getPassQps());
                    oldEntity.addRtAndSuccessQps(newEntity.getRt(), newEntity.getSuccessQps());
                    oldEntity.addBlockQps(newEntity.getBlockQps());
                    oldEntity.addExceptionQps(newEntity.getExceptionQps());
                    oldEntity.addCount(1);
                } else {
                    resourceCount.put(resourceMetrics.getKey(), MetricEntity.copyOf(newEntity));
                }
            }
        }
        // Order by last minute b_qps DESC.
        return resourceCount.entrySet().stream().sorted((o1, o2) -> {
            MetricEntity e1 = o1.getValue();
            MetricEntity e2 = o2.getValue();
            int t = e2.getBlockQps().compareTo(e1.getBlockQps());
            if (t != 0) {
                return t;
            }
            return e2.getPassQps().compareTo(e1.getPassQps());
        }).map(Entry::getKey).collect(Collectors.toList());
    } finally {
        readWriteLock.readLock().unlock();
    }
}
Also used : MetricEntity(com.alibaba.csp.sentinel.dashboard.datasource.entity.MetricEntity) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap)

Example 28 with MetricEntity

use of com.alibaba.csp.sentinel.dashboard.datasource.entity.MetricEntity in project RuoYi-Cloud-Plus by JavaLionLi.

the class MetricFetcher method writeMetric.

private void writeMetric(Map<String, MetricEntity> map) {
    if (map.isEmpty()) {
        return;
    }
    Date date = new Date();
    for (MetricEntity entity : map.values()) {
        entity.setGmtCreate(date);
        entity.setGmtModified(date);
    }
    metricStore.saveAll(map.values());
}
Also used : MetricEntity(com.alibaba.csp.sentinel.dashboard.datasource.entity.MetricEntity) Date(java.util.Date)

Aggregations

MetricEntity (com.alibaba.csp.sentinel.dashboard.datasource.entity.MetricEntity)28 Date (java.util.Date)18 ConnectException (java.net.ConnectException)10 SocketTimeoutException (java.net.SocketTimeoutException)10 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)10 ArrayList (java.util.ArrayList)7 Test (org.junit.Test)6 AppInfo (com.alibaba.csp.sentinel.dashboard.discovery.AppInfo)5 MachineInfo (com.alibaba.csp.sentinel.dashboard.discovery.MachineInfo)5 MetricNode (com.alibaba.csp.sentinel.node.metric.MetricNode)5 CountDownLatch (java.util.concurrent.CountDownLatch)5 AtomicLong (java.util.concurrent.atomic.AtomicLong)5 HttpResponse (org.apache.http.HttpResponse)5 HttpGet (org.apache.http.client.methods.HttpGet)5 LinkedHashMap (java.util.LinkedHashMap)4 ConcurrentLinkedHashMap (com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap)1