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