Monitoring Database Event Mappings
This topic contains the mapping of the fields from the staging table in the monitoring database into the event views for each of the event types emitted by the Windows Workflow Foundation (WF) runtime. This information is needed when configuring a non-SQL monitoring database for use with Windows Server AppFabric. When using SQL Server, all the views and the staging table are created by the AppFabric configuration process. In a non-SQL database implementation, however, you will need to manually create these views and the staging table. When an event occurs in a WCF or WF service managed by AppFabric, the Event Collection service writes a row corresponding to that event to the ASStagingTable table in the monitoring database. That data needs to be mapped into the corresponding view so it can be displayed using the AppFabric Dashboard. This mapping can occur using whatever mechanism you choose to get the data from the staging table into any tables that support the monitoring views. For instance, you could use a database trigger or job.
This document only contains a few events and view mappings. For a complete set of events and their associated mappings, download the AppFabric Database Event Mappings. For more information on this mapping process, see How To: Use a Non-SQL Server Monitoring Database and Monitoring Database Views and Tables.
Common Mapping for All Events
ASStagingTable Table
Every event will populate the following fields in the ASStagingTable table.
ASStagingTable Columns | Event Data |
---|---|
EventTypeId |
ID of the emitted event |
E2EActivityId |
End-to-end activity ID emitted with this event |
Computer |
Machine name where the event is emitted |
EventSource |
Virtual path for this event |
ProcessId |
Process ID |
TraceLevelId |
Trace level for the emitted event |
TimeCreated |
Time created for this event |
ASEventSources View
Almost all events will populate the ASEventSources view (the exception is event ID 499).
Column Name | Source of the data |
---|---|
ID |
ID for the event source. This is used by other views to get the details for the event source. |
Name |
Name of the service extracted from the EventSource column in the ASStagingTable |
Computer |
Mapped to Computer in the ASStagingTable |
Site |
Name of the site extracted from the EventSource column in the ASStagingTable |
VirtualPath |
Name of the full VirtualPath extracted from the EventSource column in the ASStagingTable |
ApplicationVirtualPath |
Name of the Application Virtual Path extracted from the EventSource column in the ASStagingTable |
ServiceVirtualPath |
Name of the Service Virtual Path extracted from the EventSource column in the ASStagingTable |
ASEvents View
Almost all events will populate the ASEvents view (the exception is event ID 499).
Column Name | Source of data |
---|---|
EventTypeId |
EventTypeId mapped to ASStagingTable.EventTypeId |
EventName |
Name of the event |
EventVersion |
Version of the event. Currently 0. |
EventSourceID |
Mapped to ID for the event source in the ASEventSources views |
ProcessId |
Mapped to ASStagingTable.ProcessId |
TraceLevelId |
Mapped to ASStagingTable.TraceLevelID |
TraceLevel |
String representation of the TraceLevelId |
E2EActivityId |
Mapped to ASStagingTable.E2EActivityId |
TimeCreated |
Mapped to ASStagingTable.TimeCreated |
Events
Here are some of the event mappings to implement a monitoring database.
Event ID 100
In addition to the common columns, the Event Collection service populates the following columns in the ASStagingTable table for Event ID 100.
Event Data | ASStagingTable Columns |
---|---|
TypeName |
Data1UniqueId |
RecordNumber |
Data1BigInt |
ActivityRootId |
Data3Str |
State |
Data2Str |
Tracking Profile Name |
Data1Str |
Annotations |
CustomAnnotations |
The data from event 100 populates the following views: ASEventSources, ASWfEvents, ASEvents, ASWfTrackingProfiles, ASWfEventAnnotations.The mapping of data from ASStagingTable to the common views ASEventSources and ASEvents is specified in the common mappings.
View: ASWfEventAnnotations
This view is updated with the annotations that are emitted with WF tracking events from the WF services.
Column Name | Populated Data |
---|---|
Id |
Unique identifier for this event row |
AnnotationSetId |
Key to find the WF event that emitted the annotation |
Name |
Name of the annotation obtained from ASStagingTable.CustomAnnotations |
Value |
Value of the annotation obtained from ASStagingTable.CustomAnnotations |
Extracting Annotations Name and Value from ASStagingTable.CustomAnnotations
Annotations are stored as follows. The annotations are emitted with this event. The values of annotations are stored in this format.
< items >
< item name = "annotationName" type="System.String">annotationValue</item>
</items >
If no annotations are specified, then the string contains </items>. The name
and value
are extracted by parsing the value stored in the ASStagingTable.CustomAnnotations column.
View ASWfTrackingProfiles
Column Name | Populated Data |
---|---|
Id |
Unique ID for the tracking profile |
Name |
Mapped to ASStagingTable-> Column ASStagingTable.Data1Str |
View ASWfEvents
Only columns populated for this event in this view are specified. All other columns have a NULL value. The value specifically populated by the event is specified in bold. This view is created on the tracking events emitted for WF instances.
Column Name | Populated Data |
---|---|
Id |
Generated unique ID |
EventTypeId |
100 (Mapped To: ASStagingTable-> Column EventTypeId) |
EventType |
“WorkflowInstanceRecord” |
EventVersion |
0 |
EventSourceId |
ID in ASEventSources view |
ProcessId |
Mapped to ASStagingTable-> Column: ASStagingTable.ProcessId |
WorkflowInstanceId |
Mapped to ASStagingTable-> Column: ASStagingTable.Data1UniqueId |
TrackingProfileId |
Unique ID of tracking profile mapped to the ID column in the ASWfTrackingProfiles view. Both this and the ASWfTrackingProfiles are updated in a single transaction. |
E2EActivityId |
Mapped to ASStagingTable-> Column: ASStagingTable.E2EActivityId |
TraceLevelId |
Mapped to ASStagingTable-> Column: ASStagingTable.TraceLevelId |
TraceLevel |
Dependent on TraceLevelId: 0:”LogAlways”1:”Critical”2:”Error”3:”Warning”4:”Information”5:”Verbose” |
RecordNumber |
Mapped to ASStagingTable-> Column: ASStagingTable.Data1BigInt |
AnnotationSetId |
Unique ID of Annotation Set mapped to the AnnotationSetId column in the ASWfEventAnnotations view. Both this and the ASWfEventAnnotations are updated in a single transaction. |
TimeCreated |
Mapped to ASStagingTable-> Column: ASStagingTable.TimeCreated |
ActivityRootId |
Mapped to ASStagingTable-> Column: ASStagingTable.Data3Str |
State |
Mapped to ASStagingTable-> Column: ASStagingTable.Data2Str |
View: ASWfInstances
This view is updated with the instance state for the active WF. This view is updated after the ASWfEvents view but within the same transaction. When an event is added to the ASWfEvents view, this view needs to be updated simultaneously with the values inserted in the ASWfEvents view, and therefore in the same transaction. There is only one row per workflow instance. With each event that gets added to the WFEvents table the row for the workflow instance is modified. A row is added/updated in this table only under certain conditions. If state = “Deleted” or “Unloaded” (ASWfEvents.State) for an event with ID 100 then a row is not added in this table.
Column Name | Populated Data |
---|---|
Id |
Unique ID for this entry |
WorkflowInstanceId |
Mapped to ASStagingTable-> Column: ASStagingTable.Data1UniqueId Added only once for a unique instance. |
LastEventSourceId |
The last eventSourceID that modified this row. Mapped to ASWfEvents.EventSourceId. |
LastEventStatus |
Mapped to ASWfEvents view-> Column: ASWfEvents.State. Inserted/updated only if state is not equal to “Deleted” or “Unloaded”. If state == “Deleted” or “Unloaded” then a row is not added in this table. |
StartTime |
Mapped to ASWfEvents-> Column: ASWfEvents.TimeCreated. This is the TimeCreated for the event with the lowest RecordNumber for this workflow instance. |
LastModifiedTime |
Mapped to ASWfEvents -> Column: ASWfEvents.TimeCreated. Updated when state changes. Also note that to update this column the RecordNumber of the WorkflowRecord is greater the previous RecordNumber that updated this value. (Possible implementation is to maintain a temporary table that maps the instance ID in this table to the RecordNumber of the Workflow Event Record from ASWfEvents that modified it. When a new event tries to update this row for this instance, check if the RecordNumber is greater than the last modified RecordNumber.) |
CurrentDuration |
Duration for the running workflow (LastModifiedTime – StartTime) |
ExceptionCount |
Number of exceptions encountered by the WF. Not updated by Event ID 100. |
LastAbortedTime |
Not updated by Event ID 100 |
For more information about this event, see 100 - WorkflowInstanceRecord (https://go.microsoft.com/fwlink/?LinkId=187224).
Event ID 103
In addition to the common columns, the Event Collection service populates the following columns in the ASStagingTable table for Event ID 103.
Event Data | ASStagingTable Columns |
---|---|
workflowinstanceid |
Data1UniqueId |
RecordNumber |
Data1BigInt |
Tracking Profile Name |
Data1Str |
State |
Data2Str |
ActivityName |
Data3Str |
ActivityId |
Data4Str |
ActivityInstanceId |
Data5Str |
ActivityTypeName |
Data6Str |
Annotations |
CustomAnnotations |
Variables |
CustomProperties |
Arguments |
CustomArguments |
The data from event 103 populates the following views: ASEventSources, ASWfEvents, ASEvents, ASWfTrackingProfiles, ASWfEventAnnotations, ASWfEventProperties, ASWfPropertyNames. The mapping of data from ASStagingTable to the common views ASEventSources and ASEvents is specified in the common mappings.
View: ASWfEventAnnotations
This view is updated with the annotations that are emitted with WF tracking events from the WF services.
Column Name | Populated Data |
---|---|
Id |
Unique identifier for this event row |
AnnotationSetId |
Key to find the WF event that emitted the annotation |
Name |
Name of the annotation obtained from ASStagingTable.CustomAnnotations |
Value |
Value of the annotation obtained from ASStagingTable.CustomAnnotations |
Extracting Annotations Name and Value from ASStagingTable.CustomAnnotations
The annotations are emitted with this event. The values of the annotations are stored in the following format. If no annotations are specified then the string contains </items>. The name and value are extracted by parsing the value stored in the ASStagingTable.CustomAnnotations column.
< items >
< item name = "annotationName" type="System.String">annotationValue</item>
</items >
View: ASWfPropertyNames
This view is created on the tracked property names that are extracted from WF services. The name could be a variable name, an argument name, or a name within customtrackingrecord.
Column Name | Populated Data |
---|---|
EventSourceId |
Event source for this event. This refers to the ID in the EventSources view. |
Name |
Name of the tracked property |
Type |
Type of the tracked property |
Extracting Name and Type from ASStagingTable.CustomProperties or ASStagingTable CustomArguments
Workflow variables are stored in ASStagingTable.CustomProperties. For event 103 the format of variables is as follows. If no variables are specified then the string contains </items>. Parse the XML string to get the name and type of the variable.
< items >
< item name = "variableName" type="System.String">variableValue</item>
</items >
Arguments are stored in ASStagingTable.CustomArguments. For event 103 the format of arguments is as follows. Parse the XML string to get the name and type of the argument. If no arguments are specified then the string contains </items>.
< items >
< item name = "argumentName" type="System.String">argumentValue</item>
</items >
View: ASWfEventProperties
This view has one row per variable/argument/custom property that is extracted from the WF event.
Column Name | Populated Data |
---|---|
EventId |
Maps to the Event ID in the ASWfEvents view -> ASWfEvents.Id refers to the WF event that emitted this data. |
Name |
Name extracted from parsing the XML from ASStagingTable.CustomArguments or ASStagingTable.CustomProperties |
WfDataSource |
Source of the property (argument, Variable, or custom data).If the data is populated from ASStagingTable.CustomArguments the value is “Argument”. If the data is populated from ASStagingTable.CustomProperties the value is “Variable”. |
Type |
Type of the property extracted from the CustomArguments of CustomProperties xml |
Value |
Value of the property extracted from the CustomArguments of CustomProperties xml when type is a simple type |
ValueBlob |
Value of property extracted from the CustomArguments of CustomProperties xml in case the type is a complex type |
TimeCreated |
Timestamp when this property was emitted mapped to ASWfEvents.TimeCreated |
View ASWfTrackingProfiles
Column Name | Populated Data |
---|---|
Id |
Unique ID for the tracking profile |
Name |
Mapped to ASStagingTable-> Column ASStagingTable.Data1Str |
View ASWfEvents
Only columns populated for this event in this view are specified. All other columns have a NULL value. The value specifically populated by the event is specified in bold. This view is created on the tracking events emitted for WF instances.
Column Name | Populated Data |
---|---|
Id |
Generated unique ID |
EventTypeId |
103 (Mapped To: ASStagingTable-> Column EventTypeId) |
EventType |
“ActivityStateRecord” |
EventVersion |
0 |
EventSourceId |
ID in ASEventSources view |
ProcessId |
Mapped to ASStagingTable-> Column: ASStagingTable.ProcessId |
WorkflowInstanceId |
Mapped to ASStagingTable-> Column: ASStagingTable.Data1UniqueId |
TrackingProfileId |
Unique ID of tracking profile mapped to the ID column in the ASWfTrackingProfiles view. Both this and the ASWfTrackingProfiles are updated in a single transaction. |
E2EActivityId |
Mapped to ASStagingTable-> Column: ASStagingTable.E2EActivityId |
TraceLevelId |
Mapped to ASStagingTable-> Column: ASStagingTable.TraceLevelId |
TraceLevel |
Dependent on TraceLevelId: 0:”LogAlways”1:”Critical”2:”Error”3:”Warning”4:”Information”5:”Verbose” |
RecordNumber |
Mapped to ASStagingTable-> Column: ASStagingTable.Data1BigInt |
AnnotationSetId |
Unique ID of Annotation Set mapped to the AnnotationSetId column in the ASWfEventAnnotations view. Both this and the ASWfEventAnnotations are updated in a single transaction. |
TimeCreated |
Mapped to ASStagingTable-> Column: ASStagingTable.TimeCreated |
ActivityName |
Mapped to ASStagingTable-> Column: ASStagingTable.Data3Str |
ActivityId |
Mapped to ASStagingTable-> Column: ASStagingTable.Data4Str |
ActivityInstanceId |
Mapped to ASStagingTable-> Column: ASStagingTable.Data5Str |
ActivityTypeName |
Mapped to ASStagingTable-> Column: ASStagingTable.Data6Str |
State |
Mapped to ASStagingTable-> Column: ASStagingTable.Data2Str |
View: ASWfInstances
This view is updated with the instance state for the active WF. This view is updated after the ASWfEvents view but within the same transaction. When an event is added to the ASWfEvents view this view needs to be updated simultaneously with the values inserted in the ASWfEvents view, and therefore in the same transaction. There is only one row per workflow instance. With each event that gets added to the WFEvents table the row for the workflow instance is modified.
Column Name | Populated Data |
---|---|
Id |
Unique ID for this entry |
WorkflowInstanceId |
Mapped to ASStagingTable-> Column: ASStagingTable.Data1UniqueId. Added only once for a unique instance. |
LastEventSourceId |
The last eventSourceID that modified this row. Mapped to ASWfEvents.EventSourceId. |
LastEventStatus |
Mapped to the ASWfEvents view-> Column: ASWfEvents.State. Inserted/updated only if state is not equal to “Deleted” or “Unloaded”. If state == “Deleted” or “Unloaded” then a row is not added in this table.In the case of event 101 the value is “UnhandledException”. |
StartTime |
Mapped to ASWfEvents-> Column: ASWfEvents.TimeCreated. This is the TimeCreated for the event with the lowest RecordNumber for this workflow instance represented by ASWfEvents.WorkflowInstanceId. |
LastModifiedTime |
Mapped to ASWfEvents -> Column: ASWfEvents.TimeCreated. Updated when state changes. Also note that to update this column the RecordNumber of the WorkflowRecord is greater the previous RecordNumber that updated this value. (Possible implementation is to maintain a temporary table that maps the instance ID in this table to the RecordNumber of the Workflow Event Record from ASWfEvents that modified it. When a new event tries to update this row for this instance, check if the RecordNumber is greater than the last modified RecordNumber.) |
CurrentDuration |
Duration for the running workflow (LastModifiedTime – StartTime) |
ExceptionCount |
Number of exceptions encountered by the WF. Count of Events 101 encountered by this WF instance represented by instance ID ASWfEvents. WorkflowInstanceId. |
LastAbortedTime |
Latest time from the ASWfEvents view for the event with ID 101 or 102. For the workflow instance represented by ASWfEvents.WorkflowInstanceId. |
For more information about this event, see 103 - ActivityStateRecord (https://go.microsoft.com/fwlink/?LinkId=187226).
Event ID 214
In addition to the common columns, the Event Collection service populates the following columns in the ASStagingTable table for Event ID 214.
Event Data | ASStagingTable Columns |
---|---|
MethodName |
Data1Str |
Duration |
Data1Int |
The data from event 214 populates the following views: ASEventSources, ASWcfEvents, ASEvents. The mapping of data from ASStagingTable to the common views ASEventSources and ASEvents is specified in the common mappings.
View ASWcfEvents
Only columns populated for this event in this view are specified. All other columns have a NULL value. The value specifically populated by the event is specified in bold.
ColumnName | Populated Data |
---|---|
Id |
Generated unique ID |
EventTypeId |
214 (Mapped To: ASStagingTable-> Column EventTypeId) |
EventType |
“OperationCompleted” |
EventVersion |
0 |
EventSourceId |
ID in the ASEventSources view |
ProcessId |
Mapped to ASStagingTable-> Column: ProcessId |
TraceLevelId |
Mapped to ASStagingTable-> Column: TraceLevelId |
TraceLevel |
Dependent on TraceLevelId: 0:”LogAlways”1:”Critical”2:”Error”3:”Warning”4:”Information”5:”Verbose” |
E2EActivityId |
Mapped to ASStagingTable-> Column: ASStagingTable.E2EActivityId |
TimeCreated |
Mapped to ASStagingTable-> Column: ASStagingTable.TimeCreated |
OperationName |
Mapped to ASStagingTable-> Column: ASStagingTable.Data1Str |
Duration |
Mapped to ASStagingTable-> Column: ASStagingTable.Data1Int |
For more information about this event, see 214 - OperationCompleted (https://go.microsoft.com/fwlink/?LinkId=187225).
Event ID 219
In addition to the common columns, the Event Collection service populates the following columns in the ASStagingTable table for Event ID 214.
Event Data | ASStagingTable Columns |
---|---|
ExceptionTypeName |
Data1Str |
ExceptionToString |
Data1MaxStr |
The data from event 219 populates the following views: ASEventSources, ASWcfEvents, ASEvents. The mapping of data from ASStagingTable to the common views ASEventSources and ASEvents is specified in the common mappings.
View ASWcfEvents
Only columns populated for this event in this view are specified. All other columns have a NULL value. The value specifically populated by the event is specified in bold.
ColumnName | Populated Data |
---|---|
Id |
Generated unique ID |
EventTypeId |
219 (Mapped To: ASStagingTable-> Column ASStagingTable .EventTypeId) |
EventType |
“ServiceException” |
EventVersion |
0 |
EventSourceId |
ID in ASEventSources View. This is the mapping of the event in ASWcfEvents to the ASEventSources view. |
ProcessId |
Mapped to ASStagingTable-> Column: ASStagingTable.ProcessId |
TraceLevelId |
Mapped to ASStagingTable-> Column: ASStagingTable.TraceLevelId |
TraceLevel |
Dependent on TraceLevelId: 0:”LogAlways”1:”Critical”2:”Error”3:”Warning”4:”Information”5:”Verbose” |
E2EActivityId |
Mapped to ASStagingTable-> Column: ASStagingTable.E2EActivityId |
TimeCreated |
Mapped to ASStagingTable-> Column: ASStagingTable.TimeCreated |
ExceptionMessage |
Mapped to ASStagingTable-> Column: ASStagingTable.Data1MaxStr |
ExceptionTypeName |
Mapped to ASStagingTable-> Column: ASStagingTable.Data1Str |
For more information about this event, refer to 219 - ServiceException (https://go.microsoft.com/fwlink/?LinkId=187230).