My Business want's to have SLA report on individual business applications. So I need to present a figure saying that "Dynamics AX" was up 98% of agreed time last month. In order to do so I need to collect aggregated information on all devices and services the are used to "produce" the "Dynamics AX" service incl. routers, switches, serveres disk systems, database servers etc. and get 1 uptime figure at the bottom.

However some of these devices are also part of other application SLA at the same time, so some sensor needs to be reported twice - Once for each application SLA figure. Is that possible i Paessler and how do you configure it?

Tim


Article Comments

Hallo,

this report is much too individual to be realized with PRTG.

What you could do is to get the data from the individual sensors using the PRTG API.

https://kb.paessler.com/knowledgebase/en/topic/403-how-can-i-access-my-monitoring-data-via-an-external-interface-e-g-an-api

and then use the data to generate your own report.


Jul, 2011 - Permalink

I might have formulated my question incorrectly, but I dont agree that this is a highly individualised report. The question is wether you can cobine sensors from several devices into a 'pseudo' and get the "uptime" for that pseudo device?

Can you do that in Paessler?

TIA


Jul, 2011 - Permalink

this is not possible at the moment, sorry.


Jul, 2011 - Permalink

You could write yourself a custom sensor that goes into an error state if any of the given sensors are down. That way you can use the results of your custom sensor as the overall uptime.


Jul, 2011 - Permalink

I want to do the same thing. I think PRTG would benefit from SLA monitoring, it would be easier to sell to management as a tool for them to monitor SLA's (maybe a gauge style dashboard) than it is now where they see it as a "technical" tool.

By "custom" you mean a sensor factory sensor?

If so I have done this, however I need to use Boolean logic as for example I may have one SQL server but 3 web servers and the "application" is not necessarily down if one web server is down.

I have created this sensor and it looks fine in live graph and as a library, however the reports it can create are poor as the 4 component sensors (which are now channels) show no data and downtime is the only channel with data.

it would be better if all the channels showed their data and that uptime was available as a percentage too.

One thing to remember is that you must set the scanning iterval to match that of the component sensor with shortest scanning interval


Jan, 2012 - Permalink

I agree this feature would be very nice to have.

In my case I want to monitor overall uptime of all sensors/devices, therefore using a Sensor Factory Sensor would be ridiculous to create, as I would need to input the information for every single sensor on my PRTG Monitoring System, which has around 2500 sensors. Not to mention if I needed to view two channels from some of those sensors, it could well end up being over 4000 entries or more.

In the case of a dashboard object, I took the Top 10 Worst Uptime Object and edited my own version where it takes a single uptime of the worst sensor and displays that. I have yet to work out logic to make an average filter, if it is even possible using the system placeholders.


Dec, 2016 - Permalink

Hi All,

I wrote a Powershell Script that uses PRTG's HTTP-API to acquire the average of the uptime for all sensors in your Monitoring System. This way you can Monitor if you are meeting your SLA for uptime. Just create a EXE/SCRIPT Sensor that will run the code provided.

###Written by: Evan Lane###
###Following Line is in the case of Self-Signed SSL###
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

###Grab all Sensor IDs from List###
$apiurl="http://prtgaddress.com/api/table.xml?id=0&content=sensors&columns=objid&username=admin&passhash=#########"
[xml]$ini = (new-object System.Net.WebClient).downloadstring($apiurl)

###Declare Array to put all uptimes into at end of Foreach###
$target = @()

###For Each Sensor in PRTG, input Uptime into Array###
$ini.sensors.item | foreach {
    $sensorapiurl="http://prtgaddress.com/api/getsensordetails.xml?id="+$_.objid+"&username=admin&passhash=########"
    [xml]$result = (new-object System.Net.WebClient).downloadstring($sensorapiurl)
    $node="uptime"

    ###Remove String Chars from Uptime###
    [string]$strNum = $result.sensordata.$node.innertext.replace("%","").replace(".","")

    ###Check For N/A Uptime Sensors###
    If ($strNum -eq "N/A") { 
        return
    }

    Else{
    ###Convert Uptime to Integer then divide to Percentage Value###
        [int]$intNum = [convert]::ToInt32($strNum, 10)

        $target += $intNum/10000
    }
}

$avg = ($target | Measure-Object -Average)
$final = [math]::Round($avg.Average, 2)

###Sensor Formatting value:message###
write-host $final":"Current SLA is $final%

For Dashboard integration - Add a Status and Message Object for this Sensor to your Map. it will display the Message of "Current SLA is Precentage"


For Report generation - Change the output of the script from write-host to | Out-File -filepath C:\Example


Hopefully this meets your requirements!


Dec, 2016 - Permalink

Hey Evan, thanks for the help here! Really appreciate it :) Happy holidays!


Dec, 2016 - Permalink

This is great.

Is there a way so that we can report this but not on all sensors but say a library?


Jan, 2017 - Permalink

Hi @JGW777

I have taken a quick look through PRTG API/Live Data (accessible via https://hostname/api.html?tabid=3 on your PRTG Server), which has a lot of the information in regards to how to make the report like I did through the PRTG WebServices.

I don't see anything on there in regards to filtering by a library, the XML Table Query Builder closest thing seems to be groups. You could modify my previous script to only add and average specific sensors, basically manually inputting each sensor from a library. This could take a long time to do, but it's the best alternative I can find myself.

Perhaps @Stephan Linke would know more.

Cheers!


Jan, 2017 - Permalink

Depending on how the sensors are added to the library, you could use &filter_tags=tag(tag1,tag2) in the API call. But for manually added sensors, there's no way I'm aware of to filter for them :/


Jan, 2017 - Permalink