Overview of debugging tool

The debugging tool enables publishers to investigate potentially costly ad insertion problems by examining debugging information returned in real time by the manifest server in HTTP headers or, when more detailed information is needed, examining session logs after the fact. Adobe partners like Akamai can use the tool to debug their integrations with Primetime ad decisioning.

The tool supports debugging ad insertion problems in any of the main manifest server ad tracking configurations:

  • Client-side tracking with a player based on TVSDK.
  • Client-side tracking with a player not based on TVSDK.
  • Server-side tracking.

To support all of these cases, the tool does not require or use player publisher codes.

When you initiate a manifest server session, you can set a parameter on the request URL to ask it to log debugging information. Using different values of that parameter, you can also ask the manifest server to return specified pieces of debugging information in HTTP headers, but headers can contain only a limited amount of information. You can obtain credentials from Adobe to access complete log files, which the manifest server saves periodically (for example, hourly) on an archive server. Once you have credentials for that server, you can access it directly at any time.

Debugging tool options

When invoking the debugging tool, you have several options for what information the manifest server returns in HTTP headers. The options do not affect what the manifest server places in log files.

Specifying ptdebug

When initiating debug logging for a manifest server session, you can add the ptdebug parameter to the request URL to specify the following options for the information that the manifest server returns in HTTP headers:

  • ptdebug=true All records except TRACE_HTTP_HEADER and most call/response data from TRACE_AD_CALL records.
  • ptdebug=AdCall Only TRACE_AD_type (for example, TRACE_AD_CALL) records.
  • ptdebug=Header Only TRACE_HTTP_HEADER records.

The options do not affect what the manifest server places in the log files. You have no control of that, but the log files are text files, so you can apply a wide variety of tools to extract and reformat the information that interests you.

Here is an example of the HTTP header returned when ptdebug=Header. Some long strings of hex digits are replaced by ". . ." for clarity.

X-ADBE-AI-DBG-1 TRACE_MISC    HTTP request received
X-ADBE-AI-DBG-2 TRACE_MISC    Processing Variant
X-ADBE-AI-DBG-3 TRACE_MISC    Valid URL received.
X-ADBE-AI-DBG-4 TRACE_MISC    Initialize new session
X-ADBE-AI-DBG-5 TRACE_MISC    Requesting: /auditude/variant/pubAsset/aHR0cDovL . . .m3u8
	?u=cecebae . . .&z=189962&pttrackingmode=simple&pttrackingversion=v1
	&ptcueformat=turner&__sid__=yk-sat953pm-112
	&ptdebug=true
X-ADBE-AI-DBG-6  TRACE_HTTP_HEADER  MAIN  REQUEST  Host				bWFuaWZl. . .
X-ADBE-AI-DBG-7  TRACE_HTTP_HEADER  MAIN  REQUEST  Connection       Y2xvc2U=
X-ADBE-AI-DBG-8  TRACE_HTTP_HEADER  MAIN  REQUEST  Accept			dGV4dC. . .
X-ADBE-AI-DBG-9  TRACE_HTTP_HEADER  MAIN  REQUEST  Cookie			c3NhaT. . .
X-ADBE-AI-DBG-10 TRACE_HTTP_HEADER  MAIN  REQUEST  User-Agent       TW96aWxs. . .
X-ADBE-AI-DBG-11 TRACE_HTTP_HEADER  MAIN  REQUEST  Accept-Language  ZW4tdXM=
X-ADBE-AI-DBG-12 TRACE_HTTP_HEADER  MAIN  REQUEST  Accept-Encoding  Z3ppcCwg. . .=
X-ADBE-AI-DBG-13 TRACE_REQUEST_INFO  200   GET
	/auditude/variant/pubAsset/aHR0cD. . ..m3u8
	?u=cecebae72a919de350b9ac52602623f3&z=189962&pttrackingmode=simple
	&pttrackingversion=v1&ptcueformat=turner&__sid__=yk-sat953pm-112
	&ptdebug=true   0	0	0	  Variant  NA  null  null  127.0.0.1:43357
X-ADBE-AI-DBG-14 TRACE_HTTP_HEADER  MAIN  RESPONSE Content-Type     YXBwbG. . .
X-ADBE-AI-DBG-15 TRACE_HTTP_HEADER  MAIN  RESPONSE Cache-Control    bm8tY2. . .
X-ADBE-AI-DBG-16 TRACE_HTTP_HEADER  MAIN  RESPONSE Access-Control-Allow-Origin    Kg==
X-ADBE-AI-DBG-17 TRACE_MISC			Done

Formats of log records

