You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by GitBox <gi...@apache.org> on 2019/03/21 14:30:57 UTC
[GitHub] [jena] afs commented on issue #534: [WIP] Proof of concept for
prometheus endpoint
afs commented on issue #534: [WIP] Proof of concept for prometheus endpoint
URL: https://github.com/apache/jena/pull/534#issuecomment-475252662
This is looking good. I have it working in Fuseki Full (webapp form) and in Fuseki Main (the more configurable servlet form) - details for running in Fuseki Main below.
#### Configuration
Something we have to think about carefully is using `ServiceLoader`. Jena already has an [init mechanism](https://jena.apache.org/documentation/notes/system-initialization.html) and it allows controlling the order of initialization. It is quite simple - there is an `init()` method which might be a limitation.
`ActionPrometheus` could use this to wire in a function lambda to call it's `perform()` into a registry.
I don't know at the moment which of a "different ServiceLoader" or "single ServiceLoader" is better.
#### Naming
Rather than hide under `/$/extras/` I think I prefer `/$/metrics/` or something else to cover just statistics reporting. This is a significant functionality, not to be hidden under "extras".
#### Dispatch
The `ActionExtras.perform` could dispatch on the final component of the URI. No fixed string!
It might even be better to look for the dispatch string in `init(ServletConfig)` to find the prefix for this servlet instance.
#### HTTP MIME Type
The HTTP return is set as `application/json;charset=utf-8` but it isn't JSON. If there isn't a specific MIME type, then `text/plain;charset=utf-8` would be better (?).
#### jena-prometheus jar
The shaded JAR has got slf4j classes in it. I don't think they are needed. Can they be excluded
? either in the POM or in the shader. Maybe it is an effect of the `<scope>provided</scope>`.
[jena-fuseki2/jena-fuseki-server/pom.xml](https://github.com/apache/jena/blob/master/jena-fuseki2/jena-fuseki-server/pom.xml) has an example of shading Jena including license control.
#### Licensing
`org.hdrhistogram` and `org.latencyutils` are 2-clause BSD license and we a shipping them inshared artifacts so the acknowledge clause applies. No problem, just a task to do.
#### Fuseki Main example
Illustration of running in `FusekiMain`:
public static void mainServer(String ... a) {
FusekiLogging.setLogging();
FusekiServer server = FusekiServer.create()
.add("/ds", DatasetGraphFactory.createTxnMem())
.port(3030)
.verbose(true)
.addServlet("/$/extras/*", new ActionExtras())
.build();
try { server.start().join(); }
finally { server.stop(); }
}
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services