protected void AssertMetricDefinition(MetricDefinition deserializedMetricDefinition, ServiceBusQueueMetricDefinition serviceBusMetricDefinition)
 {
     Assert.NotNull(deserializedMetricDefinition);
     Assert.Equal(serviceBusMetricDefinition.Name, deserializedMetricDefinition.Name);
     Assert.Equal(serviceBusMetricDefinition.Description, deserializedMetricDefinition.Description);
     Assert.Equal(serviceBusMetricDefinition.ResourceType, deserializedMetricDefinition.ResourceType);
 }
Exemple #2
0
        public async Task ScrapeAsync(MetricDefinition metricDefinition)
        {
            try
            {
                if (metricDefinition == null)
                {
                    throw new ArgumentNullException(nameof(metricDefinition));
                }

                if (!(metricDefinition is TMetricDefinition castedMetricDefinition))
                {
                    throw new ArgumentException($"Could not cast metric definition of type '{metricDefinition.ResourceType}' to {typeof(TMetricDefinition)}. Payload: {JsonConvert.SerializeObject(metricDefinition)}");
                }

                var aggregationInterval = DetermineMetricAggregationInterval(metricDefinition);
                var aggregationType     = metricDefinition.AzureMetricConfiguration.Aggregation.Type;
                var resourceGroupName   = string.IsNullOrEmpty(metricDefinition.ResourceGroupName) ? AzureMetadata.ResourceGroupName : metricDefinition.ResourceGroupName;
                var foundMetricValue    = await ScrapeResourceAsync(AzureMetadata.SubscriptionId, resourceGroupName, castedMetricDefinition, aggregationType, aggregationInterval);

                _logger.LogInformation("Found value '{MetricValue}' for metric '{MetricName}' with aggregation interval '{AggregationInterval}'", foundMetricValue, metricDefinition.Name, aggregationInterval);

                var metricsTimestampFeatureFlag = FeatureFlag.IsActive("METRICSTIMESTAMP", defaultFlagState: true);

                var gauge = Metrics.CreateGauge(metricDefinition.Name, metricDefinition.Description, includeTimestamp: metricsTimestampFeatureFlag);
                gauge.Set(foundMetricValue);
            }
            catch (Exception exception)
            {
                _exceptionTracker.Track(exception);
            }
        }
        private static void AssertContainerInstanceMetricDefinition(MetricDefinition deserializedContainerInstanceMetricDefinition, ContainerInstanceMetricDefinitionV1 containerInstanceMetricDefinition)
        {
            var deserializedResource = deserializedContainerInstanceMetricDefinition.Resources.Single() as ContainerInstanceResourceDefinition;

            Assert.NotNull(deserializedResource);
            Assert.Equal(containerInstanceMetricDefinition.ContainerGroup, deserializedResource.ContainerGroup);
            Assert.NotNull(deserializedContainerInstanceMetricDefinition.AzureMetricConfiguration);
            Assert.Equal(containerInstanceMetricDefinition.AzureMetricConfiguration.MetricName, deserializedContainerInstanceMetricDefinition.AzureMetricConfiguration.MetricName);
            Assert.NotNull(deserializedContainerInstanceMetricDefinition.AzureMetricConfiguration.Aggregation);
            Assert.Equal(containerInstanceMetricDefinition.AzureMetricConfiguration.Aggregation.Type, deserializedContainerInstanceMetricDefinition.AzureMetricConfiguration.Aggregation.Type);
            Assert.Equal(containerInstanceMetricDefinition.AzureMetricConfiguration.Aggregation.Interval, deserializedContainerInstanceMetricDefinition.AzureMetricConfiguration.Aggregation.Interval);
        }
Exemple #4
0
        private TimeSpan DetermineMetricAggregationInterval(MetricDefinition metricDefinition)
        {
            Guard.NotNull(metricDefinition, nameof(metricDefinition));

            if (metricDefinition?.AzureMetricConfiguration?.Aggregation?.Interval != null)
            {
                return(metricDefinition.AzureMetricConfiguration.Aggregation.Interval.Value);
            }

            if (MetricDefaults.Aggregation.Interval == null)
            {
                throw new Exception($"No default aggregation interval is configured nor on the metric configuration for '{metricDefinition?.Name}'");
            }

            return(MetricDefaults.Aggregation.Interval.Value);
        }
        private static void AssertAzureStorageQueueMetricDefinition(MetricDefinition deserializedStorageQueueMetricDefinition, StorageQueueMetricDefinitionV1 storageQueueMetricDefinition)
        {
            var deserializedResource = deserializedStorageQueueMetricDefinition.Resources.Single() as StorageQueueResourceDefinition;

            Assert.NotNull(deserializedResource);
            Assert.Equal(storageQueueMetricDefinition.AccountName, deserializedResource.AccountName);
            Assert.Equal(storageQueueMetricDefinition.QueueName, deserializedResource.QueueName);
            Assert.NotNull(deserializedResource.SasToken);
            Assert.Equal(storageQueueMetricDefinition.SasToken.RawValue, deserializedResource.SasToken.RawValue);
            Assert.Equal(storageQueueMetricDefinition.SasToken.EnvironmentVariable, deserializedResource.SasToken.EnvironmentVariable);
            Assert.NotNull(deserializedStorageQueueMetricDefinition.AzureMetricConfiguration);
            Assert.Equal(storageQueueMetricDefinition.AzureMetricConfiguration.MetricName, deserializedStorageQueueMetricDefinition.AzureMetricConfiguration.MetricName);
            Assert.NotNull(deserializedStorageQueueMetricDefinition.AzureMetricConfiguration.Aggregation);
            Assert.Equal(storageQueueMetricDefinition.AzureMetricConfiguration.Aggregation.Type, deserializedStorageQueueMetricDefinition.AzureMetricConfiguration.Aggregation.Type);
            Assert.Equal(storageQueueMetricDefinition.AzureMetricConfiguration.Aggregation.Interval, deserializedStorageQueueMetricDefinition.AzureMetricConfiguration.Aggregation.Interval);
        }
