public AspNetCoreHostingObserver(IMetricsObserverOptions options, IStats stats, ILogger <AspNetCoreHostingObserver> logger)
            : base(OBSERVER_NAME, DIAGNOSTIC_NAME, options, stats, logger)
        {
            PathMatcher = new Regex(options.IngressIgnorePattern);

            _responseTimeMeasure = Meter.CreateDoubleMeasure("http.server.requests.seconds");
            _serverCountMeasure  = Meter.CreateInt64Counter("http.server.requests.count");

            /*
             * //var view = View.Create(
             * //        ViewName.Create("http.server.request.time"),
             * //        "Total request time",
             * //        responseTimeMeasure,
             * //        Distribution.Create(BucketBoundaries.Create(new List<double>() { 0.0, 1.0, 5.0, 10.0, 100.0 })),
             * //        new List<ITagKey>() { statusTagKey, exceptionTagKey, methodTagKey, uriTagKey });
             *
             * //ViewManager.RegisterView(view);
             *
             * //view = View.Create(
             * //        ViewName.Create("http.server.request.count"),
             * //        "Total request counts",
             * //        serverCountMeasure,
             * //        Sum.Create(),
             * //        new List<ITagKey>() { statusTagKey, exceptionTagKey, methodTagKey, uriTagKey });
             *
             * //ViewManager.RegisterView(view);
             */
        }
Exemple #2
0
        public HttpClientCoreObserver(IMetricsObserverOptions options, IStats stats, ILogger <HttpClientCoreObserver> logger)
            : base(OBSERVER_NAME, DIAGNOSTIC_NAME, options, stats, logger)
        {
            PathMatcher         = new Regex(options.EgressIgnorePattern);
            _clientTimeMeasure  = Meter.CreateDoubleMeasure("http.client.request.time");
            _clientCountMeasure = Meter.CreateInt64Measure("http.client.request.count");

            /* TODO: figureout bound instruments & view API
             * var view = View.Create(
             *      ViewName.Create("http.client.request.time"),
             *      "Total request time",
             *      clientTimeMeasure,
             *      Distribution.Create(BucketBoundaries.Create(new List<double>() { 0.0, 1.0, 5.0, 10.0, 100.0 })),
             *      new List<ITagKey>() { statusTagKey, uriTagKey, methodTagKey, clientTagKey });
             * ViewManager.RegisterView(view);
             *
             * view = View.Create(
             *  ViewName.Create("http.client.request.count"),
             *  "Total request counts",
             *  clientCountMeasure,
             *  Sum.Create(),
             *  new List<ITagKey>() { statusTagKey, uriTagKey, methodTagKey, clientTagKey });
             *
             * ViewManager.RegisterView(view);
             */
        }
