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()nietlen() - 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.