Each log record has a type and a set of fields, some of which might be optional. The fields of all records up to the record type are the same. They provide a timestamp and information about the session. The record type identifies the kind of event being logged, and subsequent fields provide information about the logged event.

The structure of a log record is as follows:

datetime request_id session_id zone_id record_type other fields.

Field

Type

Description

datetime

string

Timestamp

request_id

string

Request ID used by the manifest server (unix timestamp)

session_id

string

Session ID used by the manifest server

zone_id

integer

Zone ID

record_type

string

Type of event being logged

other fields

***

Depend on type of event

TRACE_REQUEST_INFO records

Records of this type log the results of HTTP requests. Fields beyond TRACE_REQUEST_INFO appear in the order shown in the table, separated by tabs.

Field

Type

Description

status

string

Returned HTTP status code

request_method

string

HTTP method (GET or POST)

request_uri

string

HTTP request URI (without host)

request_length

integer

Length of request (bytes)

response_length

integer

Length of response (bytes)

delta

integer

Time (milliseconds) to process request

module_type

string

Variant, Stream, or VOD

remote_address_aud_client_ip

string

(see note)

remote_address_x_fwd_for_hdr_key

string

(see note)

remote_host_port

string

(see note)

Note:

The last three fields are optional.

An example:

1427263800524	6495aafc-3f34-4047-ad36-350d4f056eb4	189938
TRACE_REQUEST_INFO	301	GET	/auditude/variant/pubAsset/aHR0cDov. . ..m3u8
?u=cecebae72a919de350b9ac52602623f3&z=189938&ptcueformat=turner& sid =yk-cnnlive-003 &ptdebug=true	0	0	0	Variant	111.22.3.44	111.22.3.45	127.0.0.1:46383

TRACE_HTTP_HEADER records

Records of this type log HTTP headers exchanged during HTTP calls between the manifest server and client, ad server, or content server. Fields beyond TRACE_HTTP_HEADER appear in the order shown in the table, separated by tabs.

Field

Type

Description

request_type

string

Type of request (MAIN or UNKNOWN)

request_response

string

Response header (request or response)

header_name

string

HTTP header name

header_value

string

Base64-encoded HTTP header value

Note:

The request_type and header_value fields are optional.

An example:        

2015-03-25T06:10:00.927Z  1427263800573  6495aa. . .  189938 TRACE_MISC
    Requesting: /cnn/tvecnn/stream4/stream_Layer.m3u8
2015-03-25T06:10:00.927Z  1427263800573  6495aa. . .  189938 TRACE_HTTP_HEADER
    UNKNOWN REQUEST Cookie  aGRu. . .
2015-03-25T06:10:00.928Z  1427263800573  6495aa. . .  189938 TRACE_HTTP_HEADER
    UNKNOWN REQUEST User-Agent  TW96aW. . .
2015-03-25T06:10:01.063Z  1427263800573  6495aa. . .  189938 TRACE_HTTP_HEADER
    UNKNOWN RESPONSE  Server  bmd4X2. . .
2015-03-25T06:10:01.063Z  1427263800573  6495aa. . .  189938 TRACE_HTTP_HEADER
    UNKNOWN RESPONSE  Content-Type    YXBwb. . .
2015-03-25T06:10:01.063Z  1427263800573  6495aa. . .  189938 TRACE_HTTP_HEADER
    UNKNOWN RESPONSE  Last-Modified   V2VkL. . .
2015-03-25T06:10:01.063Z  1427263800573  6495aa. . .  189938 TRACE_HTTP_HEADER
    UNKNOWN RESPONSE  ETag    IjIyY2. . .
2015-03-25T06:10:01.063Z  1427263800573  6495aa. . .  189938 TRACE_HTTP_HEADER
    UNKNOWN RESPONSE  Vary    QWNjZXB. . .
2015-03-25T06:10:01.063Z  1427263800573  6495aa. . .  189938 TRACE_HTTP_HEADER
    UNKNOWN RESPONSE  Cache-Control   bWF4LW. . .
2015-03-25T06:10:01.064Z  1427263800573  6495aa. . .  189938 TRACE_HTTP_HEADER
    UNKNOWN RESPONSE  Expires V2VkL. . .
2015-03-25T06:10:01.064Z  1427263800573  6495aa. . .  189938 TRACE_HTTP_HEADER
    UNKNOWN RESPONSE  Date    V2VkLCA. . .
2015-03-25T06:10:01.064Z  1427263800573  6495aa. . .  189938 TRACE_HTTP_HEADER
    UNKNOWN RESPONSE  Age MQ==
