Search in sources :

Example 6 with Metric

use of org.apache.ignite.spi.metric.Metric in project ignite by apache.

the class GridCacheAbstractMetricsSelfTest method testRemoveTime.

/**
 */
@Test
public void testRemoveTime() throws Exception {
    IgniteCache<Integer, Integer> cache = grid(0).cache(DEFAULT_CACHE_NAME);
    HistogramMetricImpl removeTime = metric("RemoveTime");
    HistogramMetricImpl removeAllTime = metric("RemoveAllTime");
    assertTrue(stream(removeTime.value()).allMatch(v -> v == 0));
    assertTrue(stream(removeAllTime.value()).allMatch(v -> v == 0));
    cache.put(1, 1);
    cache.put(2, 2);
    assertEquals(0, stream(removeTime.value()).sum());
    assertEquals(0, stream(removeAllTime.value()).sum());
    cache.remove(1);
    cache.removeAsync(2).get();
    assertTrue(waitForCondition(() -> stream(removeTime.value()).sum() == 2, getTestTimeout()));
    assertEquals(0, stream(removeAllTime.value()).sum());
    cache.removeAll(singleton(3));
    cache.removeAllAsync(singleton(4)).get();
    assertTrue(waitForCondition(() -> stream(removeAllTime.value()).sum() == 2, getTestTimeout()));
    assertEquals(2, stream(removeTime.value()).sum());
}
Also used : CacheAtomicityMode(org.apache.ignite.cache.CacheAtomicityMode) GridAbsPredicateX(org.apache.ignite.internal.util.lang.GridAbsPredicateX) TouchedExpiryPolicy(javax.cache.expiry.TouchedExpiryPolicy) Metric(org.apache.ignite.spi.metric.Metric) EntryProcessorResult(javax.cache.processor.EntryProcessorResult) Transaction(org.apache.ignite.transactions.Transaction) GridTestUtils.waitForCondition(org.apache.ignite.testframework.GridTestUtils.waitForCondition) U(org.apache.ignite.internal.util.typedef.internal.U) HashMap(java.util.HashMap) IgniteEx(org.apache.ignite.internal.IgniteEx) EntryProcessorException(javax.cache.processor.EntryProcessorException) TreeSet(java.util.TreeSet) MutableEntry(javax.cache.processor.MutableEntry) MetricUtils.cacheMetricsRegistryName(org.apache.ignite.internal.processors.metric.impl.MetricUtils.cacheMetricsRegistryName) Collections.singleton(java.util.Collections.singleton) Map(java.util.Map) Duration(javax.cache.expiry.Duration) LinkedHashSet(java.util.LinkedHashSet) IgniteKernal(org.apache.ignite.internal.IgniteKernal) F(org.apache.ignite.internal.util.typedef.F) IgniteFuture(org.apache.ignite.lang.IgniteFuture) ExpiryPolicy(javax.cache.expiry.ExpiryPolicy) CachePeekMode(org.apache.ignite.cache.CachePeekMode) ImmutableMap(com.google.common.collect.ImmutableMap) IgniteCheckedException(org.apache.ignite.IgniteCheckedException) Set(java.util.Set) Test(org.junit.Test) Ignite(org.apache.ignite.Ignite) MILLISECONDS(java.util.concurrent.TimeUnit.MILLISECONDS) MetricRegistry(org.apache.ignite.internal.processors.metric.MetricRegistry) IgniteCache(org.apache.ignite.IgniteCache) TimeUnit(java.util.concurrent.TimeUnit) IgniteConfiguration(org.apache.ignite.configuration.IgniteConfiguration) HistogramMetricImpl(org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl) CacheEntryProcessor(org.apache.ignite.cache.CacheEntryProcessor) CacheConfiguration(org.apache.ignite.configuration.CacheConfiguration) CacheMetrics(org.apache.ignite.cache.CacheMetrics) LongMetric(org.apache.ignite.spi.metric.LongMetric) Arrays.stream(java.util.Arrays.stream) CacheMode(org.apache.ignite.cache.CacheMode) HistogramMetricImpl(org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl) Test(org.junit.Test)

Example 7 with Metric

use of org.apache.ignite.spi.metric.Metric in project ignite by apache.

the class GridServiceMetricsTest method testServiceMetrics.

/**
 * Invokes service in various ways: from clients, servers, etc. Checks these calls reflect in the metrics.
 *
 * @param serverCnt Number of server nodes.
 * @param clientCnt Number of client nodes.
 * @param perClusterCnt Number of service instances per cluster.
 * @param perNodeCnt Number of service instances per node.
 */
