It's been a while, but I'm finally ready to contribute my monitoring changes to the main branch. Below are some screenshots to give you an idea of what the main Ganesha dashboard looks like. It's straightforward to add metrics for other FSALs. Initially, I tried to write all the code in C, but that didn't work well, as the
Digital Ocean Prometheus C client had a serious
performance issue. The higher the Ganesha load, the more overall performance decreased. So I switched to using the recommended
C++ client instead, which has worked much better in my high performance tests. I've also written a wrapper library around that C++ client, so that a single function call from Ganesha automatically generates:
- Request rates.
- Network throughput rates.
- Latency percentiles.
- Request size percentiles.
- Response size percentiles.
What I'd like to do next is to:
- Release the C++ wrapper as a standalone piece of software, under the Apache 2 license. This is so that it can be integrated into other applications.
- Add these modifications to the main branch:
- A header file into src/include.
- C and C++ files into the new directory src/monitoring
- A few function calls into C files in the src/MainNFSD directory.
- Monitoring configuration files into src/config_samples.
- Modify the CMakeLists.txt files, leaving the new monitoring disabled by default.
Does that sound like a good plan? Any comments or suggestions?
Thanks,
Bjorn