I'm not a sysadmin, so this may be trivial.
We have about 20 Windows Server 2008 R2 VMs we want to monitor centrally using Perfmon. The only issue is that the user account that's going to be doing the monitoring is not (and I assume will never be) in the Administrators group. The servers, and the user account (currently one, but could be more) are all on the same domain.
Right now we're running a pilot with 5 of the servers, touching each VM manually to set the permissions, which is already getting cumbersome to manage. If we decide to roll this out to all the servers, we need a scalable solution to control access.
What is the most flexible way to accomplish this? I'd like a solution that would work with 200 servers just as easily as the 20 servers we have now.
You can use a monitoring tool like System Center Operations Manager or for SMB's System Center Essentials. It collects for you by Microsoft defined counters in a database and you are able to view them. Or you can also Perfmon to connect to a remote computer: To connect to a remote computer with Performance Monitor
Even if you use PerfMon to collect data on each server I would really recommend using another tool for the actual monitoring. In addition to the (rather expensive) tools mentioned by Guido van Brakel in his answer, there are powerful free and/or open source tools like Zabbix and Grafana that can be used at little or no cost.
I would also recommend looking at some kind of management tool to automate deployment of configurations to your Windows servers. If the machines are in an AD domain, group policies and PowerShell scripts can get you a long way pretty much for free except for some virtual elbow grease. More elaborate automation could be performed with Ansible's Windows modules or with PowerShell Desired State Configuration.