示例#1
0
        private EventDataParsed ParseDependencyEvent(EventData eventData, EventMetadata dependencyMetadata)
        {
            var result = DependencyData.TryGetData(eventData, dependencyMetadata, out DependencyData dependencyData);

            if (result.Status != DataRetrievalStatus.Success)
            {
                _healthReporter.ReportProblem($"{nameof(SqlTableOutput)}: {result.Message}", EventFlowContextIdentifiers.Output);
                return(null);
            }

            var dependencyEventData = eventData.DeepClone();

            if (dependencyData.Duration != null)
            {
                dependencyEventData.Payload[nameof(DependencyData.Duration)] = dependencyData.Duration;
            }
            if (dependencyData.IsSuccess != null)
            {
                dependencyEventData.Payload[nameof(DependencyData.IsSuccess)] = dependencyData.IsSuccess;
            }
            if (dependencyData.ResponseCode != null)
            {
                dependencyEventData.Payload[nameof(DependencyData.ResponseCode)] = dependencyData.ResponseCode;
            }
            if (dependencyData.Target != null)
            {
                dependencyEventData.Payload[nameof(DependencyData.Target)] = dependencyData.Target;
            }
            if (dependencyData.DependencyType != null)
            {
                dependencyEventData.Payload[nameof(DependencyData.DependencyType)] = dependencyData.DependencyType;
            }
            return(new DependencyDataParsed(dependencyEventData, ParseEventCustomProperties(eventData)));
        }
        private BulkIndexOperation <EventData> CreateRequestOperation(
            EventData eventData,
            EventMetadata requestMetadata,
            string currentIndexName,
            string documentTypeName)
        {
            var result = RequestData.TryGetData(eventData, requestMetadata, out RequestData requestData);

            if (result.Status != DataRetrievalStatus.Success)
            {
                this.healthReporter.ReportProblem("ElasticSearchOutput: " + result.Message, EventFlowContextIdentifiers.Output);
                return(null);
            }

            var requestEventData = eventData.DeepClone();

            requestEventData.Payload[nameof(RequestData.RequestName)] = requestData.RequestName;
            if (requestData.Duration != null)
            {
                requestEventData.Payload[nameof(RequestData.Duration)] = requestData.Duration;
            }
            if (requestData.IsSuccess != null)
            {
                requestEventData.Payload[nameof(RequestData.IsSuccess)] = requestData.IsSuccess;
            }
            if (requestData.ResponseCode != null)
            {
                requestEventData.Payload[nameof(RequestData.ResponseCode)] = requestData.ResponseCode;
            }
            var operation = CreateOperation(requestEventData, currentIndexName, documentTypeName);

            return(operation);
        }
示例#3
0
        private EventDataParsed ParseRequestEvent(EventData eventData, EventMetadata requestMetadata)
        {
            var result = RequestData.TryGetData(eventData, requestMetadata, out RequestData requestData);

            if (result.Status != DataRetrievalStatus.Success)
            {
                _healthReporter.ReportProblem($"{nameof(SqlTableOutput)}: {result.Message}", EventFlowContextIdentifiers.Output);
                return(null);
            }

            var requestEventData = eventData.DeepClone();

            requestEventData.Payload[nameof(RequestData.RequestName)] = requestData.RequestName;
            if (requestData.Duration != null)
            {
                requestEventData.Payload[nameof(RequestData.Duration)] = requestData.Duration;
            }
            if (requestData.IsSuccess != null)
            {
                requestEventData.Payload[nameof(RequestData.IsSuccess)] = requestData.IsSuccess;
            }
            if (requestData.ResponseCode != null)
            {
                requestEventData.Payload[nameof(RequestData.ResponseCode)] = requestData.ResponseCode;
            }
            return(new RequestDataParsed(requestEventData, ParseEventCustomProperties(eventData)));
        }
示例#4
0
        private EventDataParsed ParseExceptionEvent(EventData eventData, EventMetadata exceptionMetadata)
        {
            var result = ExceptionData.TryGetData(eventData, exceptionMetadata, out ExceptionData exceptionData);

            if (result.Status != DataRetrievalStatus.Success)
            {
                _healthReporter.ReportProblem($"{nameof(SqlTableOutput)}: {result.Message}", EventFlowContextIdentifiers.Output);
                return(null);
            }

            var exceptionEventData = eventData.DeepClone();

            exceptionEventData.Payload[nameof(ExceptionData.Exception)] = exceptionData.Exception.ToString();
            return(new ExceptionDataParsed(exceptionEventData, ParseEventCustomProperties(eventData)));
        }
