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); }
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); }
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); }
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); }
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); }
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); }
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); }