Exemple #6
0
 private static void AssertAzureStorageQueueMetricDefinition(StorageQueueMetricDefinition deserializedServiceBusMetricDefinition, StorageQueueMetricDefinition serviceBusMetricDefinition, MetricDefinition deserializedMetricDefinition)
 {
     Assert.NotNull(deserializedServiceBusMetricDefinition);
     Assert.Equal(serviceBusMetricDefinition.AccountName, deserializedServiceBusMetricDefinition.AccountName);
     Assert.Equal(serviceBusMetricDefinition.QueueName, deserializedServiceBusMetricDefinition.QueueName);
     Assert.Equal(serviceBusMetricDefinition.SasToken, deserializedServiceBusMetricDefinition.SasToken);
     Assert.NotNull(deserializedMetricDefinition.AzureMetricConfiguration);
     Assert.Equal(serviceBusMetricDefinition.AzureMetricConfiguration.MetricName, deserializedMetricDefinition.AzureMetricConfiguration.MetricName);
     Assert.NotNull(deserializedMetricDefinition.AzureMetricConfiguration.Aggregation);
     Assert.Equal(serviceBusMetricDefinition.AzureMetricConfiguration.Aggregation.Type, deserializedMetricDefinition.AzureMetricConfiguration.Aggregation.Type);
     Assert.Equal(serviceBusMetricDefinition.AzureMetricConfiguration.Aggregation.Interval, deserializedMetricDefinition.AzureMetricConfiguration.Aggregation.Interval);
 }
Exemple #7
0
 private static void AssertVirtualMachineMetricDefinition(VirtualMachineMetricDefinition deserializedVirtualMachineMetricDefinition, VirtualMachineMetricDefinition virtualMachineMetricDefinition, MetricDefinition deserializedMetricDefinition)
 {
     Assert.NotNull(deserializedVirtualMachineMetricDefinition);
     Assert.Equal(virtualMachineMetricDefinition.VirtualMachineName, deserializedVirtualMachineMetricDefinition.VirtualMachineName);
     Assert.NotNull(deserializedMetricDefinition.AzureMetricConfiguration);
     Assert.Equal(virtualMachineMetricDefinition.AzureMetricConfiguration.MetricName, deserializedMetricDefinition.AzureMetricConfiguration.MetricName);
     Assert.NotNull(deserializedMetricDefinition.AzureMetricConfiguration.Aggregation);
     Assert.Equal(virtualMachineMetricDefinition.AzureMetricConfiguration.Aggregation.Type, deserializedMetricDefinition.AzureMetricConfiguration.Aggregation.Type);
     Assert.Equal(virtualMachineMetricDefinition.AzureMetricConfiguration.Aggregation.Interval, deserializedMetricDefinition.AzureMetricConfiguration.Aggregation.Interval);
 }
Exemple #8
0
 private static void AssertContainerInstanceMetricDefinition(ContainerInstanceMetricDefinition deserializedContainerInstanceMetricDefinition, ContainerInstanceMetricDefinition containerInstanceMetricDefinition, MetricDefinition deserializedMetricDefinition)
 {
     Assert.NotNull(deserializedContainerInstanceMetricDefinition);
     Assert.Equal(containerInstanceMetricDefinition.ContainerGroup, deserializedContainerInstanceMetricDefinition.ContainerGroup);
     Assert.NotNull(deserializedMetricDefinition.AzureMetricConfiguration);
     Assert.Equal(containerInstanceMetricDefinition.AzureMetricConfiguration.MetricName, deserializedMetricDefinition.AzureMetricConfiguration.MetricName);
     Assert.NotNull(deserializedMetricDefinition.AzureMetricConfiguration.Aggregation);
     Assert.Equal(containerInstanceMetricDefinition.AzureMetricConfiguration.Aggregation.Type, deserializedMetricDefinition.AzureMetricConfiguration.Aggregation.Type);
     Assert.Equal(containerInstanceMetricDefinition.AzureMetricConfiguration.Aggregation.Interval, deserializedMetricDefinition.AzureMetricConfiguration.Aggregation.Interval);
 }
Exemple #9
0
 private static void AssertServiceBusQueueMetricDefinition(ServiceBusQueueMetricDefinition deserializedServiceBusMetricDefinition, ServiceBusQueueMetricDefinition serviceBusMetricDefinition, MetricDefinition deserializedMetricDefinition)
 {
     Assert.NotNull(deserializedServiceBusMetricDefinition);
     Assert.Equal(serviceBusMetricDefinition.Namespace, deserializedServiceBusMetricDefinition.Namespace);
     Assert.Equal(serviceBusMetricDefinition.QueueName, deserializedServiceBusMetricDefinition.QueueName);
     Assert.NotNull(deserializedMetricDefinition.AzureMetricConfiguration);
     Assert.Equal(serviceBusMetricDefinition.AzureMetricConfiguration.MetricName, deserializedMetricDefinition.AzureMetricConfiguration.MetricName);
     Assert.NotNull(deserializedMetricDefinition.AzureMetricConfiguration.Aggregation);
     Assert.Equal(serviceBusMetricDefinition.AzureMetricConfiguration.Aggregation.Type, deserializedMetricDefinition.AzureMetricConfiguration.Aggregation.Type);
     Assert.Equal(serviceBusMetricDefinition.AzureMetricConfiguration.Aggregation.Interval, deserializedMetricDefinition.AzureMetricConfiguration.Aggregation.Interval);
 }