Edit: I think James extension system trivially allows to do that.

I'll have a quick poc at exporting metrics to Graphite this weekend (if Lucas sleeps long enough) and feed it as an example to the James community.

Regards,

Benoit

On 10/06/2022 16:41, Benoit TELLIER wrote:
Hello Jean,

For the record, we are moving forward, we will keep the ESReporter for now not to be blocked by orthogonal discussions.

On 10/06/2022 16:01, Jean Helou wrote:
Hey benoit,

First I am happy to see this component raise such interest, and gets so
much attention!


For the record, I want to establish that I don't use nor actually like ES
for such use cases so the ES part doesn't really matter to me.
I do care a lot about metrics collection and I generally dislike being tied
to a single system.

However it's very easy to spend loads of time on technical issue that
delivers little value to end users.
My Prometheus deployments works well and I don't intend to invest more
of the topic. I don't think I will beat you on that ;-)

Today you (linagora?) are happy with prometheus and the platform I target
supports it so I will be using it too.
What worries me is the total lack of choice, the difficulty to add said
choice in the current james ( and I did try) despite boasting a metrics
collection system that is supposed to have pluggable implementations.
I do consider that metrics collection brings a lot of value to end users,
and that being able to integrate in an existing metrics collection
infrastructure is an important point for james adoption beyond your
deployments :D
1. I (we?) would be happy to work on real world customer contracts on the topic. Also contributions are welcomed on the topic.

2. Today we could add an extension mechanism exposing metrics and enabling exports.

Concretely, takes a dropwizard MetricRegistry in, outputs metrics out.

The downside is that we enforce the dropwizard choice onto out users, thus making it harder to change this component when required.

So yes, when we are done with the pulsar/blob repository thing I will
probably spend some time to either submit a couple modules for established
and stable protocols that won't require much maintenance beyond the
occasional version bump ( graphite and collectd reporters most likely since
they are 1st party modules of dropwizard metrics ) or to implement
opentelemetry in a way that doesn't require such internal bindings, brings
additional benefits in terms of features such as tracing and is more
actively maintained than dropwizard metrics.

Also, ELK stack is not used for metrics.
actually it is,  APMs and metrics ingestion have been part of the elastic
solution for quite a while not that I have actually used them


However, there are many monitoring systems based on push instead of pull. The debate has been going for a long time and will probably be going on
forever ( google lists 54 million results for 'push vs pull monitoring
systems' ) it would be nice for james to support at least one of each
model
even if pull is currently the favored approach.

Prometheus is popular these days because it is deployed internally in
kubernetes which is at the top of the hype curve but james should
probably
support at least one push based protocol
You know we `could` support many things it do not mean that we should.

We are a small community with limited means, the maintenance effort most
of the time falls on the same people.

Our efforts should be directed to things that are useful, not a
deprecated metric module with alternatives that targets another Elastic
Search version.

Note that I don't push to keep the es module, I push for having at least
one push based alternative to prometheus out of the box if only to
demonstrate/document how plugging a dropwizard metrics reporter in james
can be achieved if you don't use prometheus


   or at least document how to plug
one in for people who build their own assembly.
+1 thanks for opening with consensus. (was about to do the same ;-) )

I agree we could have an extension mechanism for metric exporters.
Ideally underlying metric library should come up with an SPI so we, as
application writers, don't need to care.\

I'm not going so far as to want an SPI for dropwizard metrics reporters, as I said a couple integrations for the reporters provided by metrics itself
to document how to integrate such a reporter is just fine.
As I wrote above I will eventually contribute such an integration if it has
not been done before I get to it.



Though, if there's a potential move to open telemetry, then adding our
own custom extension mechanism is likely not the right thing.

I would first attempt to implement the graphite/collectd reporter binding, then look into opentelemetry since the former is supposed to be less work
than the latter.
A lot less actually https://metrics.dropwizard.io/4.2.0/manual/collectd.html // https://metrics.dropwizard.io/3.1.0/manual/graphite/ :-)

It should be trivial. The hardest would be to keep the classpath of non collectd users clean, which could be achieved via an extension mechanism located into https://github.com/apache/james-project/tree/master/third-party. You would drop the JAR into extension-jars folder, register your metric reporter FQDN into extensions.properties and go. Even user supplied Jars would be supported.


CF

https://github.com/apache/james-project/blob/master/server/apps/distributed-app/docs/modules/ROOT/pages/operate/metrics.adoc

Upon recent documentation on the topic we likely forgot to update legacy
documentation. That's a fail that will be fixed timely.

I have been unable to navigate to that document on the current website :(
I am not sure how an end user is supposed to discover this ...

cheers
jean


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to