Skip to content

Zabbix Integration

A ready-made Zabbix template is available for TS Analyzer. It uses the REST API (not SNMP) to collect data, which allows monitoring all inputs, all ETSI TR 101 290 errors, IP stream metrics, and per-PID statistics without requiring SNMP to be enabled on the device.

How it works

The template contains two top-level Script items that authenticate with the device via the REST API and retrieve bulk data:

  1. Inputs HTTP Request (script.sla.inputs) — calls GET /api/inputs and returns the full current input state (bitrate, IPAT, DF, MLR, DPC, error flags).
  2. Current Statistics HTTP Request (script.sla.inputs.metrics) — calls GET /api/statistics/current and returns accumulated ETSI TR 101 290 statistics for all transport streams and PIDs.

Both scripts authenticate automatically using the {$DEVICE_USERNAME} and {$DEVICE_PASSWORD} macros.

Four Low-Level Discovery (LLD) rules then parse the JSON responses and create items dynamically for each discovered input, stream, and PID:

Discovery Rule Items created per entity What it monitors
Analyzer Inputs Discovery 7 Live bitrate (full and payload), DF, DPC, IPAT, MLR, monitoring status
Analyzer Statistics ETR101290 Discovery 22 All ETSI TR 101 290 error counters (Levels 1–3) per stream
Devices Statistics Input Streams Discovery 14 Bitrate (current/avg/max/min), DF, IPAT, MLR with current and aggregate values
Analyzer Statistics PID Discovery 10 Per-PID: bitrate (current/avg/min/max), CCE last minute, CCE sum, status, packet count, repetition rate

Requirements

  • Zabbix 6.0 or later (tested with 6.4)
  • The Zabbix proxy or server must have network access to the TS Analyzer's management interface (port 80)
  • Zabbix agent is not required on the device

Installing the template

Step 1. Download the template file

Download the template file: ZABBIX_MPEG_TS_Analyzer_Template.yaml

Step 2. Import into Zabbix

  1. In the Zabbix web interface, go to Configuration → Templates.
  2. Click Import in the top-right corner.
  3. Select the .yaml file and click Import.
  4. Confirm the import on the preview screen — no existing objects will be overwritten.

The template MPEG-TS Analyzer will appear in the Templates/MPEG-TS Analyzer group.

Step 3. Create a host for the device

  1. Go to Configuration → HostsCreate host.
  2. Set:
    • Host name: any descriptive name (e.g. TS-Analyzer-01)
    • Interfaces: add an Agent interface with the device IP (port 10050 — it will not be used, but Zabbix requires at least one interface)
  3. On the Templates tab, search for and add MPEG-TS Analyzer.
  4. Click Add, then Update.

Step 4. Configure host macros

On the host, go to the Macros tab and override the following inherited macros:

Macro Value Description
{$DEVICE_USERNAME} admin API login role
{$DEVICE_PASSWORD} your password API password
{$SLATOKEN} 172.16.112.1 Device IP address or hostname

Important

{$SLATOKEN} must be set to the IP address (or resolvable hostname) of the TS Analyzer management interface. The template uses this value to construct the API URL.

Step 5. Verify data collection

After saving the host, wait one polling cycle (typically 60 seconds). Then:

  1. Go to Monitoring → Latest data.
  2. Filter by the host name you created.
  3. You should see items populating: Inputs HTTP Request, Current Statistics HTTP Request, and after LLD runs (up to 5 minutes), per-input items named like IN 1 MyStream 239.1.1.1:1234 Bitrate Full.

If no data appears, check Administration → Queue for delayed items and verify the TS Analyzer is reachable from the Zabbix server/proxy.

What the template monitors

Per-input live metrics (Analyzer Inputs Discovery)

For each configured input, the following items are created. The item name includes the input ID, name, and multicast address/port for easy identification:

Item Key suffix Description
Bitrate Full brfull Total bitrate including stuffing (bps)
Bitrate Payload brpayload Payload bitrate excluding stuffing (bps)
DF df Delay Factor — MDI metric (µs)
DPC dpc Duplicate Packet Counter
IPAT ipat Inter-Packet Arrival Time (µs)
MLR MLR Media Loss Rate — MDI metric (packets)
Monitoring status statusmon Current monitoring state (0 = OK)