示例#5
0
        private EventDataParsed ParseMetricEvent(EventData eventData, EventMetadata metricMetadata)
        {
            var result = MetricData.TryGetData(eventData, metricMetadata, out MetricData metricData);

            if (result.Status != DataRetrievalStatus.Success)
            {
                _healthReporter.ReportProblem($"{nameof(SqlTableOutput)}: {result.Message}", EventFlowContextIdentifiers.Output);
                return(null);
            }

            var metricEventData = eventData.DeepClone();

            metricEventData.Payload[nameof(MetricData.MetricName)] = metricData.MetricName;
            metricEventData.Payload[nameof(MetricData.Value)]      = metricData.Value;
            return(new MetricDataParsed(metricEventData, ParseEventCustomProperties(eventData)));
        }
        private BulkIndexOperation <EventData> CreateExceptionOperation(EventData eventData, EventMetadata exceptionMetadata, string currentIndexName)
        {
            var result = ExceptionData.TryGetData(eventData, exceptionMetadata, out ExceptionData exceptionData);

            if (result.Status != DataRetrievalStatus.Success)
            {
                this.healthReporter.ReportProblem("ElasticSearchOutput: " + result.Message, EventFlowContextIdentifiers.Output);
                return(null);
            }

            var exceptionEventData = eventData.DeepClone();

            exceptionEventData.Payload[nameof(ExceptionData.Exception)] = exceptionData.Exception.ToString();
            var operation = CreateOperation(exceptionEventData, currentIndexName);

            return(operation);
        }
        private BulkIndexOperation <EventData> CreateMetricOperation(EventData eventData, EventMetadata metricMetadata, string currentIndexName)
        {
            var result = MetricData.TryGetData(eventData, metricMetadata, out MetricData metricData);

            if (result.Status != DataRetrievalStatus.Success)
            {
                this.healthReporter.ReportProblem("ElasticSearchOutput: " + result.Message, EventFlowContextIdentifiers.Output);
                return(null);
            }

            var metricEventData = eventData.DeepClone();

            metricEventData.Payload[nameof(MetricData.MetricName)] = metricData.MetricName;
            metricEventData.Payload[nameof(MetricData.Value)]      = metricData.Value;
            var operation = CreateOperation(metricEventData, currentIndexName);

            return(operation);
        }
        private BulkIndexOperation <EventData> CreateDependencyOperation(EventData eventData, EventMetadata dependencyMetadata, string currentIndexName)
        {
            var result = DependencyData.TryGetData(eventData, dependencyMetadata, out DependencyData dependencyData);

            if (result.Status != DataRetrievalStatus.Success)
            {
                this.healthReporter.ReportProblem("ElasticSearchOutput: " + result.Message, EventFlowContextIdentifiers.Output);
                return(null);
            }

            var dependencyEventData = eventData.DeepClone();

            if (dependencyData.Duration != null)
            {
                dependencyEventData.Payload[nameof(DependencyData.Duration)] = dependencyData.Duration;
            }
            if (dependencyData.IsSuccess != null)
            {
                dependencyEventData.Payload[nameof(DependencyData.IsSuccess)] = dependencyData.IsSuccess;
            }
            if (dependencyData.ResponseCode != null)
            {
                dependencyEventData.Payload[nameof(DependencyData.ResponseCode)] = dependencyData.ResponseCode;
            }
            if (dependencyData.Target != null)
            {
                dependencyEventData.Payload[nameof(DependencyData.Target)] = dependencyData.Target;
            }
            if (dependencyData.DependencyType != null)
            {
                dependencyEventData.Payload[nameof(DependencyData.DependencyType)] = dependencyData.DependencyType;
            }
            var operation = CreateOperation(dependencyEventData, currentIndexName);

            return(operation);
        }
示例#9
0
        private IEnumerable <IBulkOperation> GetCreateOperationsForEvent(EventData eventData, string currentIndexName, string documentTypeName)
        {
            bool reportedAsMetricOrRequest = false;
            BulkCreateOperation <EventData> operation;

            // Synthesize a separate record for each metric and request metadata associated with the event
            IReadOnlyCollection <EventMetadata> metadataSet;

            if (eventData.TryGetMetadata(MetricData.MetricMetadataKind, out metadataSet))
            {
                foreach (var metricMetadata in metadataSet)
                {
                    MetricData metricData;
                    var        result = MetricData.TryGetData(eventData, metricMetadata, out metricData);
                    if (result.Status != DataRetrievalStatus.Success)
                    {
                        this.healthReporter.ReportProblem("ElasticSearchOutput: " + result.Message, EventFlowContextIdentifiers.Output);
                        continue;
                    }

                    var metricEventData = eventData.DeepClone();
                    metricEventData.Payload[nameof(MetricData.MetricName)] = metricData.MetricName;
                    metricEventData.Payload[nameof(MetricData.Value)]      = metricData.Value;
                    operation                 = new BulkCreateOperation <EventData>(metricEventData);
                    operation.Index           = currentIndexName;
                    operation.Type            = documentTypeName;
                    reportedAsMetricOrRequest = true;
                    yield return(operation);
                }
            }

            if (eventData.TryGetMetadata(RequestData.RequestMetadataKind, out metadataSet))
            {
                foreach (var requestMetadata in metadataSet)
                {
                    RequestData requestData;
                    var         result = RequestData.TryGetData(eventData, requestMetadata, out requestData);
                    if (result.Status != DataRetrievalStatus.Success)
                    {
                        this.healthReporter.ReportProblem("ElasticSearchOutput: " + result.Message, EventFlowContextIdentifiers.Output);
                        continue;
                    }

                    var requestEventData = eventData.DeepClone();
                    requestEventData.Payload[nameof(RequestData.RequestName)] = requestData.RequestName;
                    if (requestData.Duration != null)
                    {
                        requestEventData.Payload[nameof(RequestData.Duration)] = requestData.Duration;
                    }
                    if (requestData.IsSuccess != null)
                    {
                        requestEventData.Payload[nameof(RequestData.IsSuccess)] = requestData.IsSuccess;
                    }
                    if (requestData.ResponseCode != null)
                    {
                        requestEventData.Payload[nameof(RequestData.ResponseCode)] = requestData.ResponseCode;
                    }
                    operation                 = new BulkCreateOperation <EventData>(requestEventData);
                    operation.Index           = currentIndexName;
                    operation.Type            = documentTypeName;
                    reportedAsMetricOrRequest = true;
                    yield return(operation);
                }
            }

            if (!reportedAsMetricOrRequest)
            {
                operation       = new BulkCreateOperation <EventData>(eventData);
                operation.Index = currentIndexName;
                operation.Type  = documentTypeName;
                yield return(operation);
            }
        }