Starting with Version 7.0.8 PRTG Network Monitor (currently in public beta testing) includes a web-based API that enables external programs to have access information from the monitoring database and to manipulate the object database of PRTG. The API is HTTP based and uses a set of URLs to access the data.
Note 1: The API is currently under development and in BETA! All features described below are working and have been tested, but there may be minor changes to the API and its output in future versions. Please help us to improve the API! Send your feedback or comments to our support team.
Note 2: After installing the latest version of PRTG please refer to the documentation that is included in the program (see menu item "Help|PRTG API") for the latest version of the documentation.
For example the following URL gives you a hierarchical list of all groups, devices and sensors:
http://yourserver/api/table.xml?content=sensortree
The first part of the URL /api/table.xml addresses an API function, here it is the function that renders a table in XML. The second part is a number of parameters that control the output.
All requests to the API are "stateless" which means that there is no multi-step login process of any kind. The authentication with username/password must always be included in each request by using the username and password parameters. With these parameters the URLs will look like this:
http://yourserver/api/table.xml?content=sensors&columns=sensor&username=myuser&password=mypassword
If you are accessing the API inside your secure LAN you can simply use HTTP. In insecure environments (e.g. when accessing your PRTG server across the Internet) you should use HTTPS requests to make sure that your parameters and passwords are encrypted.
The easiest part is to access the current status of the monitoring data in a read only manner
You will have the easiest start if you click the small XML icons that most tables with data have in PRTG's web interface. Simply navigate to the information that you want to use in your external program, click the XML icon and you will be taken to a URL which renders the content of the table in XML format. You can now use the URL as it is or change various parameters (see parameter description below) to suit your needs.
Often Used XML Tables
There is a number of commonly used XML URLs:
/api/table.xml?content=sensorstree&username=myuser&password=mypassword
/api/table.xml?content=sensors&columns=objid,downtimetime,device,sensor,lastvalue,status,message,priority,minigraph,checkbox&filter_status=5&filter_status=4&filter_status=10&sortby=priority&username=myuser&password=mypassword
/api/table.xml?content=sensors&columns=objid,group,device,sensor,status,message,lastvalue,priority,favorite&username=myuser&password=mypassword
/api/table.xml?content=messages&columns=objid,datetime,parent,type,name,status,message&sortby=date&username=myuser&password=mypassword
/api/table.xml?content=todos&columns=objid,datetime,name,status,priority,message&sortby=date&filter_active=1&username=myuser&password=mypassword
XML Table Parameters
The following parameters are common to all XML table URLs:
Parameter | Description | Possible values |
---|---|---|
content | Selects what objects you want to have in your table | sensortree, sensors, todos, messages, values, channels |
columns | Comma delimited list of columns per record | depends on the content parameter |
output | Controls the output format (there are two XML formats available: xml is the default format (recommended), xmltable renders the HTML table in XML format | xml, xmltable |
count | Maximum number of items (default 500) | 1-50000 |
start | Start with this entry number (can be used with "count" to request the data page-by-page) | any |
filter_drel | Only include records younger than this setting (for log tables with content="messages" only) | today, yesterday, 7days, 30days, 12months, 6months |
id | The table will only contain information for this object id and its child objects (all objects will be used if this parameter is omitted) | any object id of a probe, group, device or sensor |
filter_xxxx | Filters the data | filter_xxxx where xxxx is any column name used in the columns parameter |
sortby | Sorts the data (add a leading "-" to reverse sort order) | any column name used in the columns parameter |
username | Login name of the user account | |
password | Password of the user account |
Here is a number of URLs that will provide system data:
/api/getstatus.xml?username=myuser&password=mypassword
/api/getstatus.htm?username=myuser&password=mypassword
There are a few URLs available to manipulate monitoring objects:
/api/pause.htm?id=objectid&action=0&username=myuser&password=mypassword
/api/pause.htm?id=objectid&action=1&username=myuser&password=mypassword
/api/scannow.htm?id=objectid&username=myuser&password=mypassword
More features will be available soon.