[ 
https://issues.apache.org/jira/browse/MNG-6899?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Guillaume Nodet updated MNG-6899:
---------------------------------
    Fix Version/s: 4.x / Backlog

> Maven Runtime Metrics System
> ----------------------------
>
>                 Key: MNG-6899
>                 URL: https://issues.apache.org/jira/browse/MNG-6899
>             Project: Maven
>          Issue Type: New Feature
>          Components: Performance
>    Affects Versions: 3.6.3
>            Reporter: Enrico Olivelli
>            Assignee: Enrico Olivelli
>            Priority: Major
>             Fix For: 4.0.x-candidate, 4.x / Backlog
>
>
> The idea is to have a mechanism to track runtime metrics for Maven Core 
> itself and for plugins.
> We introduce a new Metrics API that defines Counters, Summaries and other 
> types of metrics.
> The default implementation of the Metrics API will be a no-operation dummy 
> implementation, that does not add significant overhead at runtime.
> We will provide as separate modules an implementation that gathers all of the 
> metric and output them to console or to a file, that can be easily parsed by 
> tools, like Jenkins.
> I will also contribute an implementation for Prometheus.io, this way we can 
> track how the system behaves at runtime, Prometheus.io and other metrics 
> systems store time series data and this is very useful to track down to 
> hotspots during Maven execution.
> For the first implementation we will introduce some base instrumentation of 
> Maven Core, in order to have some useful metric.
> The Metrics System will be loaded from "Extensions" and we will use usual 
> @Inject  mechanism. Maven Core will bundle the noop implementation but it 
> will be overridden by other implementations found on the main classloader of 
> Maven, as we do for other compoments.
> Useful metrics to implement initially:
> - Maven mojo execution times
> - Maven model build time
> - Download of artifacts from remote repositories (needs Wagon intrumentation)
> - Reads/Writes from/to local repository
> This is the Proof-of-concept implementation on Maven Studies
> https://github.com/apache/maven-studies/tree/maven-metrics
> This is a simple implementation
> https://github.com/eolivelli/simplemavenmetrics
> Concrete steps for the implementation:
> - create a new Maven Module "maven-metrics" that contains the API and the 
> "simple" implementation
> - include ONLY the maven-metrics-api module in Maven Core
> - Add basic intrumentation to Maven Core
> - Add basic intrumentation to Wagon and to Resolver



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to