JSON API monitoring met PRTG

De REST Custom v2 sensor is een native PRTG sensor waarmee je zonder custom scripts APIs kunt monitoren via JSONPath queries. Deze handleiding laat zien hoe je JSON data effectief parsed en monitort.

REST Custom v2 + JSONPath

De REST Custom v2 sensor maakt HTTP(S) requests naar API endpoints en parsed JSON responses met JSONPath. Je kunt hiermee cloud services, custom applicaties en IoT devices monitoren zonder PowerShell of Python scripts.

JSONPath Basis Syntax

$                  Root object
$.property         Child property
$.array[0]         Array element op index 0
[?(@.x > 5)]       Filter expressie
length($.array)    Tel array elementen
&& en ||           AND / OR operators

Voorbeeld: Monday.com Status Monitoring

We monitoren de Monday.com status API en filteren op EU componenten.

JSON Response Structuur

API: https://status.monday.com/api/v2/summary.json

{
  "status": {
    "indicator": "none",
    "description": "All Systems Operational"
  },
  "components": [
    {
      "id": "xyz123",
      "name": "Platform",
      "status": "operational",
      "group_id": "qxcz5495fl3r"
    },
    {
      "id": "abc456",
      "name": "API",
      "status": "operational",
      "group_id": "qxcz5495fl3r"
    }
  ],
  "incidents": []
}

Sensor Configuratie

Request URL: https://status.monday.com/api/v2/summary.json
Request Method: GET
Authentication: None

Channels met JSONPath

Channel 1: Tel Niet-Operationele EU Componenten

JSONPath: length($.components[?(@.group_id == 'qxcz5495fl3r' && @.status != 'operational')])
Value Type: Absolute (integer)
Upper Error Limit: 1

Uitleg: Filter op EU region (group_id == 'qxcz5495fl3r') én niet operationeel, tel het resultaat.

Channel 2: Actieve Incidents

JSONPath: length($.incidents)
Value Type: Absolute (integer)

Channel 3: Overall Status

JSONPath: $.status.indicator
Value Type: Status (string)

Channel 4: EU Platform Status

JSONPath: $.components[?(@.group_id == 'qxcz5495fl3r' && @.name == 'Platform')].status
Value Type: Status (string)

PRTG haalt automatisch de eerste waarde uit het gefilterde resultaat.

PRTG JSONPath Verschillen

PRTG gebruikt de Paessler JSONPath implementatie met specifieke kenmerken:

  • Gebruik length() niet len()
  • Directe array indexing werkt: $.array[0].property
  • Maar: geen [0] NA filter expressies - PRTG haalt automatisch de eerste waarde
  • && en || operators worden ondersteund
  • Gebruik "Status (string)" voor custom status waarden, niet "Lookup"

Array Indexing: Direct vs. Na Filter

Belangrijk verschil: [0] mag WEL bij directe array indexing, maar NIET na een filter expressie.

GOED - Directe array index (zonder filter):
$.servers[0].status
$.users[5].name

GOED - Property na filter (geen [0] nodig):
$.components[?(@.status == 'down')].name
$.users[?(@.role == 'admin')].email

FOUT - [0] NA een filter expressie:
$.components[?(@.status == 'down')][0].name

PRTG haalt automatisch de eerste waarde uit gefilterde resultaten.

Geavanceerde Technieken

Filtering met Meerdere Condities

// AND
$.users[?(@.active == true && @.role == 'admin')]

// OR
$.servers[?(@.status == 'warning' || @.status == 'error')]

// Numeriek
$.metrics[?(@.cpu_usage > 80)]

Nested Structuren

// Direct indexing
$.users[0].permissions[0].level

// Filter in nested array
$.departments[?(@.name == 'IT')].employees.salary

Handige Functies

// Tel items
length($.errors)

// Fallback waarde
$.optional_field || 0

Performance & Limieten

  • Scanning Interval: 60 seconden voor status APIs
  • Timeout: 60 seconden voor externe APIs
  • Channel Limiet: Max 10 channels (REST Custom v2) of 50 channels (REST Custom legacy met .template files)
  • API Rate Limiting: Check API documentatie

Best Practices

  • Begin met 2-3 kritieke channels, bouw daarna uit
  • Gebruik beschrijvende channel namen
  • Stel altijd error limits in
  • Monitor eerst availability, dan metrics
  • Test in PRTG - online evaluators kunnen verschillen

Conclusie

Met REST Custom v2 en JSONPath kun je zonder code complexe API monitoring opzetten. Het Monday.com voorbeeld toont hoe je met filtering en aggregatie specifieke data monitort. Let op PRTG's implementatie verschillen, vooral rond array indexing na filters.

Hulp nodig?

Neem contact op voor API monitoring advies.