Пример #1
0
 public MetricDefinition(PrometheusMetricDefinition prometheusMetricDefinition,
                         Scraping scraping,
                         AzureMetricConfiguration azureMetricConfiguration,
                         ResourceType resourceType,
                         List <IAzureResourceDefinition> resources)
 {
     AzureMetricConfiguration   = azureMetricConfiguration;
     PrometheusMetricDefinition = prometheusMetricDefinition;
     Scraping     = scraping;
     ResourceType = resourceType;
     Resources    = resources;
 }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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;
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }