Telemetry Platform Features in Azure Media Services

We are excited to announce new Azure Media Services (AMS) telemetry platform features, generally available through our new Telemetry API. Media Services telemetry allows you to monitor and measure the health of your services through a suite of telemetry data. Telemetry data is written to your Azure Storage account and can be processed and visualized using a wide array of data visualization tools.

Consuming Telemetry Data

This release includes telemetry metrics for Channel, Streaming Endpoint, and Archive entities. Telemetry data is written to an Azure Storage table in the storage account specified when configuring telemetry for your media services account. Telemetry data is stored in aggregate in a table, “TelemetryMetricsYYYYMMDD,” for each day’s data (where “YYYYMMDD” denotes the date timestamp).

Each table entry contains a set of common fields and a record with a set of entity-specific fields. The entry identifying fields include the following:

Property
Value
Example

PartitionKey
{Account ID}_{Entity ID}
e49bef329c29495f9b9570989682069d_64435281c50a4dd8ab7011cb0f4cdf66

RowKey
{Seconds to Midnight}_{Random Value}
01688_00199

Timestamp
The time at which the row entry was created
2016-09-09T22:43:42.241Z

Type
The type of the entity providing telemetry
Channel

Name
The name of the telemetry event
ChannelHeartbeat

ObservedTime
The time at which the event occurred
2016-09-09T22:42:36:924Z

ServiceID
Service ID
f70bd731-691d-41c6-8f2d-671d0bdc9c7e

Entity-specific Properties
{Record as defined by the event}
{Record}

The account ID is included in the partition key to simplify workflows where multiple media services accounts are writing data to the same storage account. The row key start with the number of seconds to midnight to allow top n style data queries within a partition (see the log tail table design pattern for more information). The observed timestamp is an approximate measure provided by the entity reporting telemetry.

Entity-Specific Telemetry

The data in each telemetry row represents an aggregation of telemetry events raised over an aggregation time window, listed below. Each entity pushes telemetry with the following frequencies:

Channels: Every 60 seconds
Streaming Endpoints: Every 30 seconds
Archive: Every 60 seconds

Below is the schema description for channels, streaming endpoints, and archive entities.

Channels

Property
Value
Example

TrackType
Type of track
video

TrackName
Name of the track
video

Bitrate
Expected bitrate of the track
785,000

IncomingBitrate
Incoming bitrate of the track
784,548

OverlapCount
Number of overlapping fragments received in ingest
0

DiscontinuityCount
Number of discontinuities detected in ingest
0

LastTimestamp
Last ingested data timestamp
1800488800

NonincreasingCount
Count of fragments discarded due to non-increasing timestamp
0

UnalignedKeyFrames
Boolean on whether we received fragments where key frames are not aligned
False

UnalignedPresentationTIme
Boolean on whether we received fragments where presentation time is not aligned
False

UnexpectedBitrate
Boolean on whether the IncomingBitrate and Bitrate differ by more than 50% or if IncomingBitrate for an audio or video track is less than 40 kbps if Bitrate is 0
False

Healthy
Boolean on whether OverlapCount, DiscontinuityCount, NonincreasingCount, UnalignedKeyFrames, UnalignedPresentationTime, and UnexpectedBitrate are all zero or false
True

CustomAttributes
Placeholder for custom attributes
 

Streaming Endpoints

Property
Value
Example

HostName
Hostname of the endpoint
builddemoserver.origin.mediaservices.windows.net

StatusCode
HTTP status code
200

ResultCode
HTTP result code detail
S_OK

RequestCount
Total requests received within the last aggregation window
3

BytesSent
Total bytes sent within the last aggregation window
2,987,358

ServerLatency
Average server latency including storage in milliseconds
130

E2ELatency
Average end-to-end latency in milliseconds
250

Archive

Property
Value
Example

ManifestName
Name of the manifest
asset-eb149703-ed0a-483c-91c4-e4066e72cce3/a0a5cfbf-71ec-4bd2-8c01-a92a2b38c9ba.ism

TrackName
Name of the track
audio_1

TrackType
Type of track
audio

Bitrate
Track bitrate
785,000

Healthy
Boolean on whether there were no discarded fragments or archive acquisition errors in storage
True

CustomAttributes
Placeholder for custom attributes
 

The schema above is designed to give good performance within the limits of Azure Table Storage:

Data is partitioned by account ID and service ID to allow telemetry from each service to be queried independently
Partitions contain the date to give a reasonable upper bound on the partition size
Row keys are in reverse time order to allow the most recent telemetry items to be queried for a given service

This should allow many of the common queries to be efficient:

Parallel, independent downloading of data for separate services
Retrieving all data for a given service in a date range
Retrieving the most recent data for a service

Visualizing Telemetry Data

Your Azure Storage account can export data to data visualization tools such as PowerBI, Application Insights, and AMS Live Monitoring Dashboard, among many others. Below is an example of how this data can be imported into and visualized directly with PowerBI.

First, select the telemetry tables for the days you are interested in visualizing. To import your data, select Microsoft Azure Table Storage from the Get Data menu. Enter your storage account credentials and select the tables to import. Next, by selecting Content.ObservedTime as the time axis and Average of Content.Healthy (casted to decimal representation) as the value, plot the health of your channels and archive entities as a line graph. To plot channel health and archive health separately, add a filter on Content.Name. This visualization illustrates entity health where a value of 1 represents perfectly healthy and a value of 0 represents perfectly unhealthy for the given time. Below are examples of the channel and archive health plotted over time.

To visualize the overall health of your services, collapse the time dimension by plotting the data as a pie chart. Selecting Content.Healthy as the legend and Count of Content.Healthy as the value, produces the visualization below.

We’re excited to share these telemetry features and hope they provide useful information about the health of your Azure media services.

Thanks,

Azure Media Services Streaming Team
Quelle: Azure

Published by