At a high level, available is free plus caches and other easy to reclaim things, for the convenience of humans. https://www.linuxatemyram.com/ uses available in an attempt to explain what is going on. Other counters exist for various caches that exclude free.
In reality, the Linux VMM is complicated and messy. Rarely does memory use add up exactly with simple accounting. I think Cached in /proc/meminfo means page cache but you also dropped dentries and inodes. So buff/cache in free did not change a lot. Try the slabtop if you ever need to dig into kernel objects in detail.
One GB available out of 32 is not a lot from a capacity planning perspective. Consider reducing the number of guests per VM host, or increasing physical memory.
Do not use /proc/sys/vm/drop_caches
which is likely to hurt performance due to the work to drop the caches, and to re-read data from disk. This is for cold storage performance testing, when people feel too lazy to reboot the host.
Speaking of reboots, programs do not have to leak memory for available to slowly decrease. VM hosts and the guests inside are running probably thousands of tasks, some of which stay running and keep various memory allocations. You should be rebooting every few months for software updates, so as long as the "leak" is slow it might not be worth investigating in detail.
Improve your memory monitoring by also looking at pressure stall information. The metric I actually care about is if tasks are stalling for lack of memory, and PSI tracks that.