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:
- Inputs HTTP Request (
script.sla.inputs) — callsGET /api/inputsand returns the full current input state (bitrate, IPAT, DF, MLR, DPC, error flags). - Current Statistics HTTP Request (
script.sla.inputs.metrics) — callsGET /api/statistics/currentand 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
- In the Zabbix web interface, go to Configuration → Templates.
- Click Import in the top-right corner.
- Select the
.yamlfile and click Import. - 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
- Go to Configuration → Hosts → Create host.
- 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)
- Host name: any descriptive name (e.g.
- On the Templates tab, search for and add
MPEG-TS Analyzer. - 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:
- Go to Monitoring → Latest data.
- Filter by the host name you created.
- You should see items populating:
Inputs HTTP Request,Current Statistics HTTP Request, and after LLD runs (up to 5 minutes), per-input items named likeIN 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.
Recommended triggers
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 widget — DF 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 return200 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.inputsandscript.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.