public MetricDefinition(PrometheusMetricDefinition prometheusMetricDefinition, Scraping scraping, AzureMetricConfiguration azureMetricConfiguration, ResourceType resourceType, List <IAzureResourceDefinition> resources) { AzureMetricConfiguration = azureMetricConfiguration; PrometheusMetricDefinition = prometheusMetricDefinition; Scraping = scraping; ResourceType = resourceType; Resources = resources; }
private List <string> ValidateAzureMetricConfiguration(AzureMetricConfiguration azureMetricConfiguration) { var errorMessages = new List <string>(); if (azureMetricConfiguration == null) { errorMessages.Add("Invalid azure metric configuration is configured"); return(errorMessages); } if (string.IsNullOrWhiteSpace(azureMetricConfiguration.MetricName)) { errorMessages.Add("No metric name for Azure is configured"); } return(errorMessages); }
/// <summary> /// Creates a new instance of the <see cref="ScrapeDefinition{TResourceDefinition}"/> class. /// </summary> /// <param name="azureMetricConfiguration">Configuration about the Azure Monitor metric to scrape</param> /// <param name="prometheusMetricDefinition">The details of the prometheus metric that will be created.</param> /// <param name="scraping">The scraping model.</param> /// <param name="resource">The resource to scrape.</param> /// <param name="resourceGroupName"> /// The name of the resource group containing the resource to scrape. This should contain the global /// resource group name if none is overridden at the resource level. /// </param> public ScrapeDefinition( AzureMetricConfiguration azureMetricConfiguration, PrometheusMetricDefinition prometheusMetricDefinition, Scraping scraping, TResourceDefinition resource, string resourceGroupName) { Guard.NotNull(azureMetricConfiguration, nameof(azureMetricConfiguration)); Guard.NotNull(prometheusMetricDefinition, nameof(prometheusMetricDefinition)); Guard.NotNull(scraping, nameof(scraping)); Guard.NotNull(resource, nameof(resource)); Guard.NotNull(resourceGroupName, nameof(resourceGroupName)); AzureMetricConfiguration = azureMetricConfiguration; PrometheusMetricDefinition = prometheusMetricDefinition; Scraping = scraping; Resource = resource; ResourceGroupName = resourceGroupName; }
public List <string> Validate(AzureMetricConfiguration azureMetricConfiguration) { var errorMessages = new List <string>(); if (azureMetricConfiguration == null) { errorMessages.Add("Invalid azure metric configuration is configured"); return(errorMessages); } if (string.IsNullOrWhiteSpace(azureMetricConfiguration.MetricName)) { errorMessages.Add("No metric name for Azure is configured"); } var metricAggregationValidator = new MetricAggregationValidator(_metricDefaults); var metricsAggregationErrorMessages = metricAggregationValidator.Validate(azureMetricConfiguration.Aggregation); errorMessages.AddRange(metricsAggregationErrorMessages); return(errorMessages); }
public IEnumerable <string> Validate(AzureMetricConfiguration azureMetricConfiguration) { var errorMessages = new List <string>(); if (azureMetricConfiguration == null) { errorMessages.Add("Invalid azure metric configuration is configured"); return(errorMessages); } if (string.IsNullOrWhiteSpace(azureMetricConfiguration.MetricName)) { errorMessages.Add("No metric name for Azure is configured"); } // Validate limit, if configured if (azureMetricConfiguration.Limit != null) { if (azureMetricConfiguration.Limit > Promitor.Core.Defaults.MetricDefaults.Limit) { errorMessages.Add($"Limit cannot be higher than {Promitor.Core.Defaults.MetricDefaults.Limit}"); } if (azureMetricConfiguration.Limit <= 0) { errorMessages.Add("Limit has to be at least 1"); } } var metricAggregationValidator = new MetricAggregationValidator(_metricDefaults); var metricsAggregationErrorMessages = metricAggregationValidator.Validate(azureMetricConfiguration.Aggregation); errorMessages.AddRange(metricsAggregationErrorMessages); return(errorMessages); }