Exemple #3
0
 public GCEventsListener(IStats stats, ILogger <EventSourceListener> logger = null)
     : base(stats)
 {
     _logger          = logger;
     _memoryUsed      = Meter.CreateInt64Measure("clr.memory.used");
     _collectionCount = Meter.CreateInt64Measure("clr.gc.collections");
 }
        public MdmMeasureMetricWrapper(string monitoringAccount, string metricNamespace, string metricName, List<string> dimensionNames, bool addDefaultDimensions)
        {
            this.MetricName = metricName;
            this.dimensionNames = dimensionNames?.ToArray() ?? new string[0];

            var errorContext = default(ErrorContext);
            // this.wrappedMeasureMetric = MeasureMetric.Create(monitoringAccount, metricNamespace, metricName, ref errorContext, addDefaultDimensions, this.dimensionNames);
            // mofied by jin
            this.wrappedMeasureMetric = MeasureMetric.Create(monitoringAccount, metricNamespace, metricName, ref errorContext, addDefaultDimensions, this.dimensionNames);
        }
        public OpenTelemetryCollectorLogger(MeterProvider meterProvider, string metricsPrefix = "magiconion", string version = null, IEnumerable <KeyValuePair <string, string> > defaultLabels = null)
        {
            if (meterProvider == null)
            {
                throw new ArgumentNullException(nameof(meterProvider));
            }

            // configure defaultTags included as default tag
            this.defaultLabels = defaultLabels ?? Array.Empty <KeyValuePair <string, string> >();

            // todo: how to description?
            var meter = meterProvider.GetMeter("MagicOnion", version);

            // Service build time. ms
            buildServiceDefinitionMeasure = meter.CreateDoubleMeasure($"{metricsPrefix}_buildservicedefinition_duration_milliseconds"); // sum

            // Unary request count. num
            unaryRequestCounter = meter.CreateInt64Counter($"{metricsPrefix}_unary_requests_count");        // sum
            // Unary API request size. bytes
            unaryRequestSizeMeasure = meter.CreateInt64Measure($"{metricsPrefix}_unary_request_size");      // sum
            // Unary API response size. bytes
            unaryResponseSizeMeasure = meter.CreateInt64Measure($"{metricsPrefix}_unary_response_size");    // sum
            // Unary API error Count. num
            unaryErrorCounter = meter.CreateInt64Counter($"{metricsPrefix}_unary_error_count");             // sum
            // Unary API elapsed time. ms
            unaryElapsedMeasure = meter.CreateDoubleMeasure($"{metricsPrefix}_unary_elapsed_milliseconds"); // sum

            // StreamingHub error Count. num
            streamingHubErrorCounter = meter.CreateInt64Counter($"{metricsPrefix}_streaminghub_error_count");             // sum
            // StreamingHub elapsed time. ms
            streamingHubElapsedMeasure = meter.CreateDoubleMeasure($"{metricsPrefix}_streaminghub_elapsed_milliseconds"); // sum
            // StreamingHub request count. num
            streamingHubRequestCounter = meter.CreateInt64Counter($"{metricsPrefix}_streaminghub_requests_count");        // sum
            // StreamingHub request size. bytes
            streamingHubRequestSizeMeasure = meter.CreateInt64Measure($"{metricsPrefix}_streaminghub_request_size");      // sum
            // StreamingHub response size. bytes
            streamingHubResponseSizeMeasure = meter.CreateInt64Measure($"{metricsPrefix}_streaminghub_response_size");    // sum
            // ConnectCount - DisconnectCount = current connect count. (successfully disconnected)
            // StreamingHub connect count. num
            streamingHubConnectCounter = meter.CreateInt64Counter($"{metricsPrefix}_streaminghub_connect_count");       // sum
            // StreamingHub disconnect count. num
            streamingHubDisconnectCounter = meter.CreateInt64Counter($"{metricsPrefix}_streaminghub_disconnect_count"); // sum

            // HubBroadcast request count. num
            broadcastRequestCounter = meter.CreateInt64Counter($"{metricsPrefix}_broadcast_requests_count");   // sum
            // HubBroadcast request size. num
            broadcastRequestSizeMeasure = meter.CreateInt64Measure($"{metricsPrefix}_broadcast_request_size"); // sum
            // HubBroadcast group count. num
            broadcastGroupCounter = meter.CreateInt64Counter($"{metricsPrefix}_broadcast_group_count");        // sum
        }
        public CLRRuntimeObserver(IMetricsObserverOptions options, IStats stats, ILogger <CLRRuntimeObserver> logger)
            : base(OBSERVER_NAME, DIAGNOSTIC_NAME, options, stats, logger)
        {
            _memoryUsed      = Meter.CreateInt64Measure("clr.memory.used");
            _collectionCount = Meter.CreateInt64Measure("clr.gc.collections");
            _activeThreads   = Meter.CreateInt64Measure("clr.threadpool.active");
            _availThreads    = Meter.CreateInt64Measure("clr.threadpool.avail");

            // TODO: Pending View API
            // memoryTagValues = Tagger.CurrentBuilder.Put(memoryAreaKey, heapArea).Build();
            // threadPoolWorkerTagValues = Tagger.CurrentBuilder.Put(threadKindKey, threadPoolWorkerKind).Build();
            // threadPoolCompPortTagValues = Tagger.CurrentBuilder.Put(threadKindKey, threadPoolComppKind).Build();

            // RegisterViews();
        }
