Ejemplo n.º 1
0
 public MetricsScrapeAndUpload(IMetricsScraper scraper, IMetricsPublisher publisher, Guid metricsCollectorRuntimeId)
 {
     this.scraper   = Preconditions.CheckNotNull(scraper);
     this.publisher = Preconditions.CheckNotNull(publisher);
     Preconditions.CheckArgument(metricsCollectorRuntimeId != Guid.Empty);
     this.metricsCollectorRuntimeId = metricsCollectorRuntimeId;
 }
Ejemplo n.º 2
0
 public MetricsWorker(IMetricsScraper scraper, IMetricsStorage storage, IMetricsPublisher uploader, ISystemTime systemTime = null)
 {
     this.scraper    = Preconditions.CheckNotNull(scraper, nameof(scraper));
     this.storage    = Preconditions.CheckNotNull(storage, nameof(storage));
     this.uploader   = Preconditions.CheckNotNull(uploader, nameof(uploader));
     this.systemTime = systemTime ?? SystemTime.Instance;
 }
Ejemplo n.º 3
0
 public TestBase(TestReporter testReporter, IMetricsScraper scraper, ModuleClient moduleClient)
 {
     log.LogInformation($"Making test {this.TestName}");
     this.testReporter = testReporter.MakeSubcategory(this.TestName);
     this.scraper      = scraper;
     this.moduleClient = moduleClient;
 }
Ejemplo n.º 4
0
        public MetricsWorker(IMetricsScraper scraper, IMetricsStorage storage, IMetricsPublisher uploader)
        {
            this.scraper  = Preconditions.CheckNotNull(scraper, nameof(scraper));
            this.storage  = Preconditions.CheckNotNull(storage, nameof(storage));
            this.uploader = Preconditions.CheckNotNull(uploader, nameof(uploader));

            this.metricFilter = new MetricFilter()
                                .AddAllowedTags(new KeyValuePair <string, string>(MetricsConstants.MsTelemetry, true.ToString()))
                                .AddTagsToRemove(MetricsConstants.MsTelemetry, MetricsConstants.IotHubLabel, MetricsConstants.DeviceIdLabel);
        }
Ejemplo n.º 5
0
        public MetricsWorker(IMetricsScraper scraper, IMetricsStorage storage, IMetricsPublisher uploader)
        {
            this.scraper  = Preconditions.CheckNotNull(scraper, nameof(scraper));
            this.storage  = Preconditions.CheckNotNull(storage, nameof(storage));
            this.uploader = Preconditions.CheckNotNull(uploader, nameof(uploader));

            this.metricFilter = new MetricTransformer()
                                .AddAllowedTags(new KeyValuePair <string, string>(MetricsConstants.MsTelemetry, true.ToString()))
                                .AddTagsToRemove(MetricsConstants.MsTelemetry, MetricsConstants.IotHubLabel, MetricsConstants.DeviceIdLabel)
                                .AddTagsToModify(("id", this.ReplaceDeviceId), ("module_name", name => name.CreateSha256()));
        }
Ejemplo n.º 6
0
        public static async Task <bool> WaitForHostMetrics(IMetricsScraper scraper, CancellationToken cancellationToken)
        {
            TimeSpan maxWaitTime = TimeSpan.FromMinutes(2.5);
            TimeSpan frequency   = TimeSpan.FromSeconds(10);

            for (int i = 0; i < maxWaitTime / frequency; i++)
            {
                if ((await scraper.ScrapeEndpointsAsync(cancellationToken)).Any(m => m.Name == "edgeAgent_used_cpu_percent" && m.Tags["module_name"] != "host"))
                {
                    return(true);
                }

                await Task.Delay(frequency, cancellationToken);
            }

            return(false);
        }
Ejemplo n.º 7
0
        protected override void Load(ContainerBuilder builder)
        {
            // IMetricsScraper
            builder.Register(c => new MetricsScraper(new string[] { "http://edgeHub:9600/metrics", "http://edgeAgent:9600/metrics" }))
            .As <IMetricsScraper>()
            .SingleInstance();

            // Task<IMetricsStorage>
            builder.Register(async c =>
            {
                IStoreProvider storeProvider = await c.Resolve <Task <IStoreProvider> >();
                ISequentialStore <IEnumerable <Metric> > dataStore = await storeProvider.GetSequentialStore <IEnumerable <Metric> >("Metrics");

                return(new MetricsStorage(dataStore) as IMetricsStorage);
            })
            .As <Task <IMetricsStorage> >()
            .SingleInstance();

            // IMetricsPublisher
            builder.RegisterType <EdgeRuntimeDiagnosticsUpload>()
            .As <IMetricsPublisher>()
            .SingleInstance();

            // Task<MetricsWorker>
            builder.Register(async c =>
            {
                IMetricsScraper scraper        = c.Resolve <IMetricsScraper>();
                IMetricsPublisher publisher    = c.Resolve <IMetricsPublisher>();
                Task <IMetricsStorage> storage = c.Resolve <Task <IMetricsStorage> >();

                return(new MetricsWorker(scraper, await storage, publisher));
            })
            .As <Task <MetricsWorker> >()
            .SingleInstance();

            base.Load(builder);
        }
 public ValidateDocumentedMetrics(TestReporter testReporter, IMetricsScraper scraper, ModuleClient moduleClient)
     : base(testReporter, scraper, moduleClient)
 {
 }