private void testServiceMetrics(int serverCnt, int clientCnt, int perClusterCnt, int perNodeCnt) throws Throwable {
    List<IgniteEx> servers = startGrids(serverCnt, false);
    List<IgniteEx> clients = startGrids(clientCnt, true);
    servers.get(0).services().deploy(serviceCfg(MyServiceFactory.create(), perClusterCnt, perNodeCnt));
    awaitPartitionMapExchange();
    List<MyService> serverStickyProxies = servers.stream().map(ignite -> (MyService) ignite.services().serviceProxy(SRVC_NAME, MyService.class, true)).collect(Collectors.toList());
    List<MyService> clientStickyProxies = clients.stream().map(ignite -> (MyService) ignite.services().serviceProxy(SRVC_NAME, MyService.class, true)).collect(Collectors.toList());
    long invokeCollector = 0;
    // Call service through the server proxies.
    for (int i = 0; i < INVOKE_CNT; ++i) {
        // Call from server.
        IgniteEx ignite = servers.get(i % servers.size());
        callService4Times(ignite, serverStickyProxies.get(i % serverStickyProxies.size()));
        // Call from client.
        ignite = clients.get(i % clients.size());
        callService4Times(ignite, clientStickyProxies.get(i % clientStickyProxies.size()));
        invokeCollector += 8;
    }
    long invokesInMetrics = 0;
    // Calculate and check invocations within the metrics.
    for (IgniteEx ignite : servers) {
        ReadOnlyMetricRegistry metrics = findMetricRegistry(ignite.context().metric(), SRVC_NAME);
        // Metrics may not be deployed on this server node.
        if (metrics == null)
            continue;
        for (Metric metric : metrics) {
            if (metric instanceof HistogramMetric)
                invokesInMetrics += sumHistogramEntries((HistogramMetric) metric);
        }
    }
    // Compare calls number and metrics number.
    assertEquals("Calculated wrong service invocation number.", invokesInMetrics, invokeCollector);
}
Also used : G(org.apache.ignite.internal.util.typedef.G) Arrays(java.util.Arrays) Iterables(com.google.common.collect.Iterables) HistogramMetric(org.apache.ignite.spi.metric.HistogramMetric) JmxMetricExporterSpi(org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) Metric(org.apache.ignite.spi.metric.Metric) IgniteEx(org.apache.ignite.internal.IgniteEx) Test(org.junit.Test) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) ReadOnlyMetricRegistry(org.apache.ignite.spi.metric.ReadOnlyMetricRegistry) MyServiceFactory(org.apache.ignite.internal.processors.service.inner.MyServiceFactory) List(java.util.List) IgniteConfiguration(org.apache.ignite.configuration.IgniteConfiguration) Service(org.apache.ignite.services.Service) GridMetricManager(org.apache.ignite.internal.processors.metric.GridMetricManager) ServiceConfiguration(org.apache.ignite.services.ServiceConfiguration) IgniteServiceProcessor.serviceMetricRegistryName(org.apache.ignite.internal.processors.service.IgniteServiceProcessor.serviceMetricRegistryName) Method(java.lang.reflect.Method) MyService(org.apache.ignite.internal.processors.service.inner.MyService) ReadOnlyMetricRegistry(org.apache.ignite.spi.metric.ReadOnlyMetricRegistry) MyService(org.apache.ignite.internal.processors.service.inner.MyService) IgniteEx(org.apache.ignite.internal.IgniteEx) HistogramMetric(org.apache.ignite.spi.metric.HistogramMetric) HistogramMetric(org.apache.ignite.spi.metric.HistogramMetric) Metric(org.apache.ignite.spi.metric.Metric)

Example 8 with Metric

use of org.apache.ignite.spi.metric.Metric in project ignite by apache.

the class UserQueriesTestBase method longMetricValue.

/**
 * Finds LongMetric from sql user queries registry by specified metric name and returns it's value.
 *
 * @param gridIdx index of a grid which metric value to find.
 * @param metricName short name of the metric from the "sql memory" metric registry.
 */
protected long longMetricValue(int gridIdx, String metricName) {
    MetricRegistry sqlMemReg = grid(gridIdx).context().metric().registry(SQL_USER_QUERIES_REG_NAME);
    Metric metric = sqlMemReg.findMetric(metricName);
    Assert.assertNotNull("Didn't find metric " + metricName, metric);
    Assert.assertTrue("Expected long metric, but got " + metric.getClass(), metric instanceof LongMetric);
    return ((LongMetric) metric).value();
}
Also used : MetricRegistry(org.apache.ignite.internal.processors.metric.MetricRegistry) Metric(org.apache.ignite.spi.metric.Metric) LongMetric(org.apache.ignite.spi.metric.LongMetric) LongMetric(org.apache.ignite.spi.metric.LongMetric)

