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

[1617] Add ConstnativeHistogram #1654

Merged
merged 1 commit into from
Nov 14, 2024

Conversation

shivanthzen
Copy link
Contributor

@shivanthzen shivanthzen commented Oct 16, 2024

Fixes: #1617
Add exported ConstNativeHistogram - this can be used to build native histograms if one already has the relevant data without calling the observe function. A viable use case is while converting exponential histograms to nativehistograms.

@shivanthzen
Copy link
Contributor Author

@ArthurSens Maybe you can take a look at this PR.

Copy link
Member

@ArthurSens ArthurSens left a comment

Choose a reason for hiding this comment

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

Thanks for working on this! I've added a few comments but I'm not a native histogram expert, it would be nice if @beorn7 or @krajorama could also take a look here.

question: Have you tried using your commit on OTel's side to make sure you can translate their format into ours?

@beorn7
Copy link
Member

beorn7 commented Oct 17, 2024

Will have a look ASAP (which won't be before next week, sorry).

@shivanthzen shivanthzen force-pushed the constNativeHistogram branch 2 times, most recently from 96eeddd to ad21924 Compare October 18, 2024 10:04
Copy link
Member

@krajorama krajorama left a comment

Choose a reason for hiding this comment

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

Hi, I understand the use case of wanting to expose OTEL exponential histograms from the Prometheus exporter in the collector. How would you use it actually? Constantly register and unregister the metric to update the exposed values? Or just use it's Write() method to get to the data?

In any case, the naming is going to be weird as you're not actually using it as a const :)

If I understand correctly, currently it will only work for counter histograms, not gauge histograms due to limitations in client_golang.

I'm a little afraid of abuse of this interface, but don't see true stoppers for now, will consult @beorn7 .

zeroBucket uint64
}

func NewConstNativeHistogram(desc *Desc, count uint64, sum float64, postiveBuckets, negativeBuckets map[int]int64, zeroBucket uint64,
Copy link
Member

Choose a reason for hiding this comment

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

Needs doc string to explain the arguments and the fact that this is exposed as a counter type histogram, treated as a counter on scrape.

Copy link
Member

Choose a reason for hiding this comment

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

In fact, I do actually think that exposing a gauge histogram will be one of the common use cases for using this function. So let's maybe add a bool argument here so that the user can switch between counter and gauge histogram.

Copy link
Member

Choose a reason for hiding this comment

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

Style nit: Prometheus code usually does a line break after the opening parenthesis in case of multiline argument lists.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Tried this. Wouldn't this blow up the argument list? Is it better to create a seperate a constNaticveGuageHistogram ?

Copy link
Contributor Author

@shivanthzen shivanthzen Nov 1, 2024

Choose a reason for hiding this comment

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

I'm still unclear about including a gauge histogram . As per my understanding , we will need to add postiveBuckets, negativeBuckets of type map[int]float64 as an argument (or use a generic parameter). Adding a boolean parameter will not suffice.

Copy link
Member

Choose a reason for hiding this comment

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

It sounds like you are thinking about a float histogram. That's something we might want to add later (ideally together with the option of creating classic float histograms). However, the use case for float histograms in instrumentation is very rare.

I am in fact talking about a gauge histogram. It merely requires to set a different MetricType in the MetricFamily. However, I've just realized that we currently have no way of communicating the difference of counter histogram (i.e. the "normal" histogram) and gauge histogram during metrics collection. For that, we needed Desc to have a metric type field (which was the plan for quite some time).

So I'm pretty sure we cannot solve this problem in this PR, because it needed too much re-architecting.

But if we assume that the difference between counter histogram and gauge histogram will be in the Desc, we actually don't need a bool parameter here, but just have to later allow the option of creating "typed" Descs.

In conclusion, let's not do gauge histograms right now.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That's true. I was indeed confused about a float histogram and gauge histogram.

Copy link
Member

@beorn7 beorn7 left a comment

Choose a reason for hiding this comment

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

Thanks @shivanthzen for tackling this, and thanks for the review so far @krajorama and @ArthurSens . If I haven't commented on a previous review comment, I agree with it. :)

zeroBucket uint64
}

func NewConstNativeHistogram(desc *Desc, count uint64, sum float64, postiveBuckets, negativeBuckets map[int]int64, zeroBucket uint64,
Copy link
Member

Choose a reason for hiding this comment

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

In fact, I do actually think that exposing a gauge histogram will be one of the common use cases for using this function. So let's maybe add a bool argument here so that the user can switch between counter and gauge histogram.

zeroBucket uint64
}

func NewConstNativeHistogram(desc *Desc, count uint64, sum float64, postiveBuckets, negativeBuckets map[int]int64, zeroBucket uint64,
Copy link
Member

Choose a reason for hiding this comment

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

Style nit: Prometheus code usually does a line break after the opening parenthesis in case of multiline argument lists.

@shivanthzen
Copy link
Contributor Author

Thanks for the comments. I'll resolve them this weekend

Copy link
Member

@ArthurSens ArthurSens left a comment

Choose a reason for hiding this comment

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

I had just a quick look today :)

Comment on lines 1882 to 1925
if err := validateCount(count, negativeBuckets, positiveBuckets, zeroBucket); err != nil {
return nil, err
}
Copy link
Member

Choose a reason for hiding this comment

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

Do we need to validate Sum as well?

Copy link
Member

Choose a reason for hiding this comment

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

Not really. Sum could by anything. I mean, there could be consistency checks like the sum cannot be negative if there are only positive observations, or the sum has to be zero without any observations, and many more. But I don't know if that would be very helpful. We should only check for conditions that would make Prometheus reject the histogram upon ingestion.

return nil
}

func makeBucketsAny(buckets map[int]int64) ([]*dto.BucketSpan, []int64) {
Copy link
Member

Choose a reason for hiding this comment

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

hey, could you clarify what Any means here?

Copy link
Member

Choose a reason for hiding this comment

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

Probably "positive or negative".
I would just call it makeBuckets.

Copy link
Member

Choose a reason for hiding this comment

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

+1 for makeBuckets

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hmm, makebuckets alreadyexists in the namespace. I could do makeBucketfrommap

Copy link
Member

@beorn7 beorn7 left a comment

Choose a reason for hiding this comment

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

Looks good in general.

Despite the frequent nit pickings about naming etc., I haven't yet checked the technical correctness very deeply yet (although it looks fine as far as I can see right now).

Comment on lines 1882 to 1925
if err := validateCount(count, negativeBuckets, positiveBuckets, zeroBucket); err != nil {
return nil, err
}
Copy link
Member

Choose a reason for hiding this comment

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

Not really. Sum could by anything. I mean, there could be consistency checks like the sum cannot be negative if there are only positive observations, or the sum has to be zero without any observations, and many more. But I don't know if that would be very helpful. We should only check for conditions that would make Prometheus reject the histogram upon ingestion.

return nil
}