ETSI TR 101 290 errors (ETR101290 Discovery)

For each input stream, one item per ETSI TR 101 290 error is created. Values are cumulative error counts:

Level 1: 1.1 TS Sync Loss, 1.2 Sync Byte Error, 1.3 PAT Error, 1.4 CC Error, 1.5 PMT Error, 1.6 PID Error

Level 2: 2.1 Transport Error, 2.2 CRC Error, 2.3a PCR Repetition Error, 2.3b PCR Discontinuity Error, 2.4 PCR Accuracy Error, 2.5 CAT Error

Level 3: 3.1a NIT Actual Error, 3.1b NIT Other Error, 3.2 SI Repetition Error, 3.4 Unreferenced PID, 3.5a SDT Actual Error, 3.5b SDT Other Error, 3.6a EIT Actual Error, 3.6b EIT Other Error, 3.6c EIT PF Error

Additionally: Type/Signal — input source type for each stream.

Accumulated stream statistics (Input Streams Discovery)

Per stream, current/average/min/max values for:

Item Description
Bitrate Full (CURRENT / AVG / MAX / MIN) Full bitrate across time
DF (CURRENT / AVG) Delay Factor history
IPAT (CURRENT / AVG) IPAT history
MLR (CURRENT) Media loss rate
DF MIN Minimum DF
DF MAX Maximum DF

Per-PID statistics (PID Discovery)

For each PID on each input:

Item Description
Bitrate AVG / CURRENT / MIN / MAX PID bitrate statistics
CCE Last Minute CCE errors in the last minute
CCE SUM Total CCE since last reset
Status Current PID status (OK / Unreferenced / Absent / Obsolete)
Status Last Previous status before last change
Repetition Rate AVG Average packet interval for this PID
Packet Count Total packets received

Creating triggers and dashboards

The template ships without pre-built triggers or dashboards — these are intended to be configured according to your network's operational thresholds.

Create triggers at the host or template level. Some useful starting points:

Level 1 errors — Critical:

last(/MPEG-TS Analyzer/tr101290.1.1.[{#ID}.{#NAME}])>0

Severity: Disaster. A non-zero ts_sync_loss count means the stream was absent.

last(/MPEG-TS Analyzer/tr101290.1.4.[{#ID}.{#NAME}])>0

Severity: High. Any CCE indicates packet loss.

IP quality — Warning:

last(/MPEG-TS Analyzer/df.[{#IINID}.{#INNAME}])>50000

Severity: Warning. DF above 50 ms indicates significant network jitter.

last(/MPEG-TS Analyzer/MLR.[{#IINID}.{#INNAME}])>0

Severity: Average. Any non-zero MLR confirms packet loss at the IP level.

Bitrate anomaly:

last(/MPEG-TS Analyzer/brfull.[{#IINID}.{#INNAME}])=0
  and last(/MPEG-TS Analyzer/statusmon.[{#IINID}.{#INNAME}])=1

Severity: High. Input is active but bitrate is zero — stream has stopped.

Dashboard suggestions

In Monitoring → Dashboards, create a dashboard with:

  • Graph widget — bitrate trends for each input over 24 hours
  • Graph widgetDF and IPAT for IP inputs to track network quality
  • Top 10 items widget — inputs with highest CCE counts in the last hour
  • Problems widget — filtered to the TS Analyzer host group, sorted by severity

Troubleshooting

Items show "Not supported" or no data

  • Confirm {$SLATOKEN} is set to the correct device IP on the host macros tab.
  • Test connectivity: curl http://<device-ip>/api/system/alive — should return 200 OK.
  • Check that the Zabbix server/proxy can reach the device on port 80 (telnet <device-ip> 80).
  • Verify the username and password macros are correct by testing authentication manually (see the API quick-start).

Discovery rules create no items

  • Ensure the top-level Script items (script.sla.inputs and script.sla.inputs.metrics) are returning data.
  • In Zabbix, check Monitoring → Latest data for these items and inspect their last value.
  • LLD runs on its own schedule (default 1 hour for the first run, then the configured interval). Force an immediate check via Configuration → Hosts → Discovery rules → Execute now.

Authentication errors in Zabbix logs

  • The template authenticates on every poll cycle. Ensure the account is not locked out.
  • If you changed the device password, update {$DEVICE_PASSWORD} on the host macros tab.