Example 9 with Metric

use of org.apache.ignite.spi.metric.Metric in project ignite by apache.

the class OpenCensusMetricExporterSpi method export.

/**
 * {@inheritDoc}
 */
@Override
public void export() {
    StatsRecorder recorder = Stats.getStatsRecorder();
    try (Scope globalScope = tagScope()) {
        MeasureMap mmap = recorder.newMeasureMap();
        mreg.forEach(mreg -> {
            if (filter != null && !filter.test(mreg))
                return;
            mreg.forEach(metric -> {
                if (metric instanceof LongMetric || metric instanceof IntMetric || metric instanceof BooleanMetric || (metric instanceof ObjectMetric && ((ObjectMetric) metric).type() == Date.class) || (metric instanceof ObjectMetric && ((ObjectMetric) metric).type() == OffsetDateTime.class)) {
                    long val;
                    if (metric instanceof LongMetric)
                        val = ((LongMetric) metric).value();
                    else if (metric instanceof IntMetric)
                        val = ((IntMetric) metric).value();
                    else if (metric instanceof BooleanMetric)
                        val = ((BooleanMetric) metric).value() ? 1 : 0;
                    else if (metric instanceof ObjectMetric && ((ObjectMetric) metric).type() == Date.class)
                        val = ((ObjectMetric<Date>) metric).value().getTime();
                    else
                        val = ((ObjectMetric<OffsetDateTime>) metric).value().toInstant().toEpochMilli();
                    if (val < 0) {
                        if (log.isDebugEnabled())
                            log.debug("OpenCensus doesn't support negative values. Skip record of " + metric.name());
                        return;
                    }
                    MeasureLong msr = (MeasureLong) measures.computeIfAbsent(metric.name(), k -> createMeasure(metric, CREATE_LONG));
                    mmap.put(msr, val);
                } else if (metric instanceof DoubleMetric) {
                    double val = ((DoubleMetric) metric).value();
                    if (val < 0) {
                        if (log.isDebugEnabled())
                            log.debug("OpenCensus doesn't support negative values. Skip record of " + metric.name());
                        return;
                    }
                    MeasureDouble msr = (MeasureDouble) measures.computeIfAbsent(metric.name(), k -> createMeasure(metric, CREATE_DOUBLE));
                    mmap.put(msr, val);
                } else if (metric instanceof HistogramMetric) {
                    String[] names = histogramBucketNames((HistogramMetric) metric);
                    long[] vals = ((HistogramMetric) metric).value();
                    assert names.length == vals.length;
                    for (int i = 0; i < vals.length; i++) {
                        String name = names[i];
                        MeasureLong msr = (MeasureLong) measures.computeIfAbsent(name, k -> createMeasureLong(name, metric.description()));
                        mmap.put(msr, vals[i]);
                    }
                } else if (log.isDebugEnabled()) {
                    log.debug(metric.name() + "[" + metric.getClass() + "] not supported by Opencensus exporter");
                }
            });
        });
        mmap.record();
    }
}
Also used : StatsRecorder(io.opencensus.stats.StatsRecorder) TagContextBuilder(io.opencensus.tags.TagContextBuilder) StatsRecorder(io.opencensus.stats.StatsRecorder) IgniteSpiContext(org.apache.ignite.spi.IgniteSpiContext) IgniteSpiException(org.apache.ignite.spi.IgniteSpiException) Metric(org.apache.ignite.spi.metric.Metric) Stats(io.opencensus.stats.Stats) Date(java.util.Date) HashMap(java.util.HashMap) IgniteEx(org.apache.ignite.internal.IgniteEx) Function(java.util.function.Function) ObjectMetric(org.apache.ignite.spi.metric.ObjectMetric) ArrayList(java.util.ArrayList) PushMetricsExporterAdapter(org.apache.ignite.internal.processors.metric.PushMetricsExporterAdapter) Measure(io.opencensus.stats.Measure) MeasureDouble(io.opencensus.stats.Measure.MeasureDouble) MeasureMap(io.opencensus.stats.MeasureMap) Map(java.util.Map) TagMetadata(io.opencensus.tags.TagMetadata) TagValue(io.opencensus.tags.TagValue) View(io.opencensus.stats.View) ReadOnlyMetricManager(org.apache.ignite.spi.metric.ReadOnlyMetricManager) Tags(io.opencensus.tags.Tags) BooleanMetric(org.apache.ignite.spi.metric.BooleanMetric) HistogramMetric(org.apache.ignite.spi.metric.HistogramMetric) IntMetric(org.apache.ignite.spi.metric.IntMetric) Scope(io.opencensus.common.Scope) Name(io.opencensus.stats.View.Name) MetricRegistry(org.apache.ignite.internal.processors.metric.MetricRegistry) LastValue(io.opencensus.stats.Aggregation.LastValue) MeasureLong(io.opencensus.stats.Measure.MeasureLong) T2(org.apache.ignite.internal.util.typedef.T2) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) OffsetDateTime(java.time.OffsetDateTime) TagKey(io.opencensus.tags.TagKey) MetricUtils(org.apache.ignite.internal.processors.metric.impl.MetricUtils) UNLIMITED_PROPAGATION(io.opencensus.tags.TagMetadata.TagTtl.UNLIMITED_PROPAGATION) GridMetricManager(org.apache.ignite.internal.processors.metric.GridMetricManager) LongMetric(org.apache.ignite.spi.metric.LongMetric) DoubleMetric(org.apache.ignite.spi.metric.DoubleMetric) BooleanMetric(org.apache.ignite.spi.metric.BooleanMetric) HistogramMetric(org.apache.ignite.spi.metric.HistogramMetric) LongMetric(org.apache.ignite.spi.metric.LongMetric) MeasureDouble(io.opencensus.stats.Measure.MeasureDouble) MeasureMap(io.opencensus.stats.MeasureMap) Scope(io.opencensus.common.Scope) OffsetDateTime(java.time.OffsetDateTime) ObjectMetric(org.apache.ignite.spi.metric.ObjectMetric) MeasureLong(io.opencensus.stats.Measure.MeasureLong) DoubleMetric(org.apache.ignite.spi.metric.DoubleMetric) IntMetric(org.apache.ignite.spi.metric.IntMetric)