func makeBucketsAny(buckets map[int]int64) ([]*dto.BucketSpan, []int64) {
Copy link
Member

Choose a reason for hiding this comment

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

Probably "positive or negative".
I would just call it makeBuckets.

Copy link
Member

@ArthurSens ArthurSens left a comment

Choose a reason for hiding this comment

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

LGTM, but let's wait for an approval from Beorn or Krajo as well

Thanks for the work!

@ArthurSens
Copy link
Member

Oh, looks like some commits weren't signed and there's one test failing 🤔

The test seems to be flaky, it's also failing in other PRs

@shivanthzen
Copy link
Contributor Author

I can sign the commits once the PR is approved, It seems signing will need a force push

@beorn7
Copy link
Member

beorn7 commented Nov 2, 2024

I can sign the commits once the PR is approved, It seems signing will need a force push

Yes, it changes the commits and therefore needs a force-push. However, it is essential to sign before approval. That's kind of the point.

Copy link
Member

@beorn7 beorn7 left a comment

Choose a reason for hiding this comment

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

Thanks for addressing the feedback.

I have no realized something about exemplars we had not discussed before.

I have also realized we cannot do gauge histograms right now. Needs more discussion and planning, which is out of scope of this PR.

@shivanthzen
Copy link
Contributor Author

Force pushed with signed commits.

@ArthurSens
Copy link
Member

@shivanthzen, looks like you accidentally added unrelated commits to your PR, could you keep only the ones that you've authored here?

@shivanthzen
Copy link
Contributor Author

shivanthzen commented Nov 6, 2024

@ArthurSens Removed other commits from the branch

Copy link
Member

@krajorama krajorama left a comment

Choose a reason for hiding this comment

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

couple of minor comments

@kakkoyun kakkoyun requested a review from beorn7 November 11, 2024 14:32
@kakkoyun kakkoyun added this to the v1.21.0 milestone Nov 11, 2024
@kakkoyun
Copy link
Member

@beorn7 could you have another look at it?

@beorn7
Copy link
Member

beorn7 commented Nov 12, 2024

This is very close to the top of my review queue now. Will have a look soon, hopefully today.

Copy link
Member

@beorn7 beorn7 left a comment

Choose a reason for hiding this comment

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

Just some minor things about doc comments left.

@beorn7
Copy link
Member

beorn7 commented Nov 13, 2024

Looks good to me, but there are lint warnings now. (They are coming from a recently added check, but they are still relevant.) Also, DCO signing is missing. @shivanthzen could you address the lint warnings and sign the commits? (Feel free to squash commits into fewer or just one before doing that.)

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

Apply suggestions from code review

Co-authored-by: Arthur Silva Sens <arthursens2005@gmail.com>
Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

Fix references and existing tests

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

Review comments

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

fmt

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

validation

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

Count validation

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

Validation

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

Review comments

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

Space formatting

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

Review comments

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

Rename SyncMaptoMap -> SyncMapToMap

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

Remove exemplars from parameters for constNativeHistogram function

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

Update prometheus/histogram.go

Co-authored-by: George Krajcsovits <krajorama@users.noreply.github.com>
Signed-off-by: Shivanth MP <shivanth.metchem@deliveryhero.com>

Update prometheus/histogram.go

Co-authored-by: George Krajcsovits <krajorama@users.noreply.github.com>
Signed-off-by: Shivanth MP <shivanth.metchem@deliveryhero.com>

Update prometheus/histogram.go

Co-authored-by: George Krajcsovits <krajorama@users.noreply.github.com>
Signed-off-by: Shivanth MP <shivanth.metchem@deliveryhero.com>

Update prometheus/histogram.go

Co-authored-by: Björn Rabenstein <github@rabenste.in>
Signed-off-by: Shivanth MP <shivanth.metchem@deliveryhero.com>

Review comments

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>

Lint fix

Signed-off-by: Shivanth <shivanth.metchem@deliveryhero.com>
atoulme pushed a commit to open-telemetry/opentelemetry-collector-contrib that referenced this pull request Mar 6, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[github.com/prometheus/client_golang](https://redirect.github.com/prometheus/client_golang)
| `v1.20.5` -> `v1.21.1` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fprometheus%2fclient_golang/v1.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fprometheus%2fclient_golang/v1.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fprometheus%2fclient_golang/v1.20.5/v1.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fprometheus%2fclient_golang/v1.20.5/v1.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>prometheus/client_golang
(github.com/prometheus/client_golang)</summary>

###
[`v1.21.1`](https://redirect.github.com/prometheus/client_golang/releases/tag/v1.21.1):
/ 2025-03-04

[Compare
Source](https://redirect.github.com/prometheus/client_golang/compare/v1.21.0...v1.21.1)

This release addresses a major performance regression introduced in
[#&#8203;1661](https://redirect.github.com/prometheus/client_golang/issues/1661)
-- thanks to all who [reported this
quickly](https://redirect.github.com/prometheus/client_golang/issues/1748):
[@&#8203;chlunde](https://redirect.github.com/chlunde),
[@&#8203;dethi](https://redirect.github.com/dethi),
[@&#8203;aaronbee](https://redirect.github.com/aaronbee)
[@&#8203;tsuna](https://redirect.github.com/tsuna) 💪🏽. This patch
release also fixes the iOS build.

We will be hardening the release process even further
([#&#8203;1759](https://redirect.github.com/prometheus/client_golang/issues/1759),
[#&#8203;1761](https://redirect.github.com/prometheus/client_golang/issues/1761))
to prevent this in future, sorry for the inconvenience!

The high concurrency optimization is planned to be eventually
reintroduced, however in a much safer manner, potentially in a separate
API.

- \[BUGFIX] prometheus: Revert of `Inc`, `Add` and `Observe` cumulative
metric CAS optimizations
([#&#8203;1661](https://redirect.github.com/prometheus/client_golang/issues/1661)),
causing regressions on low concurrency cases
[#&#8203;1757](https://redirect.github.com/prometheus/client_golang/issues/1757)
- \[BUGFIX] prometheus: Fix GOOS=ios build, broken due to
process_collector_\* wrong build tags.
[#&#8203;1758](https://redirect.github.com/prometheus/client_golang/issues/1758)

<details>
<summary>All commits</summary>

- Revert "exponential backoff for CAS operations on floats" and cut
1.21.1 by [@&#8203;bwplotka](https://redirect.github.com/bwplotka) in
[https://github.com/prometheus/client_golang/pull/1757](https://redirect.github.com/prometheus/client_golang/pull/1757)
- Fix ios build for 1.21.1 by
[@&#8203;bwplotka](https://redirect.github.com/bwplotka) in
[https://github.com/prometheus/client_golang/pull/1758](https://redirect.github.com/prometheus/client_golang/pull/1758)

</details>

**Full Changelog**:
prometheus/client_golang@v1.21.0...v1.21.1

###
[`v1.21.0`](https://redirect.github.com/prometheus/client_golang/releases/tag/v1.21.0):
/ 2025-02-19

[Compare
Source](https://redirect.github.com/prometheus/client_golang/compare/v1.20.5...v1.21.0)

:warning: This release contains potential breaking change if you upgrade
`github.com/prometheus/common` to 0.62+ together with client_golang (and
depend on the strict, legacy validation for the label names). New common
version [changes `model.NameValidationScheme` global
variable](https://redirect.github.com/prometheus/common/pull/724), which
relaxes the validation of label names and metric name, allowing all
UTF-8 characters. Typically, this should not break any user, unless your
test or usage expects strict certain names to panic/fail on
client_golang metric registration, gathering or scrape. In case of
problems change `model.NameValidationScheme` to old
`model.LegacyValidation` value in your project `init` function.
:warning:

- \[BUGFIX] gocollector: Fix help message for runtime/metric metrics.
[#&#8203;1583](https://redirect.github.com/prometheus/client_golang/issues/1583)
- \[BUGFIX] prometheus: Fix `Desc.String()` method for no labels case.
[#&#8203;1687](https://redirect.github.com/prometheus/client_golang/issues/1687)
- \[PERF] prometheus: Optimize popular `prometheus.BuildFQName`
function; now up to 30% faster.
[#&#8203;1665](https://redirect.github.com/prometheus/client_golang/issues/1665)
- \[PERF] prometheus: Optimize `Inc`, `Add` and `Observe` cumulative
metrics; now up to 50% faster under high concurrent contention.
[#&#8203;1661](https://redirect.github.com/prometheus/client_golang/issues/1661)
- \[CHANGE] Upgrade prometheus/common to 0.62.0 which changes
`model.NameValidationScheme` global variable.
[#&#8203;1712](https://redirect.github.com/prometheus/client_golang/issues/1712)
- \[CHANGE] Add support for Go 1.23.
[#&#8203;1602](https://redirect.github.com/prometheus/client_golang/issues/1602)
- \[FEATURE] process_collector: Add support for Darwin systems.
[#&#8203;1600](https://redirect.github.com/prometheus/client_golang/issues/1600)
[#&#8203;1616](https://redirect.github.com/prometheus/client_golang/issues/1616)
[#&#8203;1625](https://redirect.github.com/prometheus/client_golang/issues/1625)
[#&#8203;1675](https://redirect.github.com/prometheus/client_golang/issues/1675)
[#&#8203;1715](https://redirect.github.com/prometheus/client_golang/issues/1715)
- \[FEATURE] api: Add ability to invoke `CloseIdleConnections` on
api.Client using `api.Client.(CloseIdler).CloseIdleConnections()`
casting.
[#&#8203;1513](https://redirect.github.com/prometheus/client_golang/issues/1513)
- \[FEATURE] promhttp: Add
`promhttp.HandlerOpts.EnableOpenMetricsTextCreatedSamples` option to
create OpenMetrics \_created lines. Not recommended unless you want to
use opt-in Created Timestamp feature. Community works on OpenMetrics 2.0
format that should make those lines obsolete (they increase cardinality
significantly).
[#&#8203;1408](https://redirect.github.com/prometheus/client_golang/issues/1408)
- \[FEATURE] prometheus: Add `NewConstNativeHistogram` function.
[#&#8203;1654](https://redirect.github.com/prometheus/client_golang/issues/1654)

<details>
<summary> All commits </summary>
* Merge release-1.20 to main by @&#8203;bwplotka in
prometheus/client_golang#1582
* gocollector: Tiny fix for help message with runtime/metrics source. by
@&#8203;bwplotka in
prometheus/client_golang#1583
* ci: bump dagger to the latest version by @&#8203;marcosnils in
prometheus/client_golang#1588
* Merge release-1.20 back to main by @&#8203;ArthurSens in
prometheus/client_golang#1593
* Update linting by @&#8203;SuperQ in
prometheus/client_golang#1603
* Update supported Go versions by @&#8203;SuperQ in
prometheus/client_golang#1602
* build(deps): bump golang.org/x/sys from 0.22.0 to 0.24.0 by
@&#8203;dependabot in
prometheus/client_golang#1611
* build(deps): bump github.com/prometheus/common from 0.55.0 to 0.57.0
by @&#8203;dependabot in
prometheus/client_golang#1612
* changed the name of all variables with min/max name by
@&#8203;parthlaw in
prometheus/client_golang#1606
* Update Dagger and build. by @&#8203;SuperQ in
prometheus/client_golang#1610
* build(deps): bump github/codeql-action from 3.25.15 to 3.26.6 in the
github-actions group across 1 directory by @&#8203;dependabot in
prometheus/client_golang#1614
* examples: Improved GoCollector example. by @&#8203;bwplotka in
prometheus/client_golang#1589
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1615
* process_collector: fill in most statistics on macOS by
@&#8203;mharbison72 in
prometheus/client_golang#1600
* ⚡ http client defer CloseIdleConnections by @&#8203;cuisongliu in
prometheus/client_golang#1513
* Set allow-utf-8 in Format during tests to avoid escaping. by
@&#8203;ywwg in prometheus/client_golang#1618
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1622
* Merge Release 1.20 back to main by @&#8203;ArthurSens in
prometheus/client_golang#1627
* examples: Add custom labels example by @&#8203;ying-jeanne in
prometheus/client_golang#1626
* Refactor default runtime metrics tests for Go collector so that
default runtime metric set autogenerates by @&#8203;vesari in
prometheus/client_golang#1631
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1628
* process_xxx_memory statistics for macOS (cgo) by @&#8203;mharbison72
in prometheus/client_golang#1616
* build(deps): bump github.com/klauspost/compress from 1.17.9 to 1.17.10
by @&#8203;dependabot in
prometheus/client_golang#1633
* build(deps): bump golang.org/x/sys from 0.24.0 to 0.25.0 by
@&#8203;dependabot in
prometheus/client_golang#1632
* process_collector: Add Platform-Specific Describe for processCollector
by @&#8203;ying-jeanne in
prometheus/client_golang#1625
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1635
* build(deps): bump the github-actions group with 4 updates by
@&#8203;dependabot in
prometheus/client_golang#1634
* Optionally print OM created lines by @&#8203;ArthurSens in
prometheus/client_golang#1408
* process_collector: merge wasip1 and js into a single implementation by
@&#8203;ying-jeanne in
prometheus/client_golang#1644
* Merge release 1.20 to main by @&#8203;bwplotka in
prometheus/client_golang#1647
* Add Arianna as maintainer 💪 by @&#8203;ArthurSens in
prometheus/client_golang#1651
* test add headers round tripper by @&#8203;Manask322 in
prometheus/client_golang#1657
* build(deps): bump github.com/klauspost/compress from 1.17.10 to
1.17.11 by @&#8203;dependabot in
prometheus/client_golang#1668
* build(deps): bump golang.org/x/sys from 0.25.0 to 0.26.0 by
@&#8203;dependabot in
prometheus/client_golang#1669
* build(deps): bump github.com/prometheus/common from 0.59.1 to 0.60.1
by @&#8203;dependabot in
prometheus/client_golang#1667
* build(deps): bump google.golang.org/protobuf from 1.34.2 to 1.35.1 by
@&#8203;dependabot in
prometheus/client_golang#1670
* Optimize BuildFQName function by @&#8203;jkroepke in
prometheus/client_golang#1665
* fix: use injected now() instead of time.Now() in summary methods by
@&#8203;imorph in prometheus/client_golang#1672
* process_collector: avoid a compiler warning on macOS (fixes
#&#8203;1660) by @&#8203;mharbison72 in
prometheus/client_golang#1675
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1674
* build(deps): bump the github-actions group across 1 directory with 3
updates by @&#8203;dependabot in
prometheus/client_golang#1678
* [chore]: enable perfsprint linter by @&#8203;mmorel-35 in
prometheus/client_golang#1676
* Duplicate of #&#8203;1662 by @&#8203;imorph in
prometheus/client_golang#1673
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1679
* chore: enable usestdlibvars linter by @&#8203;mmorel-35 in
prometheus/client_golang#1680
* Add: exponential backoff for CAS operations on floats by
@&#8203;imorph in prometheus/client_golang#1661
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1683
* [1617] Add ConstnativeHistogram by @&#8203;shivanthzen in
prometheus/client_golang#1654
* fix: replace fmt.Errorf with errors.New by @&#8203;kakkoyun in
prometheus/client_golang#1689
* Add codeowners by @&#8203;kakkoyun in
prometheus/client_golang#1688
* fix: add very small delay between observations in
`TestHistogramAtomicObserve` by @&#8203;imorph in
prometheus/client_golang#1691
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1692
* Fix: handle nil variableLabels in Desc.String() method and add tests
for nil label values by @&#8203;kakkoyun in
prometheus/client_golang#1687
* examples: Follow best practices and established naming conventions by
@&#8203;lilic in prometheus/client_golang#1650
* setup OSSF Scorecard workflow by @&#8203;mmorel-35 in
prometheus/client_golang#1432
* build(deps): bump google.golang.org/protobuf from 1.35.1 to 1.35.2 by
@&#8203;dependabot in
prometheus/client_golang#1697
* build(deps): bump golang.org/x/sys from 0.26.0 to 0.27.0 by
@&#8203;dependabot in
prometheus/client_golang#1696
* build(deps): bump the github-actions group with 5 updates by
@&#8203;dependabot in
prometheus/client_golang#1695
* update links to openmetrics to reference the v1.0.0 release by
@&#8203;dashpole in
prometheus/client_golang#1699
* build(deps): bump google.golang.org/protobuf from 1.35.2 to 1.36.1 by
@&#8203;dependabot in
prometheus/client_golang#1706
* build(deps): bump golang.org/x/sys from 0.27.0 to 0.28.0 by
@&#8203;dependabot in
prometheus/client_golang#1705
* build(deps): bump the github-actions group with 5 updates by
@&#8203;dependabot in
prometheus/client_golang#1707
* build(deps): bump github.com/prometheus/common from 0.60.1 to 0.61.0
by @&#8203;dependabot in
prometheus/client_golang#1704
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1703
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1708
* Upgrade to prometheus/common 0.62.0 with breaking change by
@&#8203;bwplotka in
prometheus/client_golang#1712
* build(deps): bump golang.org/x/net from 0.26.0 to 0.33.0 in
/tutorials/whatsup by @&#8203;dependabot in
prometheus/client_golang#1713
* docs: Add RELEASE.md for the release process by @&#8203;kakkoyun in
prometheus/client_golang#1690
* tutorials/whatsup: Updated deps by @&#8203;bwplotka in
prometheus/client_golang#1716
* process collector: Fixed pedantic registry failures on darwin with
cgo. by @&#8203;bwplotka in
prometheus/client_golang#1715
* Revert "ci: daggerize test and lint pipelines (#&#8203;1534)" by
@&#8203;bwplotka in
prometheus/client_golang#1717
* Cut 1.21.0-rc.0 by @&#8203;bwplotka in
prometheus/client_golang#1718
* Cut 1.21 by @&#8203;bwplotka in
prometheus/client_golang#1737
</details>

#### New Contributors
* @&#8203;parthlaw made their first
contributi[https://github.com/prometheus/client_golang/pull/1606](https://redirect.github.com/prometheus/client_golang/pull/1606)l/1606
* @&#8203;mharbison72 made their first
contributi[https://github.com/prometheus/client_golang/pull/1600](https://redirect.github.com/prometheus/client_golang/pull/1600)l/1600
* @&#8203;cuisongliu made their first
contributi[https://github.com/prometheus/client_golang/pull/1513](https://redirect.github.com/prometheus/client_golang/pull/1513)l/1513
* @&#8203;ying-jeanne made their first
contributi[https://github.com/prometheus/client_golang/pull/1626](https://redirect.github.com/prometheus/client_golang/pull/1626)l/1626
* @&#8203;Manask322 made their first
contributi[https://github.com/prometheus/client_golang/pull/1657](https://redirect.github.com/prometheus/client_golang/pull/1657)l/1657
* @&#8203;jkroepke made their first
contributi[https://github.com/prometheus/client_golang/pull/1665](https://redirect.github.com/prometheus/client_golang/pull/1665)l/1665
* @&#8203;imorph made their first
contributi[https://github.com/prometheus/client_golang/pull/1672](https://redirect.github.com/prometheus/client_golang/pull/1672)l/1672
* @&#8203;mmorel-35 made their first
contributi[https://github.com/prometheus/client_golang/pull/1676](https://redirect.github.com/prometheus/client_golang/pull/1676)l/1676
* @&#8203;shivanthzen made their first
contributi[https://github.com/prometheus/client_golang/pull/1654](https://redirect.github.com/prometheus/client_golang/pull/1654)l/1654
* @&#8203;dashpole made their first
contributi[https://github.com/prometheus/client_golang/pull/1699](https://redirect.github.com/prometheus/client_golang/pull/1699)l/1699

**Full Changelog**:
prometheus/client_golang@v1.20.5...v1.21.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "on tuesday" (UTC), Automerge - At any
time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-telemetry/opentelemetry-collector-contrib).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE4NS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiLCJyZW5vdmF0ZWJvdCJdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com>
dmathieu added a commit to open-telemetry/opentelemetry-go that referenced this pull request Mar 18, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
…21.1 (#6463)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[github.com/prometheus/client_golang](https://redirect.github.com/prometheus/client_golang)
| `v1.20.5` -> `v1.21.1` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fprometheus%2fclient_golang/v1.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fprometheus%2fclient_golang/v1.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fprometheus%2fclient_golang/v1.20.5/v1.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fprometheus%2fclient_golang/v1.20.5/v1.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>prometheus/client_golang
(github.com/prometheus/client_golang)</summary>

###
[`v1.21.1`](https://redirect.github.com/prometheus/client_golang/releases/tag/v1.21.1):
/ 2025-03-04

[Compare
Source](https://redirect.github.com/prometheus/client_golang/compare/v1.21.0...v1.21.1)

This release addresses a performance regression introduced in
[#&#8203;1661](https://redirect.github.com/prometheus/client_golang/issues/1661)
-- thanks to all who [reported this
quickly](https://redirect.github.com/prometheus/client_golang/issues/1748):
[@&#8203;chlunde](https://redirect.github.com/chlunde),
[@&#8203;dethi](https://redirect.github.com/dethi),
[@&#8203;aaronbee](https://redirect.github.com/aaronbee)
[@&#8203;tsuna](https://redirect.github.com/tsuna)
[@&#8203;kakkoyun](https://redirect.github.com/kakkoyun) 💪🏽. This patch
release also fixes the iOS build.

We will be hardening the release process even further
([#&#8203;1759](https://redirect.github.com/prometheus/client_golang/issues/1759),
[#&#8203;1761](https://redirect.github.com/prometheus/client_golang/issues/1761))
to prevent this in future, sorry for the inconvenience!

The high concurrency optimization is planned to be eventually
reintroduced, however in a much safer manner, potentially in a separate
API.

- \[BUGFIX] prometheus: Revert of `Inc`, `Add` and `Observe` cumulative
metric CAS optimizations
([#&#8203;1661](https://redirect.github.com/prometheus/client_golang/issues/1661)),
causing regressions on low concurrency cases
[#&#8203;1757](https://redirect.github.com/prometheus/client_golang/issues/1757)
- \[BUGFIX] prometheus: Fix GOOS=ios build, broken due to
process_collector_\* wrong build tags.
[#&#8203;1758](https://redirect.github.com/prometheus/client_golang/issues/1758)

<details>
<summary>All commits</summary>

- Revert "exponential backoff for CAS operations on floats" and cut
1.21.1 by [@&#8203;bwplotka](https://redirect.github.com/bwplotka) in
[https://github.com/prometheus/client_golang/pull/1757](https://redirect.github.com/prometheus/client_golang/pull/1757)
- Fix ios build for 1.21.1 by
[@&#8203;bwplotka](https://redirect.github.com/bwplotka) in
[https://github.com/prometheus/client_golang/pull/1758](https://redirect.github.com/prometheus/client_golang/pull/1758)

</details>

**Full Changelog**:
prometheus/client_golang@v1.21.0...v1.21.1

###
[`v1.21.0`](https://redirect.github.com/prometheus/client_golang/releases/tag/v1.21.0):
/ 2025-02-19

[Compare
Source](https://redirect.github.com/prometheus/client_golang/compare/v1.20.5...v1.21.0)

:warning: This release contains potential breaking change if you upgrade
`github.com/prometheus/common` to 0.62+ together with client_golang (and
depend on the strict, legacy validation for the label names). New common
version [changes `model.NameValidationScheme` global
variable](https://redirect.github.com/prometheus/common/pull/724), which
relaxes the validation of label names and metric name, allowing all
UTF-8 characters. Typically, this should not break any user, unless your
test or usage expects strict certain names to panic/fail on
client_golang metric registration, gathering or scrape. In case of
problems change `model.NameValidationScheme` to old
`model.LegacyValidation` value in your project `init` function.
:warning:

- \[BUGFIX] gocollector: Fix help message for runtime/metric metrics.
[#&#8203;1583](https://redirect.github.com/prometheus/client_golang/issues/1583)
- \[BUGFIX] prometheus: Fix `Desc.String()` method for no labels case.
[#&#8203;1687](https://redirect.github.com/prometheus/client_golang/issues/1687)
- \[PERF] prometheus: Optimize popular `prometheus.BuildFQName`
function; now up to 30% faster.
[#&#8203;1665](https://redirect.github.com/prometheus/client_golang/issues/1665)
- \[PERF] prometheus: Optimize `Inc`, `Add` and `Observe` cumulative
metrics; now up to 50% faster under high concurrent contention.
[#&#8203;1661](https://redirect.github.com/prometheus/client_golang/issues/1661)
- \[CHANGE] Upgrade prometheus/common to 0.62.0 which changes
`model.NameValidationScheme` global variable.
[#&#8203;1712](https://redirect.github.com/prometheus/client_golang/issues/1712)
- \[CHANGE] Add support for Go 1.23.
[#&#8203;1602](https://redirect.github.com/prometheus/client_golang/issues/1602)
- \[FEATURE] process_collector: Add support for Darwin systems.
[#&#8203;1600](https://redirect.github.com/prometheus/client_golang/issues/1600)
[#&#8203;1616](https://redirect.github.com/prometheus/client_golang/issues/1616)
[#&#8203;1625](https://redirect.github.com/prometheus/client_golang/issues/1625)
[#&#8203;1675](https://redirect.github.com/prometheus/client_golang/issues/1675)
[#&#8203;1715](https://redirect.github.com/prometheus/client_golang/issues/1715)
- \[FEATURE] api: Add ability to invoke `CloseIdleConnections` on
api.Client using `api.Client.(CloseIdler).CloseIdleConnections()`
casting.
[#&#8203;1513](https://redirect.github.com/prometheus/client_golang/issues/1513)
- \[FEATURE] promhttp: Add
`promhttp.HandlerOpts.EnableOpenMetricsTextCreatedSamples` option to
create OpenMetrics \_created lines. Not recommended unless you want to
use opt-in Created Timestamp feature. Community works on OpenMetrics 2.0
format that should make those lines obsolete (they increase cardinality
significantly).
[#&#8203;1408](https://redirect.github.com/prometheus/client_golang/issues/1408)
- \[FEATURE] prometheus: Add `NewConstNativeHistogram` function.
[#&#8203;1654](https://redirect.github.com/prometheus/client_golang/issues/1654)

<details>
<summary> All commits </summary>
* Merge release-1.20 to main by @&#8203;bwplotka in
prometheus/client_golang#1582
* gocollector: Tiny fix for help message with runtime/metrics source. by
@&#8203;bwplotka in
prometheus/client_golang#1583
* ci: bump dagger to the latest version by @&#8203;marcosnils in
prometheus/client_golang#1588
* Merge release-1.20 back to main by @&#8203;ArthurSens in
prometheus/client_golang#1593
* Update linting by @&#8203;SuperQ in
prometheus/client_golang#1603
* Update supported Go versions by @&#8203;SuperQ in
prometheus/client_golang#1602
* build(deps): bump golang.org/x/sys from 0.22.0 to 0.24.0 by
@&#8203;dependabot in
prometheus/client_golang#1611
* build(deps): bump github.com/prometheus/common from 0.55.0 to 0.57.0
by @&#8203;dependabot in
prometheus/client_golang#1612
* changed the name of all variables with min/max name by
@&#8203;parthlaw in
prometheus/client_golang#1606
* Update Dagger and build. by @&#8203;SuperQ in
prometheus/client_golang#1610
* build(deps): bump github/codeql-action from 3.25.15 to 3.26.6 in the
github-actions group across 1 directory by @&#8203;dependabot in
prometheus/client_golang#1614
* examples: Improved GoCollector example. by @&#8203;bwplotka in
prometheus/client_golang#1589
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1615
* process_collector: fill in most statistics on macOS by
@&#8203;mharbison72 in
prometheus/client_golang#1600
* ⚡ http client defer CloseIdleConnections by @&#8203;cuisongliu in
prometheus/client_golang#1513
* Set allow-utf-8 in Format during tests to avoid escaping. by
@&#8203;ywwg in prometheus/client_golang#1618
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1622
* Merge Release 1.20 back to main by @&#8203;ArthurSens in
prometheus/client_golang#1627
* examples: Add custom labels example by @&#8203;ying-jeanne in
prometheus/client_golang#1626
* Refactor default runtime metrics tests for Go collector so that
default runtime metric set autogenerates by @&#8203;vesari in
prometheus/client_golang#1631
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1628
* process_xxx_memory statistics for macOS (cgo) by @&#8203;mharbison72
in prometheus/client_golang#1616
* build(deps): bump github.com/klauspost/compress from 1.17.9 to 1.17.10
by @&#8203;dependabot in
prometheus/client_golang#1633
* build(deps): bump golang.org/x/sys from 0.24.0 to 0.25.0 by
@&#8203;dependabot in
prometheus/client_golang#1632
* process_collector: Add Platform-Specific Describe for processCollector
by @&#8203;ying-jeanne in
prometheus/client_golang#1625
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1635
* build(deps): bump the github-actions group with 4 updates by
@&#8203;dependabot in
prometheus/client_golang#1634
* Optionally print OM created lines by @&#8203;ArthurSens in
prometheus/client_golang#1408
* process_collector: merge wasip1 and js into a single implementation by
@&#8203;ying-jeanne in
prometheus/client_golang#1644
* Merge release 1.20 to main by @&#8203;bwplotka in
prometheus/client_golang#1647
* Add Arianna as maintainer 💪 by @&#8203;ArthurSens in
prometheus/client_golang#1651
* test add headers round tripper by @&#8203;Manask322 in
prometheus/client_golang#1657
* build(deps): bump github.com/klauspost/compress from 1.17.10 to
1.17.11 by @&#8203;dependabot in
prometheus/client_golang#1668
* build(deps): bump golang.org/x/sys from 0.25.0 to 0.26.0 by
@&#8203;dependabot in
prometheus/client_golang#1669
* build(deps): bump github.com/prometheus/common from 0.59.1 to 0.60.1
by @&#8203;dependabot in
prometheus/client_golang#1667
* build(deps): bump google.golang.org/protobuf from 1.34.2 to 1.35.1 by
@&#8203;dependabot in
prometheus/client_golang#1670
* Optimize BuildFQName function by @&#8203;jkroepke in
prometheus/client_golang#1665
* fix: use injected now() instead of time.Now() in summary methods by
@&#8203;imorph in prometheus/client_golang#1672
* process_collector: avoid a compiler warning on macOS (fixes
#&#8203;1660) by @&#8203;mharbison72 in
prometheus/client_golang#1675
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1674
* build(deps): bump the github-actions group across 1 directory with 3
updates by @&#8203;dependabot in
prometheus/client_golang#1678
* [chore]: enable perfsprint linter by @&#8203;mmorel-35 in
prometheus/client_golang#1676
* Duplicate of #&#8203;1662 by @&#8203;imorph in
prometheus/client_golang#1673
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1679
* chore: enable usestdlibvars linter by @&#8203;mmorel-35 in
prometheus/client_golang#1680
* Add: exponential backoff for CAS operations on floats by
@&#8203;imorph in prometheus/client_golang#1661
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1683
* [1617] Add ConstnativeHistogram by @&#8203;shivanthzen in
prometheus/client_golang#1654
* fix: replace fmt.Errorf with errors.New by @&#8203;kakkoyun in
prometheus/client_golang#1689
* Add codeowners by @&#8203;kakkoyun in
prometheus/client_golang#1688
* fix: add very small delay between observations in
`TestHistogramAtomicObserve` by @&#8203;imorph in
prometheus/client_golang#1691
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1692
* Fix: handle nil variableLabels in Desc.String() method and add tests
for nil label values by @&#8203;kakkoyun in
prometheus/client_golang#1687
* examples: Follow best practices and established naming conventions by
@&#8203;lilic in prometheus/client_golang#1650
* setup OSSF Scorecard workflow by @&#8203;mmorel-35 in
prometheus/client_golang#1432
* build(deps): bump google.golang.org/protobuf from 1.35.1 to 1.35.2 by
@&#8203;dependabot in
prometheus/client_golang#1697
* build(deps): bump golang.org/x/sys from 0.26.0 to 0.27.0 by
@&#8203;dependabot in
prometheus/client_golang#1696
* build(deps): bump the github-actions group with 5 updates by
@&#8203;dependabot in
prometheus/client_golang#1695
* update links to openmetrics to reference the v1.0.0 release by
@&#8203;dashpole in
prometheus/client_golang#1699
* build(deps): bump google.golang.org/protobuf from 1.35.2 to 1.36.1 by
@&#8203;dependabot in
prometheus/client_golang#1706
* build(deps): bump golang.org/x/sys from 0.27.0 to 0.28.0 by
@&#8203;dependabot in
prometheus/client_golang#1705
* build(deps): bump the github-actions group with 5 updates by
@&#8203;dependabot in
prometheus/client_golang#1707
* build(deps): bump github.com/prometheus/common from 0.60.1 to 0.61.0
by @&#8203;dependabot in
prometheus/client_golang#1704
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1703
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1708
* Upgrade to prometheus/common 0.62.0 with breaking change by
@&#8203;bwplotka in
prometheus/client_golang#1712
* build(deps): bump golang.org/x/net from 0.26.0 to 0.33.0 in
/tutorials/whatsup by @&#8203;dependabot in
prometheus/client_golang#1713
* docs: Add RELEASE.md for the release process by @&#8203;kakkoyun in
prometheus/client_golang#1690
* tutorials/whatsup: Updated deps by @&#8203;bwplotka in
prometheus/client_golang#1716
* process collector: Fixed pedantic registry failures on darwin with
cgo. by @&#8203;bwplotka in
prometheus/client_golang#1715
* Revert "ci: daggerize test and lint pipelines (#&#8203;1534)" by
@&#8203;bwplotka in
prometheus/client_golang#1717
* Cut 1.21.0-rc.0 by @&#8203;bwplotka in
prometheus/client_golang#1718
* Cut 1.21 by @&#8203;bwplotka in
prometheus/client_golang#1737
</details>

#### New Contributors
* @&#8203;parthlaw made their first
contributi[https://github.com/prometheus/client_golang/pull/1606](https://redirect.github.com/prometheus/client_golang/pull/1606)l/1606
* @&#8203;mharbison72 made their first
contributi[https://github.com/prometheus/client_golang/pull/1600](https://redirect.github.com/prometheus/client_golang/pull/1600)l/1600
* @&#8203;cuisongliu made their first
contributi[https://github.com/prometheus/client_golang/pull/1513](https://redirect.github.com/prometheus/client_golang/pull/1513)l/1513
* @&#8203;ying-jeanne made their first
contributi[https://github.com/prometheus/client_golang/pull/1626](https://redirect.github.com/prometheus/client_golang/pull/1626)l/1626
* @&#8203;Manask322 made their first
contributi[https://github.com/prometheus/client_golang/pull/1657](https://redirect.github.com/prometheus/client_golang/pull/1657)l/1657
* @&#8203;jkroepke made their first
contributi[https://github.com/prometheus/client_golang/pull/1665](https://redirect.github.com/prometheus/client_golang/pull/1665)l/1665
* @&#8203;imorph made their first
contributi[https://github.com/prometheus/client_golang/pull/1672](https://redirect.github.com/prometheus/client_golang/pull/1672)l/1672
* @&#8203;mmorel-35 made their first
contributi[https://github.com/prometheus/client_golang/pull/1676](https://redirect.github.com/prometheus/client_golang/pull/1676)l/1676
* @&#8203;shivanthzen made their first
contributi[https://github.com/prometheus/client_golang/pull/1654](https://redirect.github.com/prometheus/client_golang/pull/1654)l/1654
* @&#8203;dashpole made their first
contributi[https://github.com/prometheus/client_golang/pull/1699](https://redirect.github.com/prometheus/client_golang/pull/1699)l/1699

**Full Changelog**:
prometheus/client_golang@v1.20.5...v1.21.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/open-telemetry/opentelemetry-go).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJTa2lwIENoYW5nZWxvZyIsImRlcGVuZGVuY2llcyJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: dmathieu <42@dmathieu.com>
cedi pushed a commit to SpechtLabs/rpi_exporter that referenced this pull request Mar 20, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[github.com/prometheus/client_golang](https://redirect.github.com/prometheus/client_golang)
| `v1.20.5` -> `v1.21.1` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fprometheus%2fclient_golang/v1.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fprometheus%2fclient_golang/v1.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fprometheus%2fclient_golang/v1.20.5/v1.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fprometheus%2fclient_golang/v1.20.5/v1.21.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>prometheus/client_golang
(github.com/prometheus/client_golang)</summary>

###
[`v1.21.1`](https://redirect.github.com/prometheus/client_golang/releases/tag/v1.21.1):
/ 2025-03-04

[Compare
Source](https://redirect.github.com/prometheus/client_golang/compare/v1.21.0...v1.21.1)

This release addresses a major performance regression introduced in
[#&#8203;1661](https://redirect.github.com/prometheus/client_golang/issues/1661)
-- thanks to all who [reported this
quickly](https://redirect.github.com/prometheus/client_golang/issues/1748):
[@&#8203;chlunde](https://redirect.github.com/chlunde),
[@&#8203;dethi](https://redirect.github.com/dethi),
[@&#8203;aaronbee](https://redirect.github.com/aaronbee)
[@&#8203;tsuna](https://redirect.github.com/tsuna) 💪🏽. This patch
release also fixes the iOS build.

We will be hardening the release process even further
([#&#8203;1759](https://redirect.github.com/prometheus/client_golang/issues/1759),
[#&#8203;1761](https://redirect.github.com/prometheus/client_golang/issues/1761))
to prevent this in future, sorry for the inconvenience!

The high concurrency optimization is planned to be eventually
reintroduced, however in a much safer manner, potentially in a separate
API.

- \[BUGFIX] prometheus: Revert of `Inc`, `Add` and `Observe` cumulative
metric CAS optimizations
([#&#8203;1661](https://redirect.github.com/prometheus/client_golang/issues/1661)),
causing regressions on low concurrency cases
[#&#8203;1757](https://redirect.github.com/prometheus/client_golang/issues/1757)
- \[BUGFIX] prometheus: Fix GOOS=ios build, broken due to
process_collector_\* wrong build tags.
[#&#8203;1758](https://redirect.github.com/prometheus/client_golang/issues/1758)

<details>
<summary>All commits</summary>

- Revert "exponential backoff for CAS operations on floats" and cut
1.21.1 by [@&#8203;bwplotka](https://redirect.github.com/bwplotka) in
[https://github.com/prometheus/client_golang/pull/1757](https://redirect.github.com/prometheus/client_golang/pull/1757)
- Fix ios build for 1.21.1 by
[@&#8203;bwplotka](https://redirect.github.com/bwplotka) in
[https://github.com/prometheus/client_golang/pull/1758](https://redirect.github.com/prometheus/client_golang/pull/1758)

</details>

**Full Changelog**:
prometheus/client_golang@v1.21.0...v1.21.1

###
[`v1.21.0`](https://redirect.github.com/prometheus/client_golang/releases/tag/v1.21.0):
/ 2025-02-19

[Compare
Source](https://redirect.github.com/prometheus/client_golang/compare/v1.20.5...v1.21.0)

:warning: This release contains potential breaking change if you upgrade
`github.com/prometheus/common` to 0.62+ together with client_golang (and
depend on the strict, legacy validation for the label names). New common
version [changes `model.NameValidationScheme` global
variable](https://redirect.github.com/prometheus/common/pull/724), which
relaxes the validation of label names and metric name, allowing all
UTF-8 characters. Typically, this should not break any user, unless your
test or usage expects strict certain names to panic/fail on
client_golang metric registration, gathering or scrape. In case of
problems change `model.NameValidationScheme` to old
`model.LegacyValidation` value in your project `init` function.
:warning:

- \[BUGFIX] gocollector: Fix help message for runtime/metric metrics.
[#&#8203;1583](https://redirect.github.com/prometheus/client_golang/issues/1583)
- \[BUGFIX] prometheus: Fix `Desc.String()` method for no labels case.
[#&#8203;1687](https://redirect.github.com/prometheus/client_golang/issues/1687)
- \[PERF] prometheus: Optimize popular `prometheus.BuildFQName`
function; now up to 30% faster.
[#&#8203;1665](https://redirect.github.com/prometheus/client_golang/issues/1665)
- \[PERF] prometheus: Optimize `Inc`, `Add` and `Observe` cumulative
metrics; now up to 50% faster under high concurrent contention.
[#&#8203;1661](https://redirect.github.com/prometheus/client_golang/issues/1661)
- \[CHANGE] Upgrade prometheus/common to 0.62.0 which changes
`model.NameValidationScheme` global variable.
[#&#8203;1712](https://redirect.github.com/prometheus/client_golang/issues/1712)
- \[CHANGE] Add support for Go 1.23.
[#&#8203;1602](https://redirect.github.com/prometheus/client_golang/issues/1602)
- \[FEATURE] process_collector: Add support for Darwin systems.
[#&#8203;1600](https://redirect.github.com/prometheus/client_golang/issues/1600)
[#&#8203;1616](https://redirect.github.com/prometheus/client_golang/issues/1616)
[#&#8203;1625](https://redirect.github.com/prometheus/client_golang/issues/1625)
[#&#8203;1675](https://redirect.github.com/prometheus/client_golang/issues/1675)
[#&#8203;1715](https://redirect.github.com/prometheus/client_golang/issues/1715)
- \[FEATURE] api: Add ability to invoke `CloseIdleConnections` on
api.Client using `api.Client.(CloseIdler).CloseIdleConnections()`
casting.
[#&#8203;1513](https://redirect.github.com/prometheus/client_golang/issues/1513)
- \[FEATURE] promhttp: Add
`promhttp.HandlerOpts.EnableOpenMetricsTextCreatedSamples` option to
create OpenMetrics \_created lines. Not recommended unless you want to
use opt-in Created Timestamp feature. Community works on OpenMetrics 2.0
format that should make those lines obsolete (they increase cardinality
significantly).
[#&#8203;1408](https://redirect.github.com/prometheus/client_golang/issues/1408)
- \[FEATURE] prometheus: Add `NewConstNativeHistogram` function.
[#&#8203;1654](https://redirect.github.com/prometheus/client_golang/issues/1654)

<details>
<summary> All commits </summary>
* Merge release-1.20 to main by @&#8203;bwplotka in
prometheus/client_golang#1582
* gocollector: Tiny fix for help message with runtime/metrics source. by
@&#8203;bwplotka in
prometheus/client_golang#1583
* ci: bump dagger to the latest version by @&#8203;marcosnils in
prometheus/client_golang#1588
* Merge release-1.20 back to main by @&#8203;ArthurSens in
prometheus/client_golang#1593
* Update linting by @&#8203;SuperQ in
prometheus/client_golang#1603
* Update supported Go versions by @&#8203;SuperQ in
prometheus/client_golang#1602
* build(deps): bump golang.org/x/sys from 0.22.0 to 0.24.0 by
@&#8203;dependabot in
prometheus/client_golang#1611
* build(deps): bump github.com/prometheus/common from 0.55.0 to 0.57.0
by @&#8203;dependabot in
prometheus/client_golang#1612
* changed the name of all variables with min/max name by
@&#8203;parthlaw in
prometheus/client_golang#1606
* Update Dagger and build. by @&#8203;SuperQ in
prometheus/client_golang#1610
* build(deps): bump github/codeql-action from 3.25.15 to 3.26.6 in the
github-actions group across 1 directory by @&#8203;dependabot in
prometheus/client_golang#1614
* examples: Improved GoCollector example. by @&#8203;bwplotka in
prometheus/client_golang#1589
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1615
* process_collector: fill in most statistics on macOS by
@&#8203;mharbison72 in
prometheus/client_golang#1600
* ⚡ http client defer CloseIdleConnections by @&#8203;cuisongliu in
prometheus/client_golang#1513
* Set allow-utf-8 in Format during tests to avoid escaping. by
@&#8203;ywwg in prometheus/client_golang#1618
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1622
* Merge Release 1.20 back to main by @&#8203;ArthurSens in
prometheus/client_golang#1627
* examples: Add custom labels example by @&#8203;ying-jeanne in
prometheus/client_golang#1626
* Refactor default runtime metrics tests for Go collector so that
default runtime metric set autogenerates by @&#8203;vesari in
prometheus/client_golang#1631
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1628
* process_xxx_memory statistics for macOS (cgo) by @&#8203;mharbison72
in prometheus/client_golang#1616
* build(deps): bump github.com/klauspost/compress from 1.17.9 to 1.17.10
by @&#8203;dependabot in
prometheus/client_golang#1633
* build(deps): bump golang.org/x/sys from 0.24.0 to 0.25.0 by
@&#8203;dependabot in
prometheus/client_golang#1632
* process_collector: Add Platform-Specific Describe for processCollector
by @&#8203;ying-jeanne in
prometheus/client_golang#1625
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1635
* build(deps): bump the github-actions group with 4 updates by
@&#8203;dependabot in
prometheus/client_golang#1634
* Optionally print OM created lines by @&#8203;ArthurSens in
prometheus/client_golang#1408
* process_collector: merge wasip1 and js into a single implementation by
@&#8203;ying-jeanne in
prometheus/client_golang#1644
* Merge release 1.20 to main by @&#8203;bwplotka in
prometheus/client_golang#1647
* Add Arianna as maintainer 💪 by @&#8203;ArthurSens in
prometheus/client_golang#1651
* test add headers round tripper by @&#8203;Manask322 in
prometheus/client_golang#1657
* build(deps): bump github.com/klauspost/compress from 1.17.10 to
1.17.11 by @&#8203;dependabot in
prometheus/client_golang#1668
* build(deps): bump golang.org/x/sys from 0.25.0 to 0.26.0 by
@&#8203;dependabot in
prometheus/client_golang#1669
* build(deps): bump github.com/prometheus/common from 0.59.1 to 0.60.1
by @&#8203;dependabot in
prometheus/client_golang#1667
* build(deps): bump google.golang.org/protobuf from 1.34.2 to 1.35.1 by
@&#8203;dependabot in
prometheus/client_golang#1670
* Optimize BuildFQName function by @&#8203;jkroepke in
prometheus/client_golang#1665
* fix: use injected now() instead of time.Now() in summary methods by
@&#8203;imorph in prometheus/client_golang#1672
* process_collector: avoid a compiler warning on macOS (fixes
#&#8203;1660) by @&#8203;mharbison72 in
prometheus/client_golang#1675
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1674
* build(deps): bump the github-actions group across 1 directory with 3
updates by @&#8203;dependabot in
prometheus/client_golang#1678
* [chore]: enable perfsprint linter by @&#8203;mmorel-35 in
prometheus/client_golang#1676
* Duplicate of #&#8203;1662 by @&#8203;imorph in
prometheus/client_golang#1673
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1679
* chore: enable usestdlibvars linter by @&#8203;mmorel-35 in
prometheus/client_golang#1680
* Add: exponential backoff for CAS operations on floats by
@&#8203;imorph in prometheus/client_golang#1661
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1683
* [1617] Add ConstnativeHistogram by @&#8203;shivanthzen in
prometheus/client_golang#1654
* fix: replace fmt.Errorf with errors.New by @&#8203;kakkoyun in
prometheus/client_golang#1689
* Add codeowners by @&#8203;kakkoyun in
prometheus/client_golang#1688
* fix: add very small delay between observations in
`TestHistogramAtomicObserve` by @&#8203;imorph in
prometheus/client_golang#1691
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1692
* Fix: handle nil variableLabels in Desc.String() method and add tests
for nil label values by @&#8203;kakkoyun in
prometheus/client_golang#1687
* examples: Follow best practices and established naming conventions by
@&#8203;lilic in prometheus/client_golang#1650
* setup OSSF Scorecard workflow by @&#8203;mmorel-35 in
prometheus/client_golang#1432
* build(deps): bump google.golang.org/protobuf from 1.35.1 to 1.35.2 by
@&#8203;dependabot in
prometheus/client_golang#1697
* build(deps): bump golang.org/x/sys from 0.26.0 to 0.27.0 by
@&#8203;dependabot in
prometheus/client_golang#1696
* build(deps): bump the github-actions group with 5 updates by
@&#8203;dependabot in
prometheus/client_golang#1695
* update links to openmetrics to reference the v1.0.0 release by
@&#8203;dashpole in
prometheus/client_golang#1699
* build(deps): bump google.golang.org/protobuf from 1.35.2 to 1.36.1 by
@&#8203;dependabot in
prometheus/client_golang#1706
* build(deps): bump golang.org/x/sys from 0.27.0 to 0.28.0 by
@&#8203;dependabot in
prometheus/client_golang#1705
* build(deps): bump the github-actions group with 5 updates by
@&#8203;dependabot in
prometheus/client_golang#1707
* build(deps): bump github.com/prometheus/common from 0.60.1 to 0.61.0
by @&#8203;dependabot in
prometheus/client_golang#1704
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1703
* Synchronize common files from prometheus/prometheus by @&#8203;prombot
in prometheus/client_golang#1708
* Upgrade to prometheus/common 0.62.0 with breaking change by
@&#8203;bwplotka in
prometheus/client_golang#1712
* build(deps): bump golang.org/x/net from 0.26.0 to 0.33.0 in
/tutorials/whatsup by @&#8203;dependabot in
prometheus/client_golang#1713
* docs: Add RELEASE.md for the release process by @&#8203;kakkoyun in
prometheus/client_golang#1690
* tutorials/whatsup: Updated deps by @&#8203;bwplotka in
prometheus/client_golang#1716
* process collector: Fixed pedantic registry failures on darwin with
cgo. by @&#8203;bwplotka in
prometheus/client_golang#1715
* Revert "ci: daggerize test and lint pipelines (#&#8203;1534)" by
@&#8203;bwplotka in
prometheus/client_golang#1717
* Cut 1.21.0-rc.0 by @&#8203;bwplotka in
prometheus/client_golang#1718
* Cut 1.21 by @&#8203;bwplotka in
prometheus/client_golang#1737
</details>

#### New Contributors
* @&#8203;parthlaw made their first
contributi[https://github.com/prometheus/client_golang/pull/1606](https://redirect.github.com/prometheus/client_golang/pull/1606)l/1606
* @&#8203;mharbison72 made their first
contributi[https://github.com/prometheus/client_golang/pull/1600](https://redirect.github.com/prometheus/client_golang/pull/1600)l/1600
* @&#8203;cuisongliu made their first
contributi[https://github.com/prometheus/client_golang/pull/1513](https://redirect.github.com/prometheus/client_golang/pull/1513)l/1513
* @&#8203;ying-jeanne made their first
contributi[https://github.com/prometheus/client_golang/pull/1626](https://redirect.github.com/prometheus/client_golang/pull/1626)l/1626
* @&#8203;Manask322 made their first
contributi[https://github.com/prometheus/client_golang/pull/1657](https://redirect.github.com/prometheus/client_golang/pull/1657)l/1657
* @&#8203;jkroepke made their first
contributi[https://github.com/prometheus/client_golang/pull/1665](https://redirect.github.com/prometheus/client_golang/pull/1665)l/1665
* @&#8203;imorph made their first
contributi[https://github.com/prometheus/client_golang/pull/1672](https://redirect.github.com/prometheus/client_golang/pull/1672)l/1672
* @&#8203;mmorel-35 made their first
contributi[https://github.com/prometheus/client_golang/pull/1676](https://redirect.github.com/prometheus/client_golang/pull/1676)l/1676
* @&#8203;shivanthzen made their first
contributi[https://github.com/prometheus/client_golang/pull/1654](https://redirect.github.com/prometheus/client_golang/pull/1654)l/1654
* @&#8203;dashpole made their first
contributi[https://github.com/prometheus/client_golang/pull/1699](https://redirect.github.com/prometheus/client_golang/pull/1699)l/1699

**Full Changelog**:
prometheus/client_golang@v1.20.5...v1.21.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cedi/rpi_exporter).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE4NS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Consider supporting constant native histograms
5 participants