2015-03-25T06:10:01.064Z  1427263800573  6495aa. . .  189938 TRACE_HTTP_HEADER
    UNKNOWN RESPONSE  Via MS4xIH. . .

TRACE_AD_CALL records

Records of this type log the results of manifest server ad requests. Fields beyond TRACE_AD_CALL appear in the order shown in the table, separated by tabs.

Field

Type

Description

status

string

Returned HTTP status code

request_duration

integer

Time (milliseconds) from request to response

ad_server_query_url

string

URL for the ad call, including query parameters

ad_system_id

string

Ad system, from the ad server response (Auditude if not specified)

avail_id

string

ID of the avail, from the ad cue in the content manifest file (N/A for VOD)

avail_duration

number

Duration (seconds) of the avail, from the ad cue in the content manifest file (N/A for VOD)

ad_server_response

string

Base64-encoded response from ad server

An example:

2015-03-25T06:13:31.271Z	14272. . .	189938	TRACE_AD_CALL
200	8	http://ad.stg2.auditude.com/adserver/a?cip=0.0.0.0&g=1000012&of=1.5 &ptcueformat=turner&ptdebug=true&tl=l,150,30,m&tm=63&u=ceceb. . .	Auditude IvpIyC. . .	150	PD94bWw. . .

TRACE_AD_INSERT, TRACE_AD_RESOLVE, and TRACE_AD_REDIRECT records

Records of this type log the results of the ad requests indicated by the record type. Fields beyond the record type appear in the order shown in the table, separated by tabs.

Field

Type

Description

status

string

Returned HTTP status code

avail_id

string

ID of the avail, from the ad cue in the content manifest file (live) or from the manifest server (VOD)

ad_type

string

Type of ad (DIRECT or REDIRECT)

ad_duration

integer

Duration (seconds) of ad, from ad server response

ad_content_url

string

URL of the ad's manifest file, from the ad server response

ad_content_url_actual

string

URL of the inserted ad's manifest file. Empty for

TRACE_AD_REDIRECT.

ad_system_id

string

Ad system, from the ad server response (Auditude if not specified)

ad_id

string

ID of the ad, from the ad server response

creative_id

string

ID of the creative, from the ad node, from the ad server response

ad_call_id

string

Not used. Reserved for future use.

delta

integer

Time (milliseconds) taken by this event

misc

string

Reason ad was skipped

Note:

The ad_content_url_actual, ad_call_id, and misc fields are optional.

For TRACE_AD_RESOLVE and TRACE_AD_INSERT, the URL in the ad_content_url_actual field is for the transcoded ad if one is available. Otherwise the field is empty for TRACE_AD_RESOLVE or the same as ad_content_url for TRACE_AD_INSERT.

An example:

2015-03-18T22:25:36.229-07:00	1426742736208	1120feb. . .	147465	TRACE_AD_RESOLVE
200 0	DIRECT	15	http://cdn2.auditude.com/assets/3p/v2/8c/2b/8c2bb. . ..m3u8 Auditude	308008	0		cecebae72a919de350b9ac52602623f3	0	NA

2015-03-18T22:25:36.230-07:00	1426742736208 1120feb. . .	147465	TRACE_AD_RESOLVE
200 2	DIRECT	15	http://cdn2.auditude.com/assets/3p/v2/8c/2b/8c2bb. . ..m3u8 Auditude	308008	0		cecebae72a919de350b9ac52602623f3	0	NA

2015-03-18T22:25:36.562-07:00	1426742736208	1120feb. . .	147465	TRACE_AD_INSERT
200 0	DIRECT	15	http://cdn2.auditude.com/assets/3p/v2/8c/2b/8c2bb. . ..m3u8 http://cdn2.auditude.com/assets/3p/v2/8c/2b/8c2bb. . ..m3u8
Auditude	308008	0	cecebae72a919de350b9ac52602623f3	0	NA
2015-03-18T22:25:36.563-07:00	1426742736208	1120feb. . .	147465	TRACE_AD_INSERT
200 2	DIRECT	15	http://cdn2.auditude.com/assets/3p/v2/8c/2b/8c2bb. . ..m3u8 http://cdn2.auditude.com/assets/3p/v2/8c/2b/8c2bb. . ..m3u8
Auditude	308008	0	cecebae72a919de350b9ac52602623f3	0	NA

TRACE_TRACKING_URL records

Records of this type log the results of manifest server ad requests. Fields beyond TRACE_TRACKING_URL appear in the order shown in the table, separated by tabs.

Field

Type

Description

pts

number

Program timestamp. Time within video to call the URL.

ad_system

string

Ad system (auditude or freewheel)