Exemple #7
0
        public static MetricLogger Create(
            Context context,
            string?monitoringAccount,
            string logicalNameSpace,
            string metricName,
            bool addDefaultDimensions,
            IEnumerable <Dimension> dimensions)
        {
            if (string.IsNullOrEmpty(monitoringAccount))
            {
                return(NoOpMetricLogger.Instance);
            }

            // For some reason the generic MeasureMetric class does not work with 0 dimensions.  There is a special
            // class (MeasureMetric0D) that does metrics without any dimensions.
            var dimensionNames = dimensions.Select(d => d.Name).ToArray();

            Tracer.Debug(context, $"Initializing Mdm logger {logicalNameSpace}:{metricName}");
            var error = new ErrorContext();

            MeasureMetric?  measureMetric   = null;
            MeasureMetric0D?measureMetric0D = null;

            // Very important not to forget to pass true for addDefaultDimension argument since the default is false.
            if (dimensionNames.Length > 0)
            {
                measureMetric = MeasureMetric.Create(monitoringAccount, logicalNameSpace, metricName, ref error, addDefaultDimension: addDefaultDimensions, dimensionNames);
            }
            else
            {
                measureMetric0D = MeasureMetric0D.Create(monitoringAccount, logicalNameSpace, metricName, ref error, addDefaultDimension: addDefaultDimensions);
            }

            if (error.ErrorCode != 0)
            {
                Tracer.Error(context, $"Fail to create MeasureMetric. {logicalNameSpace}:{metricName} ErrorCode: {error.ErrorCode} ErrorMessage: {error.ErrorMessage}. Metrics would be disabled!");
                return(NoOpMetricLogger.Instance);
            }

            return(new WindowsMetricLogger(context, logicalNameSpace, metricName, measureMetric, measureMetric0D));
        }
        public OpenTelemetryCollectorLogger(MeterFactory meterFactory, string version = null, IEnumerable <KeyValuePair <string, string> > defaultLabels = null)
        {
            if (meterFactory == null)
            {
                throw new ArgumentNullException(nameof(meterFactory));
            }

            // configure defaultTags included as default tag
            this.defaultLabels = defaultLabels ?? Array.Empty <KeyValuePair <string, string> >();

            // todo: how to description?
            var meter = meterFactory.GetMeter("MagicOnion", version);

            // Service build time. ms
            buildServiceDefinitionMeasure = meter.CreateDoubleMeasure("MagicOnion/measure/BuildServiceDefinition");    // sum
            // Unary request count. num
            unaryRequestCounter = meter.CreateInt64Counter("MagicOnion/measure/UnaryRequest");                         // sum
            // Unary API response size. bytes
            unaryResponseSizeMeasure = meter.CreateInt64Measure("MagicOnion/measure/UnaryResponseSize");               // sum
            // Unary API error Count. num
            unaryErrorCounter = meter.CreateInt64Counter("MagicOnion/measure/UnaryErrorCount");                        // sum
            // Unary API elapsed time. ms
            unaryElapsedMeasure = meter.CreateDoubleMeasure("MagicOnion/measure/UnaryElapsed");                        // sum
            // StreamingHub API error Count. num
            streamingHubErrorCounter = meter.CreateInt64Counter("MagicOnion/measure/StreamingHubErrorCount");          // sum
            // StreamingHub API elapsed time. ms
            streamingHubElapsedMeasure = meter.CreateDoubleMeasure("MagicOnion/measure/StreamingHubElapsed");          // sum
            // StreamingHub request count. num
            streamingHubRequestCounter = meter.CreateInt64Counter("MagicOnion/measure/StreamingHubRequest");           // sum
            // StreamingHub API response size. bytes
            streamingHubResponseSizeMeasure = meter.CreateInt64Measure("MagicOnion/measure/StreamingHubResponseSize"); // sum
            // ConnectCount - DisconnectCount = current connect count. (successfully disconnected)
            // StreamingHub connect count. num
            streamingHubConnectCounter = meter.CreateInt64Counter("MagicOnion/measure/StreamingHubConnect");       // sum
            // StreamingHub disconnect count. num
            streamingHubDisconnectCounter = meter.CreateInt64Counter("MagicOnion/measure/StreamingHubDisconnect"); // sum
        }
Exemple #9
0
 public ThreadPoolEventsListener(IStats stats, ILogger <EventSourceListener> logger = null)
     : base(stats)
 {
     _logger           = logger;
     _availableThreads = Meter.CreateInt64Measure($"clr.threadpool.available");
 }