示例#1
0
        public void TestAnnotations()
        {
            MetricName metricName = MetricNameFactory.Name("default", "test", typeof(TestAnnotationJMX));

            CommonJMXUtil.RegisterMbean(new MyJMXExposedClass(), metricName);
            CommonJMXUtil.UnregisterMbean(metricName);
        }
示例#2
0
        private void DestroyEngineMetrics(string runtimeURI)
        {
#if FALSE
            lock (this) {
                CommonJMXUtil.UnregisterMbean(MetricNameFactory.Name(runtimeURI, "filter"));
                CommonJMXUtil.UnregisterMbean(MetricNameFactory.Name(runtimeURI, "schedule"));
                CommonJMXUtil.UnregisterMbean(MetricNameFactory.Name(runtimeURI, "runtime"));
            }
#endif
        }
示例#3
0
        private void DestroyEngineMetrics(string engineURI)
        {
            lock (this)
            {
#if false
                CommonJMXUtil.UnregisterMbean(MetricNameFactory.Name(engineURI, "filter"));
                CommonJMXUtil.UnregisterMbean(MetricNameFactory.Name(engineURI, "schedule"));
                CommonJMXUtil.UnregisterMbean(MetricNameFactory.Name(engineURI, "runtime"));
#endif
            }
        }
示例#4
0
        private void StartEngineMetrics(EPServicesContext services, EPRuntime runtime)
        {
            lock (this)
            {
#if false
                MetricName filterName = MetricNameFactory.Name(services.EngineURI, "filter");
                CommonJMXUtil.RegisterMbean(services.FilterService, filterName);
                MetricName scheduleName = MetricNameFactory.Name(services.EngineURI, "schedule");
                CommonJMXUtil.RegisterMbean(services.SchedulingService, scheduleName);
                MetricName runtimeName = MetricNameFactory.Name(services.EngineURI, "runtime");
                CommonJMXUtil.RegisterMbean(runtime, runtimeName);
#endif
            }
        }
示例#5
0
        private void StartEngineMetrics(
            EPServicesContext services,
            EPEventService runtime)
        {
#if FALSE
            lock (this) {
                var filterName = MetricNameFactory.Name(services.RuntimeURI, "filter");
                CommonJMXUtil.RegisterMbean(services.FilterService, filterName);
                var scheduleName = MetricNameFactory.Name(services.RuntimeURI, "schedule");
                CommonJMXUtil.RegisterMbean(services.SchedulingService, scheduleName);
                var runtimeName = MetricNameFactory.Name(services.RuntimeURI, "runtime");
                CommonJMXUtil.RegisterMbean(runtime, runtimeName);
            }
#endif
        }
示例#6
0
        public void TestMetrics()
        {
            var engineURI = "default";
            IList <MetricName> metricNames = new List <MetricName>();

            // Exposes a single "value" attribute
            var count     = new AtomicLong();
            var gaugeName = MetricNameFactory.Name(engineURI, "type-testgauge", this.GetType());

            Metrics.NewGauge(gaugeName, new ProxyGauge <long>(() => count.Get()));

            metricNames.Add(gaugeName);

            // Exposes a counter, which is more efficient then the gauge when the size() call is expensive
            var counterName = MetricNameFactory.Name(engineURI, "type-testcounter", this.GetType());
            var counter     = Metrics.NewCounter(counterName);

            metricNames.Add(gaugeName);

            // exposes a 1-second, 10-second etc. exponential weighted average
            var meterName = MetricNameFactory.Name(engineURI, "type-testmeter", this.GetType());
            var meter     = Metrics.NewMeter(meterName, "request", TimeUnit.SECONDS);

            metricNames.Add(meterName);

            // exposes a histogramm of avg, min, max, 50th%, 95%, 99%
            var histName = MetricNameFactory.Name(engineURI, "type-testhist", this.GetType());
            var hist     = Metrics.NewHistogram(histName, true);

            metricNames.Add(histName);

            // exposes a timer with a rates avg, one minute, 5 minute, 15 minute
            var timerName = MetricNameFactory.Name(engineURI, "type-testtimer", this.GetType());
            var timer     = Metrics.NewTimer(timerName, TimeUnit.MILLISECONDS, TimeUnit.MILLISECONDS);

            metricNames.Add(timerName);

            // assert names found
            foreach (var name in metricNames)
            {
                AssertFound(name.MBeanName);
            }

            // Increase here for a longer run
            long TESTINTERVAL = 300;

            var random            = new Random();
            var start             = PerformanceObserver.MilliTime;
            var histogrammChoices = new long[] { 100, 1000, 5000, 8000, 10000 };

            while (PerformanceObserver.MilliTime - start < TESTINTERVAL)
            {
                var timerContext = timer.Time();
                meter.Mark();
                count.IncrementAndGet();
                counter.Inc();
                hist.Update(histogrammChoices[(int)(random.NextDouble() * histogrammChoices.Length)]);
                Thread.Sleep(100);
                timerContext.Stop();
            }

            foreach (var name in metricNames)
            {
                Metrics.DefaultRegistry().RemoveMetric(name);
                AssertNotFound(name.MBeanName);
            }
        }