Hello, when I query sensor data via api it returns a lot of properties including "statustext" and "statusid". However historical data doesn't include status in it. How can I get historical status in json format?

I'm using this query to get historical data: /api/historicdata.json?id=2741&sdate=2017-05-23-00-00-00&edate=2017-05-23-24-00-00&username=[name]&passhash=[passhash]

Thanks!


Article Comments

Dear Zakhar

The historic data only contains numeric channel data. The sensor status value, or status text is not stored. Only the current status/text can be read, because the historic status or text is not recorded.


May, 2017 - Permalink

Thanks Arne,

How can I figure out if the sensor was Up or Down then? Historical data only returns "Value" and "Coverage", but neither of them seem to be making sense. What field can be used? And how to get those fields?


May, 2017 - Permalink

Thanks Arne,

So what is the recommended way to find out whether ping sensor was up or down from the historical data?

Zakhar


May, 2017 - Permalink

Dear Zakhar

Yes.

  • If the sensor scan fails, you get no data in the sense of empty output (except for coverage) If the sensor is down due to an error, this is the output (no values, but coverage.)
  • If there was not scan at all (for example because the sensor was paused, or PRTG was not running) no data is recorded. That means if you use raw data output without average, even those time stamps are missing. If you have averages instead, you get the output for the selected time span with the according coverage value for each average interval.
  • If the sensor was down due to a limit is something which is not checked when historic data is extracted.

May, 2017 - Permalink

Hi Arne,

So what exactly does value represent? I saw values equal 0%, 43%, 100% - What are those?

Can I assume if the coverage is 100% and value is 100% that means that the sensor was "Up" at the period of time, if the coverage is 100% and value is 0% the sensor was down, if both coverage and value is 0% then there is no data stored for the period?

I understand that I need to use avg parameter? I've noticed that it defaults to 5 minutes (300 seconds) is it right?


May, 2017 - Permalink

Dear Zakhar

The default interval depends on the range. For example, if you query data for more than a months, you can only get hourly intervals as that is the minimum interval for that range.

Coverage means if the sensor itself was running at all and says nothing about up or down. Downtime is the coverage portion of downtime, meaning sensor error status.

If coverage is 100% and uptime is 100%, the sensor was up the whole time, that is correct. Your other two assumptions are correct as well.

Please clarify your first question (the one with the values.)


May, 2017 - Permalink

Hi Arne,

I asked what does the "Value" represent? You mentioned "Uptime" and "Downtime", but the historical api doesn't return neither of them, it returns "Value" and "Coverage". So what is the "Value"? Value of what?

This form doesn't let me attach images, bit I think I know what I mean.

Regards, Zakhar


May, 2017 - Permalink

Ok, I see where the confusion is coming from, I use Postman app to test the api, and I just realised that I've been looking at "Prettified" response, where response objects look like this:

...
    {
      "datetime": "5/30/2017 12:00:00 AM - 12:05:00 AM",
      "datetime_raw": 42885.0034722222,
      "value": "0 %",
      "value_raw": 0,
      "coverage": "100 %",
      "coverage_raw": 10000
    },
...

In fact this is only part of the actual response object as the api returns invalid json with duplicated fields:

...
{
	"datetime": "5/30/2017 12:00:00 AM - 12:05:00 AM",
	"datetime_raw": 42885.0034722222,
	"value": "100 %",
	"value_raw": 100.0000,
	"value": "3 %",
	"value_raw": 3.0000,
	"value": "73 %",
	"value_raw": 73.0000,
	"value": "6,013 MByte",
	"value_raw": 6305165312.0000,
	"value": "0 %",
	"value_raw": 0.0000,
	"coverage": "100 %",
	"coverage_raw": 10000
}
...

If I request xml I get this which makes much more sense:

...
<item>
        <datetime>5/23/2017 12:00:57 AM</datetime>
        <datetime_raw>42878.0006680093</datetime_raw>
        <value channel="Health" channelid="0">100 %</value>
        <value_raw channel="Health" channelid="0">100.0000</value_raw>
        <value channel="System CPU Load" channelid="1">3 %</value>
        <value_raw channel="System CPU Load" channelid="1">3.0000</value_raw>
        <value channel="Available Memory Percent" channelid="2">66 %</value>
        <value_raw channel="Available Memory Percent" channelid="2">66.0000</value_raw>
        <value channel="Available Memory" channelid="3">5,369 MByte</value>
        <value_raw channel="Available Memory" channelid="3">5629648896.0000</value_raw>
        <coverage>100 %</coverage>
        <coverage_raw>0000010000</coverage_raw>
    </item>
...

I don't really need xml, is it possible to filter out the returned channel? I guess I only need "Health" channel really

Thanks!


May, 2017 - Permalink

Dear Zakhar

The JSON output requires &usecaption=1 in the call to also output those properties. (JSON is often use internally and does not need those captions for the internal processing.)


May, 2017 - Permalink

Hi Arne, Ok, this is definitely helpful, are those parameters documented anywhere? I couldn't find any helpful historical data documentation.

Also, I'm having issues with the coverage, e.g. I'm requesting historical data for a short 30 minutes time interval, the api returns data that is outside of the interval, and has coverage "0 %" and empty channel values.

This is intermittent issue and I can't always reproduce it. Any thoughts on that?


May, 2017 - Permalink

Dear Zakhar

Those parameters are not documented. The available historic data documentation is integrated in the web interface, via /api.htm?tabid=5 Only the most commonly used options are documented. We constantly develop the API further, internally used parameters can be changed or even deprecated in future versions. We rather document the part of the API which is considered stable.

If you get no data with an historic data API call, please check the sdate and edate, if you queried a time frame for which data exist.


May, 2017 - Permalink