url

string

URL pinged

status

string

HTTP status returned from the ping

An example:

2015-06-04T23:24:42.000-0700    1426742736208     3086f5cd . . .    12345    TRACE_TRACKING_URL
    0.000000    ExampleSystem    http://localhost/index.php?stream:test#8.1433485415;
    sid:3086f5cd . . .;pts:0    200

TRACE_TRANSCODING_NO_MEDIA_TO_TRANSCODE records

Records of this type log a missing ad creative. The only field beyond TRACE_TRANSCODING_NO_MEDIA_TO_TRANSCODE appears in the table.

Field

Type

Description

ad_id

string

Fully qualified ad ID (FQ_AD_ID: Q_AD_ID[;Q_AD_ID[;Q_AD_ID...]] Q_AD_ID: PROTOCOL:AD_SYSTEM:AD_ID[:CREATIVE_ID[:MEDIA_ID]] PROTOCOL: AUDITUDE,VAST)

TRACE_TRANSCODING_REQUESTED records

Records of this type log the results of transcoding requests that the manifest server sends to CRS. Fields beyond TRACE_TRANSCODING_REQUESTED appear in the order shown in the table, separated by tabs.
 

Field

Type

Description

ad_id

string

Fully qualified ad ID

ad_manifest_url

string

URL of the ad's manifest file, from the ad server response

creative_type

string

Type of media

flags

string

ID3 indicates whether the transcoding request includes a request to add an ID3 tag

target_duration

string

Target duration (seconds) of the transcoded creative

TRACE_TRACKING_REQUEST records

Records of this type indicate a request to do server side tracking. Fields beyond TRACE_TRACKING_REQUEST appear in the order shown in the table, separated by tabs.

Field

Type

Description

tracking_url_count

integer

Number of tracking URLs

start

float

PTS fragment start time (seconds with millisecond precision)

end

float

PTS fragment end time (seconds with millisecond precision)

TRACE_TRACKING_REQUEST_URL records

Records of this type provide a tracking URL for server side tracking. Fields beyond TRACE_TRACKING_REQUEST_URL appear in the order shown in the table, separated by tabs.
 

Field

Type

Description

timestamp

float

Time (seconds, with precision .001) within the playback session to ping the tracking URL

ad_system

string

Ad system (for example, auditude)

url

string

URL to ping

TRACE_WEBVTT_REQUEST records

Records of this type log requests the manifest server makes for WEBVTT captions. Fields beyond TRACE_WEBVTT_REQUEST appear in the order shown in the table, separated by tabs.

Field

Type

Description

status

string

Returned HTTP status code

vtt_uri

string

URL for request

start

float

Split start time (seconds with millisecond precision)

end

float

Split end time (seconds with millisecond precision)

TRACE_WEBVTT_RESPONSE records

Records of this type log responses the manifest server sends to clients in answer to requests for WEBVTT captions. Fields beyond TRACE_WEBVTT_RESPONSE appear in the order shown in the table, separated by tabs.

Field

Type

Description

status

string

Returned HTTP status code

response

string

Base64-encoded response sent to client

TRACE_WEBVTT_SOURCE records

Records of this type log responses to requests the manifest server makes for WEBVTT captions. Fields beyond TRACE_WEBVTT_SOURCE appear in the order shown in the table, separated by tabs.

Field

Type

Description

status

string

Returned HTTP status code

source

string

Base64-encoded original VTT content

TRACE_MISC records

Records of this type enable the manifest server to log events and information not otherwise planned for when it ingests ads. The field beyond TRACE_MISC consists of a message string. Messages that might appear include the following:

• Ad ignored :AdPlacement [adManifestURL=http://cdn2.auditude.com/assets/3p/v2/8c/2b/8c2bb. . . .m3u8, durationSeconds=15.0, ignore=false, redirectAd=false, priority=1]

• AdPlacement adManifestURL=adManifestURL, durationSeconds=seconds, ignore=ignore, redirectAd=redirectAd, priority=priority

• Ad placement returned null.

• Ad successfully stitched.

• Ad call failed : error message.

• Adding User-Agent to fetch raw manifest: user-agent.

• Adding cookie to fetch raw manifest: [cookie]

• Bad URL requested URL error message. (Failed to parse variant URL)

• Called url: URL got return: response code. ( Live URL)

• Called url: URL return code: response code. ( VOD URL)

• Conflict found while resolving ads: either one of - mid-roll start or mid-roll end falls within pre-roll or pre-roll contained in mid-roll (VOD).

• Detected unhandled exception thrown by the handler for URI: request URL.

• Done generating variant manifest. (Variant)

• Done generating variant manifest.

• Exception in handling VAST redirect redirect URL error: error message.

• Failed to fetch ad's playlist for ad manifest URL.

• Failed to generate targeted manifest. (HLSManifestResolver)

• Failed to parse first ad call response: error message.

• Failed to process GET|POST request for path: request URL. (Live/VOD)

• Failed to process live manifest request: request URL. (Live)

• Failed to return a variant manifest: error message.

• Failed to validate group ID: group ID.

• Fetching raw manifest: content URL. (Live)

• Following VAST redirect: redirect URL.

• Found empty avails. (VOD)

• Found number ads. (VOD)

• HTTP request received. (Very first message)

• Ignoring ad because difference between ad response duration (ad response duration sec) and actual ad duration (actual duration sec) is larger than the limit. (HLSManifestResolver)

• Ignoring avail that provided no ID value. (GroupAdResolver.java)

• Ignoring avail that provided invalid time value: time for availId = avail ID.

• Ignoring avail that provided invalid duration value: duration for availId = avail ID.

• Initialize new session. (Variant)

• Invalid HTTP method. It must be a GET. (VOD)

• Invalid HTTP method. Tracking request must be a GET. (Live)

• Invalid URL requested URL error message. (Variant)

• Invalid group. (HLSManifestResolver)

• Invalid request. Caption is not a valid tracking request. (VOD)

• Invalid request. Caption request must be made after session is established. (VOD)

• Invalid request. Tracking request must be made after session is established. (VOD)

• Invalid server instance for overload group ID: group ID. (Live)

• Limit of VAST redirects reached - number.

• Making ad call: ad call URL.

• No manifest found for: content URL. (Live)

• No matching avail found for avail ID: avail ID. (HLSManifestResolver)

• No playback session found. (HLSManifestResolver)

• Processing VOD request for manifest content URL.

• Processing variant.

• Processing caption request for manifest content URL.

• Processing tracking request. (VOD)

• Redirect ad response empty. ( VASTStAX)

• Requesting: URL.

• Returning error response for GET request because no playback session was found. (VOD)

• Returning error response for GET request because of an internal server error.

• Returning error response for GET request specifying an invalid asset: ad request ID. (VOD)

• Returning error response for GET request specifying an invalid or empty group ID: group ID. (VOD)

• Returning error response for GET request specifying an invalid tracking position value. (VOD)

• Returning error response for GET request with invalid syntax - request URL. (Live/VOD)

• Returning error response for request with unsupported HTTP method: GET|POST. (Live/VOD)

• Returning manifest from cache. (VOD)

• Server is overloaded. Proceed without ad stitch request. (Variant)

• Start generating targeted manifest. (HLSManifestResolver)

• Start generating variant manifest from: content URL. (Variant)

• Start stitching ads into manifest. (VODHLSResolver)

• Trying to stitch ad at HH:MM:SS: AdPlacement [adManifestURL=ad Manifest URL, durationSeconds=seconds, ignore=ignore, redirectAd=redirect ad, priority=priority. (HLSManifestResolver)

• Unable to get ads because of invalid pttimeline - returned the content without ads. (VOD)

• Unable to get ads - returned the content without ads. (VOD)

• Unable to get ad query and no content URL was given. (VOD)

• Valid URL received. (VOD/Variant)

• Variant M3U8 not found. (Variant)

TRACE_TRACKING_URL records

The manifest server generates records of this kind after calling a tracking URL during the server side tracking workflow. Fields beyond TRACE_TRACKING_URL appear in the order shown in the table, separated by tabs.

Field

Type

Description

pts

number

PTS time within stream

ad_system

string

Ad's ad system (auditude or freewheel)

url

string

URL pinged

state

string

HTTP status code

TRACE_PLAYBACK_PROGRESS records

The manifest server generates records of this kind when it receives a signal about playback progress during the server side tracking workflow. Fields beyond TRACE_PLAYBACK_PROGRESS appear in the order shown in the table, separated by tabs.

Field

Type

Description

status

string

HTTP status code

bandwidth

integer

Bandwidth of the stream

pts

integer

PTS time within stream

ms_time

integer

Time when manifest server generated tracking URL

url

string

Redirect URL

header_user_agent

string

HTTP User-Agent header

header_dnt

integer

HTTP do-not-track header

effective_remote_address

string

IPv4 effective remote address

remote_address

string

IPv4 remote address

Note:

The last four fields are optional.

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License  Twitter™ and Facebook posts are not covered under the terms of Creative Commons.

Legal Notices   |   Online Privacy Policy