PCP, Qpid, and PMDA++
I've recently been working with Performance Co-Pilot (PCP) - specifically, creating some PCP add-ons (known as PMDAs) for exposing custom application metrics to PCP.
While doing so, it became pretty clear to me, that although PCP's PMDA C API is very efficient, a good quality C++ wrapper could significantly cut PMDA development and maintenance time (for people like me, at least), while also increasing runtime safety by building-in all of the checks and balances that most PMDAs (should) perform, in a generic reusable manner.
This sounded like a bit of fun, and suited my present hunger for some more advanced C++ API design work, so went about implementing such a library.
PMDA++
To quote from the PMDA++ project page:
PMDA++ is a header-only library that allows developers to write PMDAs in C++. It is a light C++ wrapper around PCP's C APIs.
That sums it up quite well.
If you're interesed, you can read more about the project, including basic code examples etc, on the PMDA++ project page, available on GitHub.
Qpid PMDA
Additionally, I've made available a basic PMDA for Apache Qpid message brokers using the above PMDA++ library.
This PMDA subscribes to metrics data generated by Qpid messaging brokers, and exports them to the PCP monitoring system.
Project Pages
The above projects can be found on GitHub at the following locations:
- PMDA++ - https://github.com/pcolby/pcp-pmda-cpp
- Qpid PMDA - https://github.com/pcolby/pcp-pmda-qpid
Feel free to have to browse the code, suggest improvements, report issues, clone / fork, create pull requests, whatever you like.