public void CreateEvent(RequestTracerEventType eventType, DateTime startInstant, RequestEventDetails details)
        {
            try
            {
                if (!IsPerformanceMonitorEnabled() ||
                    Convert.ToInt32(details[RequestEventDetails.DURATION]) < EventCreationThreshold(eventType) ||
                    (tracer.MainEventType == RequestTracerEventType.ExposedIntegrationExecuted && !IsExposedIntegrationExecutedEnabled()))
                {
                    return;
                }

                RequestEvent newEvent = new RequestEvent(
                    startInstant,
                    tracer.RequestKey,
                    eventType.ToString(),
                    tracer.ModuleKey,
                    tracer.ModuleName,
                    tracer.ApplicationKey,
                    tracer.ApplicationName,
                    details.ToString()
                    );
                _requestEvents.Add(newEvent);
            }
            catch (Exception e)
            {
                HandleException(e);
            }
        }
コード例 #2
0
        private int AggregateExternalCallsByType(RequestTracerEventType eventType, string aggregateType)
        {
            IEnumerable <ESpaceExternalCallTracer> externalExecutionTracer = externalCalls.Values.
                                                                             Where((tracer) => tracer.EventType == eventType);

            return(externalExecutionTracer.Aggregate(0, (acc, tracer) => acc + Convert.ToInt32(tracer.Details[aggregateType])));
        }
        private int GetEventThreshold(RequestTracerEventType type)
        {
            switch (type)
            {
            case RequestTracerEventType.QueryExecuted: return(DatabaseAccess.SlowQueryThreshold);

            case RequestTracerEventType.ExtensionExecuted: return(Settings.GetInt(Settings.Configs.Log_SlowExtensionCallInMs));

            case RequestTracerEventType.ConsumedIntegrationExecuted: return(Settings.GetInt(Settings.Configs.Log_SlowIntegrationThresholdInMs));

            default: return(0);
            }
        }
コード例 #4
0
        private ESpaceExternalCallTracer AddNewExternalCallTracer(RequestTracerEventType eventType, string objectKey, string objectName, string ownerESpaceKey, string ownerEspaceName, DateTime instant)
        {
            ESpaceExternalCallTracer result = new ESpaceExternalCallTracer
            {
                StartInstant = instant,
                EventType    = eventType,
                Details      = new ESpaceExternalCallDetails(objectKey, objectName, ownerESpaceKey, ownerEspaceName, CommonRequestEventDetails)
            };

            result.Details[RequestEventDetails.END_POINT_NAME] = runningEndpointName;
            result.Details[RequestEventDetails.END_POINT_KEY]  = runningEndpointKey;
            result.Details[RequestEventDetails.ACTION_NAME]    = runningActionName;
            result.Details[RequestEventDetails.ACTION_KEY]     = runningActionKey;

            externalCalls.Add(
                GetExecutionKey(objectKey, ownerESpaceKey),
                result
                );

            return(result);
        }
コード例 #5
0
        private void RegisterExternalCall(RequestTracerEventType eventType, string objectKey, string objectName, string ownerESpaceKey, string ownerEspaceName, int executionDuration, DateTime startTime)
        {
            try
            {
                if (objectName == "" || objectKey == "" || executionDuration < 0)
                {
                    return;
                }

                if (!externalCalls.ContainsKey(GetExecutionKey(objectKey, ownerESpaceKey)))
                {
                    AddNewExternalCallTracer(eventType, objectKey, objectName, ownerESpaceKey, ownerEspaceName, startTime);
                }

                externalCalls[GetExecutionKey(objectKey, ownerESpaceKey)].Details.AddExecution(executionDuration);
            }
            catch (Exception e)
            {
                HandleRequestTracerException(e);
            }
        }
 public int CountEventsOfType(RequestTracerEventType eventType)
 {
     return(_requestEvents.Where(reqEvent => reqEvent.RequestEventName == eventType.ToString()).Count());
 }