Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

metrics: add library #1148

Closed
wants to merge 2 commits into from
Closed

metrics: add library #1148

wants to merge 2 commits into from

Conversation

edvbld
Copy link
Member

@edvbld edvbld commented May 11, 2021

Hi all,

please review this patch that adds the new metrics library. The metrics library can be used to collect runtime metrics, such as the number of HTTP requests or the number of bot runs. The library is designed according to the Prometheus library guide and currently features the two Prometheus types gauge and counter. The library is designed to allow it to be extended with the histogram and summary types if we find a need for them.

The Counter and Gauge types are designed to be thread-safe and should typically be stored in a private final static variable in a classes (similar to how one might store a Logger instance). A minimal Counter example looks like:

class Example {
    private static final Counter counter = Counter.name("test").register();
}

I won't go into details here on how Prometheus naming and labelling works, please see the Prometheus documentation for those concepts. The goal is that library should be fairly self-explanatory for someone with an understanding of how Prometheus works. Note though that the metrics library itself is not tied to Prometheus in any way, it only supports the collection of runtime metrics. It is however designed to make it easy to write a Prometheus exporter, something I will show in a follow-up patch.

I also added a bunch of unit tests for the new library.

Thanks,
Erik


Progress

  • Change must not contain extraneous whitespace
  • Change must be properly reviewed

Reviewers

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/skara pull/1148/head:pull/1148
$ git checkout pull/1148

Update a local copy of the PR:
$ git checkout pull/1148
$ git pull https://git.openjdk.java.net/skara pull/1148/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 1148

View PR using the GUI difftool:
$ git pr show -t 1148

Using diff file

Download this PR as a diff file:
https://git.openjdk.java.net/skara/pull/1148.diff

@bridgekeeper
Copy link

@bridgekeeper bridgekeeper bot commented May 11, 2021

👋 Welcome back ehelin! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdk openjdk bot added the rfr label May 11, 2021
@mlbridge
Copy link

@mlbridge mlbridge bot commented May 11, 2021

Webrevs

Copy link
Member

@erikj79 erikj79 left a comment

Looks good, thanks for implementing this!

public WithOneLabel(String name, String label) {
this.name = name;
this.label = label;
this.value = new ConcurrentHashMap<String, DoubleAdder>();
Copy link
Member

@erikj79 erikj79 May 11, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can leave out the types between <> here.

public WithOneLabel(String name, String label) {
this.name = name;
this.label = label;
this.value = new ConcurrentHashMap<String, DoubleAdder>();
Copy link
Member

@erikj79 erikj79 May 11, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And here.

@openjdk
Copy link

@openjdk openjdk bot commented May 11, 2021

@edvbld This change now passes all automated pre-integration checks.

ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details.

🔍 One or more changes in this pull request modifies files in areas of the source code that often require two reviewers. Please consider if this is the case for this pull request, and if so, await a second reviewer to approve this pull request before you integrate it.

🌎 Applicable reviewers for one or more changes in this pull request are spread across multiple different time zones. Please consider waiting with integrating this pull request until it has been out for review for at least 24 hours to give all reviewers a chance to review the pull request.

After integration, the commit message for the final commit will be:

metrics: add library

Reviewed-by: erikj

You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed.

At the time when this comment was updated there had been no new commits pushed to the master branch. If another commit should be pushed before you perform the /integrate command, your PR will be automatically rebased. If you prefer to avoid any potential automatic rebasing, please check the documentation for the /integrate command for further details.

➡️ To integrate this PR with the above commit message to the master branch, type /integrate in a new comment.

@openjdk openjdk bot added the ready label May 11, 2021
@edvbld
Copy link
Member Author

@edvbld edvbld commented May 12, 2021

Thanks @erikj79 for reviewing!

/integrate

@openjdk openjdk bot closed this May 12, 2021
@openjdk openjdk bot added integrated and removed ready rfr labels May 12, 2021
@openjdk
Copy link

@openjdk openjdk bot commented May 12, 2021

@edvbld Pushed as commit 537acaf.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
2 participants