Great, I'll start sending the changes.

On Tue, Oct 12, 2021 at 10:51 PM Daniel Gryniewicz <dang@redhat.com> wrote:
Sounds plausible.  There may be nits with specifics, but it seems likely
that it's okay.  It'll be nice to have monitoring.

Daniel

On 10/12/21 1:33 AM, Bjorn Leffler wrote:
> 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 <https://github.com/digitalocean/prometheus-client-c> had a
> serious performance issue
> <https://github.com/digitalocean/prometheus-client-c/issues/59>. The
> higher the Ganesha load, the more overall performance decreased. So I
> switched to using the recommended C++ client
> <https://github.com/jupp0r/prometheus-cpp> 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:
>
>  1. 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.
>  2. Add these modifications to the main branch:
>      1. A header file into src/include.
>      2. C and C++ files into the new directory src/monitoring
>      3. A few function calls into C files in the src/MainNFSD directory.
>      4. Monitoring configuration files into src/config_samples.
>      5. 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
>
>
> On Thu, Jul 16, 2020 at 2:57 AM Malahal Naineni <malahal@gmail.com
> <mailto:malahal@gmail.com>> wrote:
>
>     Including rpcinfo checks for various services would be good to have
>     as well.
>
>     On Tue, Jul 14, 2020 at 5:27 PM Daniel Gryniewicz <dang@redhat.com
>     <mailto:dang@redhat.com>> wrote:
>
>         This seems like a fine idea to me.  All the counters I'm aware
>         of are
>         available via DBUS.
>
>         Daniel
>
>         On 7/14/20 2:12 AM, Bjorn Leffler via Devel wrote:
>          > Apart from the counters that you can access through dbus, is
>         there any
>          > other monitoring built into Ganesha?
>          >
>          > I'm thinking of adding it with this higher level plan:
>          > - Exporting metrics from Ganesha to Prometheus.
>          > - Aggregate data in Prometheus.
>          > - Display monitoring consoles and graphs with Grafana.
>          > - Package up Prometheus, Grafana and the preconfigured
>         rules/dashboards
>          > as a Docker image.
>          > - This makes it straightforward to deploy monitoring
>         alongside a Gansha
>          > binary.
>          >
>          > My rough coding plan for the code is to:
>          > - Add a USE_MONITORING directive to the CMakeLists.txt files.
>          > - Add a build dependency to the Prometheus C client
>          > <https://github.com/digitalocean/prometheus-client-c
>         <https://github.com/digitalocean/prometheus-client-c>>.
>          > - Create a src/monitoring directory for the new source files
>         and templates.
>          > - Increment counters and timers throughout the code.
>          > - Use histograms to compute latency percentiles, heatmaps, etc.
>          >
>          > Is this a good idea? Any objections or suggestions?
>          >
>          > Thanks,
>          > Bjorn
>          >
>          >
>          > _______________________________________________
>          > Devel mailing list -- devel@lists.nfs-ganesha.org
>         <mailto:devel@lists.nfs-ganesha.org>
>          > To unsubscribe send an email to
>         devel-leave@lists.nfs-ganesha.org
>         <mailto:devel-leave@lists.nfs-ganesha.org>
>          >
>         _______________________________________________
>         Devel mailing list -- devel@lists.nfs-ganesha.org
>         <mailto:devel@lists.nfs-ganesha.org>
>         To unsubscribe send an email to
>         devel-leave@lists.nfs-ganesha.org
>         <mailto:devel-leave@lists.nfs-ganesha.org>
>
>     _______________________________________________
>     Devel mailing list -- devel@lists.nfs-ganesha.org
>     <mailto:devel@lists.nfs-ganesha.org>
>     To unsubscribe send an email to devel-leave@lists.nfs-ganesha.org
>     <mailto:devel-leave@lists.nfs-ganesha.org>
>