Real time Business Transactions feed

AppMon can send Business Transaction data in real time to external systems for further storage and analysis. The data feed contains Business Transaction data, including evaluation and splitting values, for single transactions. This means the Business Transaction feed does not aggregate the data, but streams out discrete transaction data.

For Business Transactions based on PurePaths and user actions, it's possible to include the PurePath reference and PurePath performance data. The exported data is encoded using Google Protobuf, resulting in an efficient, flexible and future proof interface. See Big Data Business Transaction Bridge and Splunk Application for ready-to-use examples of how to integrate the Business Transaction Feed into your Big Data environment. Also, compare this to the PureLytics Stream to ElasticSearch and Kibana.

The following figure shows the data feed architecture.

Business Transaction Export
Business Transaction Export

Message format

The Business Transactions are sent in the following Protobuf message format, using HTTP post requests. This format can be used to generate code for various programming languages such as Java, C, and C++.

syntax = "proto2";
option java_package = "com.dynatrace.diagnostics.core.realtime.export";

option optimize_for = SPEED;


message BusinessTransactions {
	repeated BusinessTransaction businessTransactions = 1;		//exported business transactions in this message
	optional int32 lostTransactions = 2;		//number of lost transactions, not used currently
	optional string serverName = 3;				//name of dynatrace server
message BusinessTransaction {
	required string name = 1;					//name of business transaction
	enum Type {									//possible types of business transactions
		VISIT = 2;
	optional Type type = 2;						//type of business transaction
	optional string application = 3;			//application of business transaction
	repeated string measureNames = 4;			//result measure names
	repeated string dimensionNames = 5;			//splitting measure names
	repeated BtOccurrence occurrences = 6;		//bt results for purepaths/user actions/visits
	optional string systemProfile = 7;			//system profile the business transaction belongs to
message BtOccurrence {
	required int64 startTime = 1;				//java time stamp; start time of purepath/visit
	optional int64 endTime = 2;					//java time stamp; end time of visit
	optional string purePathId = 5; 			//id of purepath; for example "PT=9839;PA=856374981;PS=-1690199182"
	repeated double values = 6;					//values of result-measures
	repeated string dimensions = 7;				//splittings
	optional string actionName = 8;				//name of user action
	optional string url = 9;					//url of user action
	optional string query = 10; 				//not used currently
	optional int64 visitId = 11;				//id of visit
	optional string visitTag = 12;				//tag of visit
	optional double userExperienceIndex = 13;	//user experience index of visit
	optional bool converted = 14;				//visit converted
	optional double responseTime = 15;			//ms; response time of (user action) purepath
	optional double cpuTime = 16;				//ms; cpu time of (user action) purepath
	optional double syncTime = 17;				//ms; sync time of (user action) purepath
	optional double waitTime = 18;				//ms; wait time of (user action) purepath
	optional double suspensionTime = 19;		//ms; suspension time of (user action) purepath
	optional double execTime = 20;				//ms; execution time of (user action) purepath
	optional double duration = 21;				//ms; duration of (user action) purepath
	optional bool failed = 22;					//purepath/user action failed

	optional int32 nrOfActions = 23;			//number of user actions in visit
	optional string clientFamily = 24;			//client family of visit (for example, "Apple iPhone 5")
	optional string clientIP = 25;				//client ip address of visit
	optional string continent = 26;				//continent of visit
	optional string country = 27;				//country of visit
	optional string city = 28;					//city of visit
	optional int32 failedActions = 29;			//number of failed user actions of visit
	optional int32 clientErrors = 30;			//number of client errors of user action/visit
	optional bool exitActionFailed = 31;		//last action of visit failed
	optional bool bounce = 32;					//bounce visit (1 user action/page view)
	optional string osFamily = 33;				//os family of visit (for example, "Android")
	optional string osName = 34;				//os name of visit (for example, "Android 2.2")
	optional string connectionType = 35;		//connection type of visit
	repeated string convertedBy = 36;			//names of visit conversion measures for converted visit

	optional double clientTime = 37;			//ms; client time of user action
	optional double networkTime = 38;			//ms; network time of user action
	optional double serverTime = 39;			//ms; server time of user action
	optional int32 urlRedirectionTime = 40;		//ms; url redirection duration of user action (w3c navigation timing)
	optional int32 dnsTime = 41;				//ms; dns duration of user action (w3c navigation timing)
	optional int32 connectTime = 42;			//ms; connect duration of user action (w3c navigation timing)
	optional int32 sslTime = 43;				//ms; ssl duration of user action (w3c navigation timing)
	optional int32 documentRequestTime = 44;	//ms; document request duration of user action (w3c navigation timing)
	optional int32 documentResponseTime = 45;	//ms; document response duration of user action (w3c navigation timing)
	optional int32 processingTime = 46;			//ms; processing duration of user action (w3c navigation timing)

Each message can include multiple different Business Transactions. The BusinessTransaction structure groups the occurrences for a Business Transaction. It contains the defined evaluation measure names and dimension names (splitting measure names). Each BtOccurrence instance corresponds to a single PurePath, user action, or visit that was evaluated for the specific Business Transaction. Which values are set in the BtOccurrence depends on the type of the Business Transaction and the configuration:

PurePath User Action Visit
startTime Yes Yes Yes
endTime No No Yes
duration Yes Yes No
failed Yes Yes No
purePathId optional optional No
values Yes Yes Yes
dimensions Yes Yes Yes
actionName No Yes No
url No Yes No
query No No No
visitId No Yes Yes
user No No Yes
apdex No No Yes
converted No No Yes
responseTime optional optional No
cpuTime optional optional No
syncTime optional optional No
waitTime optional optional No
suspensionTime optional optional No
execTime optional optional No
nrOfActions No No Yes
clientFamily No No Yes
clientIP No No Yes
continent No No Yes
country No No Yes
city No No Yes
failedActions No No Yes
clientErrors No Yes Yes
exitActionFailed No No Yes
bounce No No Yes
osFamily No No Yes
osName No No Yes
connectionType No No Yes
convertedBy No No Yes
clientTime No Yes No
networkTime No Yes No
serverTime No Yes No
urlRedirectionTime No Yes No
dnsTime No Yes No
connectTime No Yes No
sslTime No Yes No
documentRequestTime No Yes No
documentResponseTime No Yes No
processingTime No Yes No

The configuration of the Business Transaction feed is split into a basic setup that configures the global export settings, and a Business Transaction-specific configuration that allows the export to be enabled for each Business Transaction.

Basic Business Transaction feed setup