Exemple #1
0
        public void CloudProvider_Gcp_Should_Register_Gcp_Provider()
        {
            var providers = new CloudMetadataProviderCollection(SupportedValues.CloudProviderGcp, new NoopLogger());

            providers.Count.Should().Be(1);
            providers.TryGetValue(SupportedValues.CloudProviderGcp, out var provider).Should().BeTrue();
            provider.Should().BeOfType <GcpCloudMetadataProvider>();
        }
Exemple #2
0
        public void DefaultCloudProvider_Registers_Aws_Gcp_Azure_Providers()
        {
            var providers = new CloudMetadataProviderCollection(DefaultValues.CloudProvider, new NoopLogger());

            providers.Count.Should().Be(3);
            providers.TryGetValue(AwsCloudMetadataProvider.Name, out _).Should().BeTrue();
            providers.TryGetValue(GcpCloudMetadataProvider.Name, out _).Should().BeTrue();
            providers.TryGetValue(AzureCloudMetadataProvider.Name, out _).Should().BeTrue();
            providers.Select(p => p.Provider).Should().Equal("aws", "gcp", "azure");
        }
Exemple #3
0
        public void CloudProvider_Azure_Should_Register_Azure_Providers()
        {
            var providers = new CloudMetadataProviderCollection(SupportedValues.CloudProviderAzure, new NoopLogger());

            providers.Count.Should().Be(2);
            providers.TryGetValue(SupportedValues.CloudProviderAzure, out var provider).Should().BeTrue();
            provider.Should().BeOfType <AzureCloudMetadataProvider>();

            providers.TryGetValue(AzureAppServiceMetadataProvider.Name, out provider).Should().BeTrue();
            provider.Should().BeOfType <AzureAppServiceMetadataProvider>();
        }
Exemple #4
0
        public void CloudProvider_None_Should_Not_Register_Any_Providers()
        {
            var providers = new CloudMetadataProviderCollection(SupportedValues.CloudProviderNone, new NoopLogger());

            providers.Count.Should().Be(0);
        }
        public PayloadSenderV2(
            IApmLogger logger,
            IConfigSnapshot config,
            Service service,
            Api.System system,
            IApmServerInfo apmServerInfo,
            HttpMessageHandler httpMessageHandler = null,
            string dbgName = null,
            bool isEnabled = true,
            IEnvironmentVariables environmentVariables = null
            )
            : base(isEnabled, logger, ThisClassName, service, config, httpMessageHandler)
        {
            if (!isEnabled)
            {
                return;
            }

            _logger = logger?.Scoped(ThisClassName + (dbgName == null ? "" : $" (dbgName: `{dbgName}')"));
            _payloadItemSerializer = new PayloadItemSerializer();
            _configSnapshot        = config;

            _intakeV2EventsAbsoluteUrl = BackendCommUtils.ApmServerEndpoints.BuildIntakeV2EventsAbsoluteUrl(config.ServerUrl);

            System = system;

            _cloudMetadataProviderCollection = new CloudMetadataProviderCollection(config.CloudProvider, _logger, environmentVariables);
            _apmServerInfo = apmServerInfo;
            _metadata      = new Metadata {
                Service = service, System = System
            };
            foreach (var globalLabelKeyValue in config.GlobalLabels)
            {
                _metadata.Labels.Add(globalLabelKeyValue.Key, globalLabelKeyValue.Value);
            }

            if (config.MaxQueueEventCount < config.MaxBatchEventCount)
            {
                _logger?.Error()
                ?.Log(
                    "MaxQueueEventCount is less than MaxBatchEventCount - using MaxBatchEventCount as MaxQueueEventCount."
                    + " MaxQueueEventCount: {MaxQueueEventCount}."
                    + " MaxBatchEventCount: {MaxBatchEventCount}.",
                    config.MaxQueueEventCount, config.MaxBatchEventCount);

                _maxQueueEventCount = config.MaxBatchEventCount;
            }
            else
            {
                _maxQueueEventCount = config.MaxQueueEventCount;
            }

            _flushInterval = config.FlushInterval;

            _logger?.Debug()
            ?.Log(
                "Using the following configuration options:"
                + " Events intake API absolute URL: {EventsIntakeAbsoluteUrl}"
                + ", FlushInterval: {FlushInterval}"
                + ", MaxBatchEventCount: {MaxBatchEventCount}"
                + ", MaxQueueEventCount: {MaxQueueEventCount}"
                , _intakeV2EventsAbsoluteUrl, _flushInterval.ToHms(), config.MaxBatchEventCount, _maxQueueEventCount);

            _eventQueue = new BatchBlock <object>(config.MaxBatchEventCount);

            SetUpFilters(TransactionFilters, SpanFilters, ErrorFilters, apmServerInfo, logger);
            StartWorkLoop();
        }