Ejemplo n.º 9
0
        public MetricsWorker(IMetricsScraper scraper, IMetricsStorage storage, IMetricsPublisher uploader)
        {
            this.scraper  = Preconditions.CheckNotNull(scraper, nameof(scraper));
            this.storage  = Preconditions.CheckNotNull(storage, nameof(storage));
            this.uploader = Preconditions.CheckNotNull(uploader, nameof(uploader));

            this.metricFilter = new MetricTransformer()
                                .AddAllowedTags((MetricsConstants.MsTelemetry, true.ToString()))
                                .AddDisallowedTags(
                ("quantile", "0.1"),
                ("quantile", "0.5"),
                ("quantile", "0.99"))
                                .AddTagsToRemove(MetricsConstants.MsTelemetry, MetricsConstants.IotHubLabel, MetricsConstants.DeviceIdLabel)
                                .AddTagsToModify(
                ("id", this.ReplaceDeviceId),
                ("module_name", this.ReplaceModuleId),
                ("to", name => name.CreateSha256()),
                ("from", name => name.CreateSha256()),
                ("to_route_input", name => name.CreateSha256()),
                ("from_route_output", name => name.CreateSha256()));

#pragma warning disable SA1111 // Closing parenthesis should be on line of last parameter
            this.metricAggregator = new MetricAggregator(
                new AggregationTemplate("edgehub_gettwin_total", "id", new Summer()),
                new AggregationTemplate(
                    "edgehub_messages_received_total",
                    ("route_output", new Summer()),
                    ("id", new Summer())
                    ),
                new AggregationTemplate(
                    "edgehub_messages_sent_total",
                    ("from", new Summer()),
                    ("to", new Summer()),
                    ("from_route_output", new Summer()),
                    ("to_route_input", new Summer())
                    ),
                new AggregationTemplate(
                    new string[]
            {
                "edgehub_message_size_bytes",
                "edgehub_message_size_bytes_sum",
                "edgehub_message_size_bytes_count"
            },
                    "id",
                    new Averager()),
                new AggregationTemplate(
                    new string[]
            {
                "edgehub_message_process_duration_seconds",
                "edgehub_message_process_duration_seconds_sum",
                "edgehub_message_process_duration_seconds_count",
            },
                    ("from", new Averager()),
                    ("to", new Averager())
                    ),
                new AggregationTemplate(
                    "edgehub_direct_methods_total",
                    ("from", new Summer()),
                    ("to", new Summer())
                    ),
                new AggregationTemplate("edgehub_queue_length", "endpoint", new Summer()),
                new AggregationTemplate(
                    new string[]
            {
                "edgehub_messages_dropped_total",
                "edgehub_messages_unack_total",
            },
                    ("from", new Summer()),
                    ("from_route_output", new Summer())
                    ),
                new AggregationTemplate("edgehub_client_connect_failed_total", "id", new Summer())
                );
#pragma warning restore SA1111 // Closing parenthesis should be on line of last parameter
        }
Ejemplo n.º 10
0
 public MetricsWorker(IMetricsScraper scraper, IMetricsStorage storage, IMetricsPublisher uploader)
 {
     this.scraper  = Preconditions.CheckNotNull(scraper, nameof(scraper));
     this.storage  = Preconditions.CheckNotNull(storage, nameof(storage));
     this.uploader = Preconditions.CheckNotNull(uploader, nameof(uploader));
 }
Ejemplo n.º 11
0
 public MetricsScrapeAndUpload(IMetricsScraper scraper, IMetricsPublisher publisher, Dictionary <string, string> additionalTags)
 {
     this.scraper        = Preconditions.CheckNotNull(scraper);
     this.publisher      = Preconditions.CheckNotNull(publisher);
     this.additionalTags = Preconditions.CheckNotNull(additionalTags);
 }
Ejemplo n.º 12
0
 public ValidateHostRanges(TestReporter testReporter, IMetricsScraper scraper, ModuleClient moduleClient)
     : base(testReporter, scraper, moduleClient)
 {
 }
Ejemplo n.º 13
0
 public ValidateNumberOfMessagesSent(TestReporter testReporter, IMetricsScraper scraper, ModuleClient moduleClient)
     : base(testReporter, scraper, moduleClient)
 {
 }
Ejemplo n.º 14
0
 public ValidateMessages(TestReporter testReporter, IMetricsScraper scraper, ModuleClient moduleClient, TransportType transportType)
     : base(testReporter, scraper, moduleClient)
 {
     this.transportType = transportType;
 }