Reporting device usage/performance over time

Is there a report in Syncro to show the CPU usage, RAM usage and Disk usage over time for each endpoint, or a list of endpoints?

There’s no stored historical information for performance monitors, only what you see when you click on Background Tools and any alerts that get generated. You’d have to setup perfmon or script something.

1 Like

If I use the Syncro powershell Upload-File function to upload perfmon data for each endpoint, is there a way to download that data using the Syncro API?

I’ve only dabbled in the API, so I can’t say for sure, but I don’t think so. You’d need to put the data in a custom field I think. Which so far in my dabbling the API seems like doesn’t support multi-line submissions despite the field supporting them, which has put a damper on my progress, probably have to store with a separator and then replace with line breaks after reading from API :stuck_out_tongue:

Yes, using a custom field crossed my mind.
I created one, and it took a string with 2000 characters in it.
2 KB of text characters. This is more than I expected.
How much data can be stuffed into a Custom Field of text type?
At this stage, recording the min and max for each hour that the PC is being used would probably be enough.
So we could use the API to read the field, then clear field, so that a script on the endpoint could fill it again. Perhaps use a second custom field to do some basic handshaking.

To date, I’ve only been developing with the customer API.
But my guess is that the Asset custom fields will be in the properties hash, like they are with customers.

Yes they’re under properties. I’ve not hit a max size. It also seems like there’s nothing stopping you from accidentally using a custom field with the name as one of the other properties which could cause some odd issues/confusion. Another possibility would be to use script Log-Activity entries which you can export as a report, but I don’t think there’s a way to grab that with the API.

1 Like

Agreed, custom fields could cause some issues, but seems the only way forward to get the data, collate it to a central point for processing and reporting.

typeperf is the command to use.
Not perfmon which is a GUI
As an example
typeperf “\MEMORY\Available MBytes” -si 5 -sc 5
gets a data point, every 5 seconds for a total of 5 data points.

I’m thinking that if typeperf collected a datapoint every 5 minutes while the end point was running, then every hour put the max, min and average into a custom field, which is then accessed and read via the API, this might provide enough data.

Ultimately I want to display the data on demand as a chart. I’ll have a look at Log-Activity, but I suspect there will be more flexibility using the API.

I’ve used Get-Counter in the past, not sure the difference if there is one (probably just powershell way).

1 Like

After you suggested perfmon, I googled a bit.
Found this page,
Performance Counters Tools - Win32 apps | Microsoft Docs
and then I learnt about typeperf.

Apparently one of the differences between typeperf and Get-Counter is that typeperf can send data directly to a SQL Server with a DSN. Though in this use case, that feature of typeperf isn’t very useful
TypePerf.exe vs PowerShell (microsoft.com)

That makes me think though, maybe you’re better off forgetting syncro for data storage at all and use Zapier or Power Automate or some other ‘glue’ system like that to receive the performance data and let you manipulate or pull it down where you can. I haven’t delved into the world of those but I’d assume there’s some way to submit data to them from powershell script.

This is edging its way up to being a top-of-mind issue for me too. The last handful of new clients had Good enough but somewhat under spec’d hardware and its bumping against our monitoring thresholds often enough to make the alerts annoying but not bad enough for the client to want to buy new machines.

Syncro is not helpful at all in this regard. A PowerShell script taking a sample a couple times a day is only effective if you are looking for devices with very constant load or high resource utilization at known times of day. I’m really looking for something that can give a high-level view and allow drill down to figure out what is causing issues etc when needed. I know some people are running zabbix for this but I haven’t arrived at a solution I like yet.

I’ve used Zabbix internally a bit, but never really warmed to it much. Not sure how I would scale it for use on customer devices.
I really like Nagios for performance monitoring, and only looked at Zabbix in the hope that upgrading would be easier, but again Nagios isn’t something you can scale our over dozens of customers, and it has no concept of a customer or site.
I’ve never used Zapier, but I have used Power Automate. Could use the syncro agent to send an email to Power Automate that includes the perf data, then process it, to store in Microsoft Dataverse. But not sure if Power Automate is the right hammer to hit this nail with.

Power Automate Desktop I find is cost prohibitive from a licensing point of view.

The components of a performance monitoring system of the performance data are

  • collection
  • submittal
  • storage
  • display/reporting

Collection is the OS tools like typeperf or Get-Counter, or a 3rd party tool like osquery, or an agent on the end point.
Submittal is email, database connection or use an agent on the end point.
Storage and Display…these can be many things.

Sadly it looks like Syncro can only be pressed into service for the collection and submittal components above (using custom fields).
The rest will be a bespoke solution. :frowning:

Just the way it works and the resolution I miss from n-central, I don’t think I’d even try to press Syncro into doing collection. Probably looking for an agent I can deploy with Syncro :frowning: