use of org.apache.ignite.spi.metric.Metric in project ignite by apache.
the class GridMetricManager method remove.
/**
* Removes metric registry.
*
* @param regName Metric registry name.
* @param removeCfg {@code True} if remove metric configurations.
*/
public void remove(String regName, boolean removeCfg) {
GridCompoundFuture opsFut = new GridCompoundFuture<>();
registries.computeIfPresent(regName, (key, mreg) -> {
notifyListeners(mreg, metricRegRemoveLsnrs, log);
if (!removeCfg)
return null;
DistributedMetaStorage metastorage0 = metastorage;
if (metastorage0 == null)
return null;
try {
for (Metric m : mreg) {
if (m instanceof HitRateMetric)
opsFut.add(metastorage0.removeAsync(metricName(HITRATE_CFG_PREFIX, m.name())));
else if (m instanceof HistogramMetric)
opsFut.add(metastorage0.removeAsync(metricName(HISTOGRAM_CFG_PREFIX, m.name())));
}
} catch (IgniteCheckedException e) {
throw new IgniteException(e);
}
return null;
});
try {
opsFut.markInitialized();
opsFut.get();
} catch (NodeStoppingException ignored) {
// No-op.
} catch (IgniteCheckedException e) {
log.error("Failed to remove metrics configuration.", e);
}
}
use of org.apache.ignite.spi.metric.Metric in project ignite by apache.
the class IoStatisticsCacheSelfTest method deriveStatisticNames.
/**
* Extract all tracked names for given statistics type.
*
* @param statType Type of statistics which tracked names need to extract.
* @return Set of present names for given statType
*/
public Set<String> deriveStatisticNames(IoStatisticsType statType) {
assert statType != null;
GridMetricManager mmgr = ignite.context().metric();
Stream<ReadOnlyMetricRegistry> grpsStream = StreamSupport.stream(mmgr.spliterator(), false).filter(grp -> grp.name().startsWith(statType.metricGroupName()));
return grpsStream.flatMap(grp -> StreamSupport.stream(grp.spliterator(), false)).filter(m -> m.name().endsWith("name")).map(Metric::getAsString).collect(Collectors.toSet());
}
use of org.apache.ignite.spi.metric.Metric in project ignite by apache.
the class TcpCommunicationMetricsListener method collectMessagesCountByType.
/**
* Collect messages count by type
*/
protected Map<String, Long> collectMessagesCountByType(String prefix) {
Map<String, Long> res = new HashMap<>();
prefix = metricName(COMMUNICATION_METRICS_GROUP_NAME, prefix);
for (Metric metric : mreg) {
if (metric.name().startsWith(prefix)) {
short directType = Short.parseShort(metric.name().substring(prefix.length()));
Map<Short, String> msgTypeMap0 = msgTypeMap;
if (msgTypeMap0 != null) {
String typeName = msgTypeMap0.get(directType);
if (typeName != null)
res.put(typeName, ((LongMetric) metric).value());
}
}
}
return res;
}
use of org.apache.ignite.spi.metric.Metric in project ignite by apache.
the class MetricRegistryMBean method searchHistogram.
/**
* Parse attribute name for a histogram and search it's value.
*
* @param name Attribute name.
* @param mreg Metric registry to search histogram in.
* @return Specific bucket value or {@code null} if not found.
* @see MetricUtils#histogramBucketNames(HistogramMetric)
*/
public static Long searchHistogram(String name, ReadOnlyMetricRegistry mreg) {
int highBoundIdx;
boolean isInf = name.endsWith(INF);
if (isInf)
highBoundIdx = name.length() - 4;
else {
highBoundIdx = name.lastIndexOf(HISTOGRAM_NAME_DIVIDER);
if (highBoundIdx == -1)
return null;
}
int lowBoundIdx = name.lastIndexOf(HISTOGRAM_NAME_DIVIDER, highBoundIdx - 1);
if (lowBoundIdx == -1)
return null;
Metric m = mreg.findMetric(name.substring(0, lowBoundIdx));
if (!(m instanceof HistogramMetric))
return null;
HistogramMetric h = (HistogramMetric) m;
long[] bounds = h.bounds();
long[] values = h.value();
long lowBound;
try {
lowBound = Long.parseLong(name.substring(lowBoundIdx + 1, highBoundIdx));
} catch (NumberFormatException e) {
return null;
}
if (isInf) {
if (bounds[bounds.length - 1] == lowBound)
return values[values.length - 1];
return null;
}
long highBound;
try {
highBound = Long.parseLong(name.substring(highBoundIdx + 1));
} catch (NumberFormatException e) {
return null;
}
int idx = binarySearch(bounds, highBound);
if (idx < 0)
return null;
if ((idx == 0 && lowBound != 0) || (idx != 0 && bounds[idx - 1] != lowBound))
return null;
return values[idx];
}
use of org.apache.ignite.spi.metric.Metric in project ignite by apache.
the class GridCacheAbstractMetricsSelfTest method testPutTime.
/**
*/
@Test
public void testPutTime() throws Exception {
IgniteCache<Integer, Integer> cache = grid(0).cache(DEFAULT_CACHE_NAME);
HistogramMetricImpl putTime = metric("PutTime");
HistogramMetricImpl putAllTime = metric("PutAllTime");
assertTrue(stream(putTime.value()).allMatch(v -> v == 0));
assertTrue(stream(putAllTime.value()).allMatch(v -> v == 0));
cache.put(1, 1);
cache.putAsync(2, 2).get();
assertTrue(waitForCondition(() -> stream(putTime.value()).sum() == 2, getTestTimeout()));
assertEquals(0, stream(putAllTime.value()).sum());
cache.putAll(F.asMap(3, 3));
cache.putAllAsync(F.asMap(4, 4)).get();
assertTrue(waitForCondition(() -> stream(putAllTime.value()).sum() == 2, getTestTimeout()));
assertEquals(2, stream(putTime.value()).sum());
}
Aggregations