Example 10 with Metric

use of org.apache.ignite.spi.metric.Metric in project ignite by apache.

the class MetricRegistryLocalSystemView method getRows.

/**
 * {@inheritDoc}
 */
@Override
public Iterator<Row> getRows(Session ses, SearchRow first, SearchRow last) {
    return new Iterator<Row>() {

        /**
         */
        private Iterator<ReadOnlyMetricRegistry> grps = mreg.iterator();

        /**
         */
        private Iterator<Metric> curr = Collections.emptyIterator();

        /**
         */
        private boolean advance() {
            while (grps.hasNext()) {
                ReadOnlyMetricRegistry mreg = grps.next();
                curr = mreg.iterator();
                if (curr.hasNext())
                    return true;
            }
            return false;
        }

        /**
         * {@inheritDoc}
         */
        @Override
        public boolean hasNext() {
            if (curr.hasNext())
                return true;
            return advance();
        }

        /**
         * {@inheritDoc}
         */
        @Override
        public Row next() {
            Metric m = curr.next();
            return createRow(ses, m.name(), m.getAsString(), m.description());
        }
    };
}
Also used : ReadOnlyMetricRegistry(org.apache.ignite.spi.metric.ReadOnlyMetricRegistry) Iterator(java.util.Iterator) Metric(org.apache.ignite.spi.metric.Metric)

Aggregations

Metric (org.apache.ignite.spi.metric.Metric)17 LongMetric (org.apache.ignite.spi.metric.LongMetric)12 IgniteEx (org.apache.ignite.internal.IgniteEx)8 MetricRegistry (org.apache.ignite.internal.processors.metric.MetricRegistry)8 IgniteConfiguration (org.apache.ignite.configuration.IgniteConfiguration)7 HashMap (java.util.HashMap)6 Test (org.junit.Test)6 Map (java.util.Map)5 ImmutableMap (com.google.common.collect.ImmutableMap)4 Set (java.util.Set)4 IgniteCache (org.apache.ignite.IgniteCache)4 IgniteCheckedException (org.apache.ignite.IgniteCheckedException)4 CacheAtomicityMode (org.apache.ignite.cache.CacheAtomicityMode)4 CacheConfiguration (org.apache.ignite.configuration.CacheConfiguration)4 HistogramMetric (org.apache.ignite.spi.metric.HistogramMetric)4 ReadOnlyMetricRegistry (org.apache.ignite.spi.metric.ReadOnlyMetricRegistry)4 ArrayList (java.util.ArrayList)3 Arrays.stream (java.util.Arrays.stream)3 Collections.singleton (java.util.Collections.singleton)3 LinkedHashSet (java.util.LinkedHashSet)3