Skip to navigation

Monitor with operational metrics

Enable operational metrics when you need to monitor live events, streaming endpoints, and completed on-demand encoding jobs.

The metrics you can scrape from your MK.IO can be used to monitor workflow services, including:

  • Live events (input & output bitrate monitoring)

  • Streaming endpoints (error rate, bitrate & latency)

  • On-demand encode jobs (count of successful & unsuccessful completed jobs)

Metrics are enabled per subscription. Once enabled, you will have access to metrics for all services within your subscription.

Metrics publishing is a chargeable service and is not enabled by default. Check MK.IO pricing for current rates.

Enable metrics on your MK.IO subscription

To enable metrics on your MK.IO subscription:

  • Log in to MK.IO and select a subscription.

  • From the left-hand side menu, navigate to Usage and Metrics.

  • Enable the metrics using the switch at the top right of the page.

Once metrics are activated, MK.IO will provide you with a URL, a Username and a Password. This information can be used by your monitoring infrastructure to scrape the metrics from MK.IO.

You can also enable metrics through the Management API.

Scrape metrics into Grafana Cloud

Once metrics are enabled in MK.IO, you can obtain a real-time stream of metrics by scraping the “federate” endpoint returned in the enable API call. Metrics are updated every 30s.

To scrape metrics into your Grafana Cloud account:

  • Log in to Grafana Cloud. Create an account if you do not already have one.

  • From the left-hand menu, go to Connections and click Add new connection.

  • In the search bar, type Metrics Endpoint, then open the Metrics Endpoint integration.

  • Click Add new scrape job.

Configure the scrape job

Get the details below from the MK.IO portal and enter them into Grafana.

  • Name: Enter a name for your scrape job.

  • Scrape Job URL: Use the URL provided by MK.IO (the federate endpoint), for example https://<URL provided by MK.IO>.

  • Basic authentication: Enter the Username and Password provided by MK.IO.

  • Scrape interval: Set the interval to 30s or 1 minute. Use 30s if you need tighter real-time visibility; use 1 minute to reduce cost and data volume.

  • Test Connection to verify the endpoint is reachable.

  • Click Save Scrape Job.

View metrics

  • Import the MK.IO dashboard into your Grafana Cloud account, or

  • Open Explore and search for metrics starting with mk\_.

For a full list of MK.IO services and supported metrics, see the Metrics and labels section below.

Metrics and labels

Each service in MK.IO provides different sets of metrics and labels.

The “Labels” column shows labels specific to each metric. Additionally, there are labels that are common to all customer metrics: region, project_name, project_id.

  • Subscription

  • Streaming endpoint

  • Live events

  • Jobs

    Services exposing: Subscription, Subscription quotas.

metricDescriptionTypeLabels
mk_upAlways present and equal to 1 when metrics are enabledGauge
mkio_api_assetfilters_totalTotal number of Asset Filters in the subscriptionGauge
mkio_api_assets_totalTotal number of Assets in the subscriptionGauge
mkio_api_contentkeypolicies_totalTotal number of Content Key Policies in the subscriptionGauge
mkio_api_devices_totalTotal number of Devices in the subscriptionGauge
mkio_api_filters_totalTotal number of Filters in the subscriptionGauge
mkio_api_jobs_totalTotal number of Jobs in the subscriptionGauge
mkio_api_jobs_running_totalTotal number of Jobs currently runningGauge
mkio_api_liveeventoutputs_totalTotal number of Live Event Outputs in the subscriptionGauge
mkio_api_liveevents_totalTotal number of Live Events in the subscriptionGauge
mkio_api_liveevents_running_totalTotal number of Live Events currently runningGauge
mkio_api_liveevents_stopped_totalTotal number of Live Events currently stoppedGauge
mkio_api_remoteconnections_totalTotal number of Remote Connections in the subscriptionGauge
mkio_api_storageaccounts_totalTotal number of Storage Accounts linked to the subscriptionGauge
mkio_api_streamingendpoints_totalTotal number of Streaming Endpoints in the subscriptionGauge
mkio_api_streamingendpoints_running_totalTotal number of Streaming Endpoints currently runningGauge
mkio_api_streamingendpoints_stopped_totalTotal number of Streaming Endpoints currently stoppedGauge
mkio_api_streamingendpoints_unit_totalTotal number of Streaming Endpoint Units allocatedGauge
mkio_api_streaminglocators_totalTotal number of Streaming Locators in the subscriptionGauge
mkio_api_streamingpolicies_totalTotal number of Streaming Policies in the subscriptionGauge
mkio_api_transforms_totalTotal number of Transforms in the subscriptionGauge
mkio_api_tunnels_totalTotal number of Tunnels in the subscriptionGauge

Services exposing: StreamingEndpoint.

metricDescriptionTypeLabels
mk_jitp_upEqual to 1 if a streaming endpoint is startedGaugeresource_name, endpoint_type, cdn_enabled
mk_jitp_bitrateCurrent bitrate (bits/s). Also usable to calculate total bytes egressGaugesc_status, content_type, resource_name, (live only: streaming_locator_id, availability)
mk_jitp_request_rateCurrent request rate (reqs/s)Gaugesc_status, content_type, resource_name, (live only: streaming_locator_id, availability)
mk_jitp_latency_bucket_rateHistogram providing response times for requestsHistogram ratesc_status, content_type, resource_name, le, (live only: streaming_locator_id, availability)
mk_cdn_bytes_totalBytes emitted from CDNCounterresource_name

Services exposing: LiveEventPassThru, LiveEventEncode.

metricDescriptionTypeLabels
mk_live_upEqual to 1 if a live event is runningGaugeresource_name
mk_live_input_bitrate_bpsBitrate arriving via RTMP or SRTGaugeresource_name, type, stream, mode
mk_live_output_storage_bitrate_bpsBitrate written to storage; includes storage write response codeGaugeresource_name, sc_status
mk_live_input_etr290_bitrate_bpsInput MPEG-2 TS bitrate (informational)Gaugeresource_id, resource_name
mk_live_input_etr290_ts_sync_loss_totalTotal TS sync loss events detected (ETR-290 Priority 1)Counterresource_id, resource_name
mk_live_input_etr290_sync_byte_error_totalTotal sync byte errors detected (ETR-290 Priority 1)Counterresource_id, resource_name
mk_live_input_etr290_pat_error_totalTotal PAT errors detected (ETR-290 Priority 1)Counterresource_id, resource_name
mk_live_input_etr290_cc_error_totalTotal continuity counter (CC) errors detected per PID (ETR-290 Priority 2)Counterresource_id, resource_name, stream_type, stream_pid
mk_live_input_etr290_pmt_error_totalTotal PMT errors detected (ETR-290 Priority 2)Counterresource_id, resource_name
mk_live_input_etr290_pid_error_totalTotal invalid/missing PID errors detected per PID (ETR-290 Priority 2)Counterresource_id, resource_name, stream_type, stream_pid
mk_live_input_etr290_transport_error_totalTotal MPEG-2 TS transport errors detected (ETR-290 Priority 2)Counterresource_id, resource_name
mk_live_input_max_pcr_jitter_ppmMaximum PCR jitter (ppm) observed on MPEG-2 TS input (informational)Gaugeresource_id, resource_name

Services exposing: Jobs (VideoProcessing, etc.).

metricDescriptionTypeLabels
mk_jobs_completed_totalNumber of completed jobs, includes error code if success == false; for VideoProcessing “type=encoding”Countersuccess, type, error