コード例 #1
0
        private void Export()
        {
            var viewDataList = new List <IViewData>();

            foreach (var view in viewManager.AllExportedViews)
            {
                if (RegisterView(view))
                {
                    var data = viewManager.GetView(view.Name);
                    viewDataList.Add(data);
                }
            }

            // Add time series from all the views that need exporting
            var timeSeriesList = new List <TimeSeries>();

            foreach (var viewData in viewDataList)
            {
                var metricDescriptor = metricDescriptors[viewData.View];
                var timeSeries       = MetricsConversions.CreateTimeSeriesList(viewData, monitoredResource, metricDescriptor, domain);
                timeSeriesList.AddRange(timeSeries);
            }

            // Perform the operation in batches of MAX_BATCH_EXPORT_SIZE
            foreach (var batchedTimeSeries in timeSeriesList.Partition(MAX_BATCH_EXPORT_SIZE))
            {
                var request = new CreateTimeSeriesRequest();
                request.ProjectName = project;
                request.TimeSeries.AddRange(batchedTimeSeries);

                try
                {
                    metricServiceClient.CreateTimeSeries(request);
                }
                catch (RpcException e)
                {
                    ExporterStackdriverEventSource.Log.UnknownProblemWhileCreatingStackdriverTimeSeriesError(e);
                }
            }
        }
コード例 #2
0
        private bool RegisterView(IView view)
        {
            IView existing = null;

            if (this.registeredViews.TryGetValue(view.Name, out existing))
            {
                // Ignore views that are already registered.
                return(existing.Equals(view));
            }

            this.registeredViews.Add(view.Name, view);

            var metricDescriptorTypeName = GenerateMetricDescriptorTypeName(view.Name, this.domain);

            // TODO - zeltser: don't need to create MetricDescriptor for RpcViewConstants once we defined
            // canonical metrics. Registration is required only for custom view definitions. Canonical
            // views should be pre-registered.
            var metricDescriptor = MetricsConversions.CreateMetricDescriptor(
                metricDescriptorTypeName,
                view,
                this.project,
                this.domain,
                this.displayNamePrefix);

            if (metricDescriptor == null)
            {
                // Don't register interval views in this version.
                return(false);
            }

            // Cache metric descriptor and ensure it exists in Stackdriver
            if (!this.metricDescriptors.ContainsKey(view))
            {
                this.metricDescriptors.Add(view, metricDescriptor);
            }

            return(this.EnsureMetricDescriptorExists(metricDescriptor));
        }