private static DogStatsdService CreateService(
            TemporaryPath temporaryPath,
            HostnameProvider hostnameProvider = HostnameProvider.Property)
        {
            var serverName      = StatsdBuilder.UnixDomainSocketPrefix + temporaryPath.Path;
            var dogstatsdConfig = new StatsdConfig {
                StatsdMaxUnixDomainSocketPacketSize = 1000
            };

            switch (hostnameProvider)
            {
            case HostnameProvider.Property: dogstatsdConfig.StatsdServerName = serverName; break;

            case HostnameProvider.Environment:
            {
                Environment.SetEnvironmentVariable(StatsdConfig.AgentHostEnvVar, serverName);
                break;
            }
            }

            var dogStatsdService = new DogStatsdService();

            dogStatsdService.Configure(dogstatsdConfig);

            return(dogStatsdService);
        }
Exemple #2
0
        public async Task Invoke(HttpContext context)
        {
            using (var spanBuilder = Trace.BeginSpan())
            {
                var url = GetUrl(context.Request);
                spanBuilder.SetAnnotation(TracingAnnotationNames.Operation, GetOperationName(context.Request.Method, url));
                spanBuilder.SetAnnotation(TracingAnnotationNames.Kind, "http-server");
                spanBuilder.SetAnnotation(TracingAnnotationNames.Service, serviceName);
                spanBuilder.SetAnnotation(TracingAnnotationNames.Host, HostnameProvider.Get());
                spanBuilder.SetAnnotation(TracingAnnotationNames.HttpUrl, url.ToStringWithoutQuery());
                if (context.Request.ContentLength.HasValue)
                {
                    spanBuilder.SetAnnotation(TracingAnnotationNames.HttpRequestContentLength, context.Request.ContentLength);
                }

                try
                {
                    await next.Invoke(context).ConfigureAwait(false);

                    if (context.Response.ContentLength.HasValue)
                    {
                        spanBuilder.SetAnnotation(TracingAnnotationNames.HttpResponseContentLength, context.Response.ContentLength);
                    }
                    spanBuilder.SetAnnotation(TracingAnnotationNames.HttpCode, context.Response.StatusCode);
                }
                catch
                {
                    spanBuilder.SetAnnotation(TracingAnnotationNames.HttpCode, (int)HttpStatusCode.InternalServerError);
                    context.Response.StatusCode = 500;
                }
            }
        }
        public AddServerForm(ServerRepository serverRepository,
                             HostnameProvider hostnameProvider,
                             WindowsMacAddressProvider windowsMacAddressProvider,
                             ErrorBoxHelper errorBoxHelper)
        {
            this.errorBoxHelper            = errorBoxHelper;
            this.serverRepository          = serverRepository;
            this.hostnameProvider          = hostnameProvider;
            this.windowsMacAddressProvider = windowsMacAddressProvider;

            InitializeComponent();
            Translator.Translate(this);
        }
 public void SendSingleMetric(HostnameProvider hostnameProvider)
 {
     using (var socket = CreateSocketServer(_temporaryPath))
     {
         using (var service = CreateService(_temporaryPath, hostnameProvider))
         {
             var metric = "gas_tank.level";
             var value  = 0.75;
             service.Gauge(metric, value);
             Assert.AreEqual($"{metric}:{value}|g", ReadFromServer(socket));
         }
     }
 }
Exemple #5
0
        public void Log(LogEvent logEvent)
        {
            if (airlockClient == null || string.IsNullOrEmpty(routingKey))
            {
                return;
            }

            var logEventData = new LogEventData
            {
                Timestamp  = DateTimeOffset.UtcNow, // todo (spaceorc, 15.02.2018) возможно, надо сделать поле Timestamp в logEvent?
                Level      = logEvent.Level,
                Message    = LogEventFormatter.FormatMessage(logEvent.MessageTemplate, logEvent.MessageParameters),
                Exceptions = logEvent.Exception.Parse(), // todo (andrew, 17.01.2018): maybe truncate if serialized Exceptions list has size > 32 kb
                Properties = logEvent.Properties.ToDictionary(x => x.Key, x => x.Value.ToString())
            };

            // todo (spaceorc, 13.10.2017) make "host" constant somewhere in Vostok.Core/LogPropertyNames.cs
            logEventData.Properties["host"] = HostnameProvider.Get();

            airlockClient.Push(routingKey, logEventData, logEventData.Timestamp);
        }
Exemple #6
0
        public void Emit(SerilogEvent logEvent)
        {
            var airlockClient = getAirlockClient();
            var routingKey    = getRoutingKey();

            if (airlockClient == null || string.IsNullOrEmpty(routingKey))
            {
                return;
            }
            var logEventData = new LogEventData
            {
                Timestamp  = logEvent.Timestamp,
                Level      = TranslateLevel(logEvent.Level),
                Message    = logEvent.MessageTemplate.Render(logEvent.Properties).Truncate(maxMessageLength),
                Exceptions = logEvent.Exception.Parse(), // todo (andrew, 17.01.2018): maybe truncate if serialized Exceptions list has size > 32 kb
                Properties = logEvent.Properties.ToDictionary(x => x.Key, x => x.Value.ToString())
            };

            // todo (spaceorc, 13.10.2017) make "host" constant somewhere in Vostok.Core/LogPropertyNames.cs
            logEventData.Properties["host"] = HostnameProvider.Get();

            airlockClient.Push(routingKey, logEventData, logEventData.Timestamp);
        }
 private void EnrichWithHostname()
 {
     SetTag(MetricsTagNames.Host, HostnameProvider.Get());
 }